是否可以将广播范围扩展到应用程序?

时间:2011-06-25 02:52:03

标签: android android-intent broadcast

我想使用sendBroadcast来广播只能由发起它的应用程序接收的意图。

用例是我计划在我构建的几个项目之间使用的身份验证模块。目前,当收到401(授权失败)响应代码时,它会广播一个意图,然后可以将其连接到清单中,以便将用户带回登录页面。

所以,为了清楚我想知道我是否可以这样做:

Intent i = new Intent("my.custom.logout.broadcast.path.that.will.be.the.same.in.multiple.apps");
sendBroadcast(i);

不知何故,使用完全相同的未经修改的代码库的其他应用程序无法获取意图。

2 个答案:

答案 0 :(得分:0)

不是问题的一部分,但您应该使用permissions限制谁可以发送/接收广播,特别是因为您正在处理身份验证。事实上,我强烈建议您查看AccountManagerAPI demos

继续......一个解决方案是将原始应用程序的包名称或特定权限字符串传递给Intent extra,当您响应时,以相同的方式在响应中使用该包名称或权限。遗憾的是,您无法定位广播意图中的特定包。

另一个解决方案是使用来自原始应用程序的PendingIntent.getActivity(),将PendingIntent作为额外的(Intent)添加到新的for-broadcast Intent#putExtra()中并广播它使用上面的权限模型(因此发件人和收件人可以正确处理权限)。当广播接收器完成其工作时,它可以使用PendingIntent启动目标活动(包括附加额外附加功能)

答案 1 :(得分:0)

为此,您可以使用LocalBroadcastManager,它专为应用内通信而设计。