android - 是否可以使用私有意图而不是全局意图?

and*_*per 5 android global private public android-intent

背景:我注意到,对于常规活动,任何应用程序都可以打开我的应用程序的活动.

问题:是否可以仅允许我自己的应用程序(或应用程序或程序包)在同一范围内发送和接收意图,以便其他应用程序无法接收它们或干扰应用程序的流程?

示例:假设我有一个侦听某种意图的broadcastReceiver,但这个意图仅供其他服务/活动使用,该服务/活动位于我的应用程序内部或我创建的另一个应用程序中,但我不知道我希望其他人能够使用这个意图.

请帮我.

Ren*_*eno 6

setPackage()

设置一个显式应用程序包名称,以限制此Intent将解析的组件.如果保留默认值null,则将考虑所有应用程序中的所有组件.如果为非null,则Intent只能匹配给定应用程序包中的组件.

或者你可以使用setSelector(),但不能同时使用.


Com*_*are 4

假设我有一个监听某种意图的广播接收器,但此意图仅适用于驻留在我的应用程序内或我创建的另一个应用程序内的另一个服务/活动,但我不希望其他人能够使用此意图。

除了里诺的良好答案之外,对于上面引用的您的具体要求,请使用LocalBroadcastManager. 您不仅可以获得所需的安全性,而且效率更高。LocalBroadcastManagerAndroid 支持包中提供,据我所知应该可以追溯到 Android 1.6。这是一个使用的示例项目LocalBroadcastManager