使用PackageManager,您可以查询所有已安装软件包(APK)上的系统上的活动/ etc。 Android SDK中的ApiDemos示例代码在类com.example.android.apis.ApiDemos
中使用此代码。
代码示例:
void findAddOnActivities() {
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory("myPackage.intent.category.ADDON");
PackageManager pm = getPackageManager();
List<ResolveInfo> list = pm.queryIntentActivities(mainIntent, 0);
// list contains all activities that match your filters in mainIntent
}
清单片段:
<activity
android:label="My external Add-on"
android:name=".addons.TestAddon" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="myPackage.intent.category.ADDON" />
</intent-filter>
</activity>
数据库访问和管理访问/修改安全: 声明在您的清单您自己的权限:
<permission android:name="com.mycompany.myapp.database.permission.READ"
android:label="@string/read_permission" android:protectionLevel="signatureOrSystem"></permission>
<permission android:name="com.mycompany.myapp.database.permission.WRITE"
android:label="@string/write_permission" android:protectionLevel="signatureOrSystem"></permission>
protectionLevel标签将确保只有pa的APK图像的rt或使用与主应用程序相同的密钥签名可以被授予该权限。
有许多方法可以让插件访问您的数据库。远程服务或提供接口将工作。在应用程序中,我有这样做,我的主应用程序有一个名为DBManager的类,它已经对数据库做了一堆读/写操作。所以我只是在我的外部应用程序中使用该类,并且它可以执行所有读/写操作,因为软件包使用相同的密钥进行签名。
如果您不想使用相同的密钥对软件包进行签名,请考虑使用示例代码RemoteService.java中的远程服务。请查看android service dev guide了解更多详情。我不是Android服务的专家,所以任何来自其他人的反馈都可能会有所帮助。
Android是Java。据我所知,思考是在Java中引入的。你可以使用相同的技术,不是吗? – 2012-02-11 00:56:44