多个应用程序之间的Android签名级别权限

多个应用程序之间的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

我有一个主应用程序A,它使用其他应用程序作为插件,比如BCD。我无法控制将首先安装哪个应用程序

如何定义签名级别权限,以便只有主应用程序A可以启动插件应用程序BCD

插件没有UI,所以用户无法手动启动它们,但我需要确保只有我的主应用程序才能启动它们。我尝试在插件中定义权限,如下所示:

<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" />