我想实现一个“安全”的广播接收机只从一个特定的应用程序接收广播。 这是因为我想要一个插件来我的应用程序触发通过广播动作。 作为这一行动(部分)明智的,如果发送者真的是我的应用这将是很好检查。 据我所看到的是不可能的检查发件人包? 难道是安全的定义应该是一个自定义的权限? 如果是的话,我该怎么办呢? 什么其他的可能性是存在实现这一目标?
提前致谢!
我想实现一个“安全”的广播接收机只从一个特定的应用程序接收广播。 这是因为我想要一个插件来我的应用程序触发通过广播动作。 作为这一行动(部分)明智的,如果发送者真的是我的应用这将是很好检查。 据我所看到的是不可能的检查发件人包? 难道是安全的定义应该是一个自定义的权限? 如果是的话,我该怎么办呢? 什么其他的可能性是存在实现这一目标?
提前致谢!
难道是安全的定义应该是一个自定义的权限?
如果这两个应用程序和插件是由你而写的,自定义权限与android:protectionLevel="signature"
,似乎是你的问题的理想解决方案。 任何应用程序将能够发送给广播接收机未持有该权限,只能由同一个签名密钥签名的应用程序举行。 作为奖励,用户不必同意在安装时的权限。
临提示:定义<permission>
在该应用和插件两个元件,所以这两个的安装顺序并不重要。
需要注意的是自定义权限有安全漏洞之前的Android 5.0,而且在Android 5.0以上版本,除非它们是由相同的签名密钥签署任何两个应用程序可以定义相同的权限 。
定义你的清单自定义权限:
<permission android:name="com.example.myapp.permission.NAME"
android:protectionLevel="normal" />
接收器上,添加许可属性:
<receiver android:name="MyReceiver"
android:permission="com.example.myapp.permission.NAME" />