我正在尝试实现一个“安全”广播接收器,它只接收来自特定应用的广播。这是因为我想为我的应用程序制作一个插件,通过广播触发操作。由于这个动作(部分)是合理的,因此检查发送者是否真的是我的应用程序会很好。据我所知,检查发件人包是不可能的? 为此定义自定义权限是否安全?如果是,我该怎么做?还有什么其他可能性来实现这个目标?
提前致谢!
答案 0 :(得分:14)
为此定义自定义权限是否安全?
如果应用和插件都是由您编写的,则android:protectionLevel="signature"
的自定义权限似乎是您问题的理想解决方案。没有应用程序将无法在未持有该权限的情况下向您的接收方发送广播,这只能由同一签名密钥签名的应用程序保留。作为奖励,用户无需在安装时同意该许可。
专业提示:在应用和插件中定义<permission>
元素,因此这两者的安装顺序无关紧要。
请注意Android 5.0之前的custom permissions have a security flaw以及on Android 5.0+ no two apps can define the same permission unless they are signed by the same signing key。
答案 1 :(得分:0)
在清单中定义自定义权限:
<permission android:name="com.example.myapp.permission.NAME"
android:protectionLevel="normal" />
在您的接收器上,添加权限属性:
<receiver android:name="MyReceiver"
android:permission="com.example.myapp.permission.NAME" />