多个应用程序之间的Android签名级别权限
我有一个主应用程序A,它使用其他应用程序作为插件,比如B、C和D。我无法控制将首先安装哪个应用程序 如何定义签名级别权限,以便只有主应用程序A可以启动插件应用程序B、C和D 插件没有UI,所以用户无法手动启动它们,但我需要确保只有我的主应用程序才能启动它们。我尝试在插件中定义权限,如下所示:多个应用程序之间的Android签名级别权限,android,security,permissions,Android,Security,Permissions,我有一个主应用程序A,它使用其他应用程序作为插件,比如B、C和D。我无法控制将首先安装哪个应用程序 如何定义签名级别权限,以便只有主应用程序A可以启动插件应用程序B、C和D 插件没有UI,所以用户无法手动启动它们,但我需要确保只有我的主应用程序才能启动它们。我尝试在插件中定义权限,如下所示: <permission android:name="my.custom.permission.START_PLUGIN" android:protectionLevel="signat
<permission
android:name="my.custom.permission.START_PLUGIN"
android:protectionLevel="signature"/>
然后在我的主应用程序中:
<uses-permission android:name="my.custom.permission.START_PLUGIN" />
这似乎不是正确的方法。有人能告诉我实现上述目标的正确方法吗?谢谢
编辑:我的插件是通过AIDL接口作为绑定服务实现的。要回答我的原始问题,要使我的示例发挥作用,您所要做的就是向您想要保护的应用程序组件添加权限属性。这是在Manifest.xml文件中完成的 假设您有一个名为MyActivity的活动,您只希望您具有START_插件权限的应用程序能够启动。因此,在您的插件中,您可以:
<permission
android:name="my.custom.permission.START_PLUGIN"
android:protectionLevel="signature"/>
以及:
您的插件是如何实现的?作为绑定服务、内容提供商,还有其他吗?绑定服务。更新question.so在自定义的Binder\onTransact
方法或存根方法实现中使用Binder\getCallingUid()
。我想使用权限解决此问题。我会检查你的建议,但我会先用签名级别的权限解决它。好吧,Android系统应该自己处理这个问题。。。然而,我似乎找不到正确的方法。
<activity
android:name=".MyActivity"
android:permission="my.custom.permission.START_PLUGIN"/>
<uses-permission android:name="my.custom.permission.START_PLUGIN" />