我有一个在多个应用中使用的SDK /库。我希望能够从SDK发送安全广播到实现它的应用程序,所以我要经许可保护我的广播。我的SDK定义了权限:
<permission android:name="my.sdk.permission.BROADCAST"
android:label="my_sdk_permission"
android:protectionLevel="signature"/>
<uses-permission android:name="my.sdk.permission.BROADCAST"/>
应用清单有:
<receiver android:name="my.receiver.MyReceiver"
android:permission="my.sdk.permission.BROADCAST"
android:protectionLevel="signature"
android:exported="false">
<intent-filter>
<action android:name="my.receiver.ACTION" />
</intent-filter>
</receiver>
但是,通过此设置,我有时会在使用sdk安装多个应用时遇到错误:
INSTALL_FAILED_DUPLICATE_PERMISSION perm = my.sdk.permission.BROADCAST PKG = my.otherapp
我认为我需要做的是在构建时确保权限设置为实现SDK的应用程序的包,但我不确定
答案 0 :(得分:1)
在Android 5.0及以上版本中,2个以上应用可以使用相同名称的<permission>
元素的唯一方法是使用相同的签名密钥对应用进行签名。
在您的情况下,只需删除所有权限。接收器不会导出,因此许可永远不会发挥作用。您可能还会考虑删除<intent-filter>
,因为非导出组件不需要这样做。只是我们一个明确的Intent
。