1

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

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

接收者毫无问题地得到它。但问题是:Receiver 应用程序是否能够知道是谁发送了广播?我的意思是,我可以检查我的发件人是否是发送邮件的人吗?当然,这一切都是出于安全原因。我不希望其他应用向我的 Receiver 发送内容。

谢谢

4

2 回答 2

3

如果这是要求安全性,您可以使用sendBroadcast(intent, receiverPermission)并且不要使用隐式 Intent

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

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"的信息。

所以你必须用相同的证书签署你的两个应用程序。因此,如果另一个具有相同权限的应用程序在您的证书签名之前无法收听您的广播。

现在您必须android:permission="com.testpackage.mypermission"在接收器应用程序的清单中添加接收器。而已。

于 2013-06-19T12:12:54.093 回答
0

您可以通过 Intent putExtra 传递发送方信息,接收方可以使用 getIntent 和 getExtra 接收此值。这样接收方就会知道您的应用已发送广播。

于 2013-06-19T12:06:54.473 回答