是否可以将广播的范围限定在某个应用程序上?

问题描述

| 我想使用sendbroadcast广播一个意图,该意图只能由发起它的那个应用程序接收。 该用例用于我计划在已构建的多个项目之间使用的身份验证模块。当前,当收到401(授权失败)响应代码时,它会广播一个意图,然后可以将其连接到清单中以将用户带回登录页面。 因此,为了清楚起见,我想知道是否可以这样做:
Intent i = new Intent(\"my.custom.logout.broadcast.path.that.will.be.the.same.in.multiple.apps\");
sendbroadcast(i);
并且以某种方式,其他使用完全相同的未修改代码库的应用程序也不会理解这个意图。     

解决方法

        这不是问题的一部分,但是您应该使用权限来限制谁可以发送/接收广播,尤其是因为您要处理身份验证时。实际上,我强烈建议您研究AccountManager(在API演示中) 继续..一种解决方案是在Intent Extra中传递原始应用程序的程序包名称或特定的权限字符串,然后在您响应时,以相同的方式在响应中使用该程序包名称或权限。不幸的是,您无法在“广播意图”中定位特定的包。 另一种解决方案是使用原始应用程序中的
PendingIntent.getActivity()
,将
PendingIntent
作为额外的内容(
Intent#putExtra()
)放入新的广播
Intent
中,并使用上面的权限模型进行广播(以便发送方和接收方可以正确处理权限)。广播接收器完成其工作后,可以使用ѭ2来启动目标活动(包括附加其他功能的能力)     ,        为此,您可以使用LocalBroadcastManager,它是专门为应用程序内通信而设计的。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...