android - 是否可以将广播范围限定为应用程序?

标签 android android-intent broadcast

我想使用 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/

相关文章:

android - 滚动基于 Cursor 的适配器的大列表比内存中适配器的小列表快得多

android - 检测您的 Material 是否存在于设备中

android - 当您有 Activity 名称 String 但没有 Activity.Class 时如何启动另一个 Activity?

javascript - Websockets-NodeJS。是否可以向所有连接的客户端(从服务器)广播消息,而无需先向客户端发送客户端消息

python - 向所有 worker 广播任务 : redis+celery

node.js - socket.io - 如何在命名空间上广播消息?

Android KitKat 4.4 Chromium WebView "v8_value_converter_impl.cc"错误

android - 在 Android 服务中上传文件

android - 是否可以从其他应用程序中卸载一个 Android 应用程序?

android - 导出字符串时出错