2012-03-16 52 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

相關問題