背景: 我注意到,对于其中的常规活动,任何应用程序都可以打开我的应用程序的活动。
问题: 是否可以只允许我自己的应用程序(或应用程序或包)在同一范围内发送和接收意图,以便其他应用程序无法接收它们或干扰应用程序的流程?
例如: 假设我有一个侦听某种意图的broadcastReceiver,但这个意图只是由我的应用程序内部或我创建的另一个应用程序内的其他服务/活动使用,但我不想要其他人可以使用这个意图。
请帮帮我。
答案 0 :(得分:6)
设置一个显式应用程序包名称,以限制此Intent将解析的组件。如果保留默认值null,则将考虑所有应用程序中的所有组件。如果为非null,则Intent只能匹配给定应用程序包中的组件。
或者您可以使用setSelector()
,但不能同时使用两者。
答案 1 :(得分:4)
假设我有一个侦听某种意图的broadcastReceiver,但这个意图仅供其他服务/活动使用,该服务/活动位于我的应用程序内部或我创建的另一个应用程序中,但我不知道不希望别人能够使用这个意图。
除了Reno的正确答案,根据您上面引用的具体要求,请使用LocalBroadcastManager
。您不仅可以获得所需的安全性,而且效率更高。 Android支持包中提供了LocalBroadcastManager
,AFAIK应该可以恢复到Android 1.6。 Here is a sample project使用LocalBroadcastManager
。