我想使用 sendBroadcast 来广播只能由发起它的应用程序接收的 Intent 。
用例是我计划在我构建的几个项目之间使用的身份验证模块。目前,当收到 401(授权失败)响应代码时,它会广播一个 Intent ,然后可以将该 Intent 连接到 list 中以将用户带回登录页面。
所以要明确一点,我想知道我是否可以这样做:
Intent i = new Intent("my.custom.logout.broadcast.path.that.will.be.the.same.in.multiple.apps");
sendBroadcast(i);
不知何故, Intent 不会被使用完全相同的未修改代码库的其他应用程序接收。
最佳答案
不是问题的一部分,但您应该使用 permissions用于限制谁可以发送/接收广播,特别是因为您正在处理身份验证。事实上,我强烈建议查看 AccountManager (在 API demos 中)
继续.. 一种解决方案是在 Intent extra 中传递原始应用程序的包名称或特定权限字符串,当您响应时,以相同的方式在响应中使用该包名称或权限。遗憾的是,您无法在广播 Intent 中定位特定包。
另一种解决方案是使用 PendingIntent.getActivity()
从原始应用程序中,将 PendingIntent
作为额外的 (Intent#putExtra()
) 填充到新的广播 Intent
中,并使用上面的权限模型(因此发送方和接收方可以正确处理权限)。当广播接收器完成它的工作时,它可以使用 PendingIntent
启动目标 Activity (包括附加附加功能的能力)
关于android - 是否可以将广播范围限定为应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6475495/