我的主要应用 A 使用其他应用作为插件,假设 B , C 和 D 。我无法控制首先安装哪个应用。
如何定义签名级别权限,以便只有主应用 A 才能启动插件应用 B , C 和 D ?
插件没有UI,因此用户无法手动启动它们,但我需要确保只有我的主应用才能启动它们。我尝试在插件中定义权限,如下所示:
<permission
android:name="my.custom.permission.START_PLUGIN"
android:protectionLevel="signature"/>
然后在我的主应用程序中:
<uses-permission android:name="my.custom.permission.START_PLUGIN" />
这似乎不是正确的方法。谁能告诉我正确的方法来实现我上面描述的内容?感谢。
编辑:我的插件实现为带有AIDL接口的绑定服务。
答案 0 :(得分:1)
要回答我原来的问题,要使我的示例正常工作,您所要做的就是为您要保护的应用程序组件添加权限属性。这是在Manifest.xml文件中完成的。
假设您有一项名为MyActivity的活动,您希望只有具有START_PLUGIN权限的应用才能启动。所以在你的插件中,你可以:
<permission
android:name="my.custom.permission.START_PLUGIN"
android:protectionLevel="signature"/>
和
<activity
android:name=".MyActivity"
android:permission="my.custom.permission.START_PLUGIN"/>
最后一个将确保只有具有START_PLUGIN权限的应用才能访问该活动。所以你需要做的就是在app中应该启动这个插件使用这样的权限:
<uses-permission android:name="my.custom.permission.START_PLUGIN" />
要根据评论中@pskink的建议决定是否要使用具有签名级别保护的权限或sharedUserId,请考虑以下事项:
链接:
sharedUserId Android Reference