我自己的应用程序之间的安全通

时间:2013-06-19 12:03:46

标签: android security broadcastreceiver communication

我想与应用沟通。发件人和接收者。 发件人使用这个简单的代码:

Intent intent = new Intent();
intent.setAction("my.app.intent.MyMessageHere");
sendBroadcast(intent);

接收方没有任何问题。但问题是: Receiver应用程序是否能够知道谁发送了广播?我的意思是,我可以检查我的发件人是否是发送邮件的人? 当然,所有这些都是出于安全考虑。 我不希望其他应用程序将内容发送给我的Receiver。

由于

2 个答案:

答案 0 :(得分:3)

如果这要求安全性,您可以使用sendBroadcast(intent, receiverPermission) 不要使用隐式意图

使用显式意图,这样只有一个应用程序可以监听您的广播数据。喜欢

Intent intent = new Intent();
intent.setAction("my.app.intent.MyMessageHere");
intent.setComponent(new ComponentName("packagename of receiver app","receiverclassname.java"));

sendBroadcast(intent)发送。

如果您想要更高的安全性,可以引入自定义权限。然后,您需要获得这两个应用程序的权限,这将确保您的通信更安全。


如何添加自定义权限

<permission android:name="com.testpackage.mypermission" android:label="my_permission" android:protectionLevel="signature"/>
    <uses-permission android:name="com.testpackage.mypermission" />

将上述代码添加到两个应用清单中。详细了解android:protectionLevel="signature"

因此,您必须使用相同的证书对两个应用进行签名。因此,如果具有相同权限的其他应用程序在您的证书签名之前无法收听您的广播。

现在你必须在接收器app的清单中将android:permission="com.testpackage.mypermission"添加到接收器中。而已。

答案 1 :(得分:0)

您可以通过Intent putExtra传递发件人信息,Receiver可以使用getIntent和getExtra重新显示此值。这样接收器就会知道您的应用已发送广播。