2012-04-03 93 views
4

再次,我有一個問題,這又是一個Android相關的問題。這只是爲了讓我更深入地瞭解發送廣播的工作。SendBroadcast會導致什麼樣的安全問題,什麼是更好的方法?

我想知道的是:

1.爲什麼將一個使用廣播接收器上活動的結果?
我認爲廣播接收器對於處理實際設備消息更有用,而不僅僅是在應用中傳遞意圖。

2.開發人員遇到什麼樣的安全問題?
我是否對,如果我假設,任何知道我的包名稱(可能是通過逆向工程)的人都可以基本上捕獲已發送的意圖並查看通過它傳遞的信息?

3.如果您想將對象傳遞給其他活動,LocalBroadcastManager有什麼好處?
我讀過這可能會更好,如果你不希望發送的意圖泄漏到應用程序之外。這是否也意味着即使有人擁有包名,他們仍然不能在應用程序外接收廣播?

如果您認爲我的問題不完整或基於有缺陷的假設,請告訴我,以便我可以從中學習。 :)

非常感謝所有可以幫助。

乾杯,

執行

回答

7

1)廣播接收機要接收的消息(意圖)全局而無需任何UI的機構。他們很好地在不同的組件之間傳遞信息,比如Service,Activity甚至BroadcastReceiver本身。即使您的應用程序未運行,也可以在清單中定義它們來偵聽特定的操作並執行某些操作(例如啓動服務/活動)。但是,在activityForResult中,您的應用程序(活動)必須正在運行才能接收結果,這可能不適合所有時間。

2)是的,如果您的操作字符串已爲其他應用程序所知,則您的廣播將暴露給偵聽這些特定操作的任何接收器。爲避免這種情況,請使用LocalBroadcastManager

3)使用LocalBroadcastManager是確保您的廣播將只播放和你應用程序的上下文內聽了增加隱私的最佳方式。其他應用程序無法收聽這樣的廣播,因爲它們具有自己的上下文並且不知道應用程序的上下文。

按照谷歌文檔的LocalBroadcastManager

  • 你知道你正在廣播數據不會離開你的應用程序,所以不必擔心泄露隱私數據。
  • 其他應用程序無法將這些廣播發送到您的應用程序,所以您不必擔心他們可以利用的安全漏洞 。
  • 它比通過系統發送一個全球廣播

最後的話更有效:如果您需要在您的應用程序內廣播消息,不希望在全球範圍內給他們,然後LocalBroadcastManager是最佳選擇。否則用普通的方式去吧

+0

綜合答案@Waqas – SohailAziz 2012-04-26 06:13:30

+0

這讓事情變得更加清晰。謝謝! :) – StingRay5 2012-05-23 08:44:16

+0

這是非常好的@Waqas – 2012-06-06 17:34:56

相關問題