2012-03-16 47 views
4

背景: 我注意到,对于内经常活动,可以为任何应用程序打开我的应用程序的活动。android - 是否可以使用私人意图而不是全局意图?

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

例如: 假设我有一个broadcastReceiver侦听某种意图,但这个意图只是意味着被另一个驻留在我的应用程序内的服务/活动使用,或者在我创建的另一个应用程序内部,但我不希望别人能够使用这个意图。

请帮帮我。

回答

4

假设我有一个监听某种意图的广播接收器,但这种意图只是为了其他服务/活动驻留无论是我的应用程序里面,或者里面,我已经创造了另一个应用程序使用,但我不希望别人能够使用这个意图。

除了里诺的正确答案,对于您上面引用的具体要求,请使用LocalBroadcastManager。您不仅获得了您所寻求的安全性,而且更高效。 LocalBroadcastManager在Android支持包中可用,并且AFAIK应该返回到Android 1.6。 Here is a sample project使用LocalBroadcastManager

+1

你能否认为更多?它如何变得更快?它是如何工作的?是否像直接发送对象?如果是这样,是否也建议为了在活动和服务之间发送快速(高频率)的数据? – 2012-03-17 08:51:19

6

setPackage()

设置限制了这种意图将解析到组件明确的应用程序包的名称。如果保留为默认值null,则将考虑所有应用程序中的所有组件。如果非null,则Intent只能匹配给定应用程序包中的组件。

或者您可以使用setSelector(),但不能同时使用两者。

+0

我应该什么时候使用他们每个人的,什么是使用它们的优点和缺点是什么? – 2012-03-17 08:49:17

+0

另外,如何限制我的应用程序的活动,以便他们将无法从其他应用程序启动?也许在清单中的东西? – 2012-03-19 09:22:33

+0

请[先阅读本文](http://www.linuxtopia.org/online_books/android/devguide/guide/topics/intents/intents-filters.html)。我能想到的一种方法是检查一个额外的。有点像令牌,如果令牌传递的是你期望的令牌:启动活动。 – Reno 2012-03-19 13:32:40

相关问题