2012-07-26 28 views
9

如果我註冊一個廣播接收器像這樣我的活動說,android:是否顯示非廣播接收器?

@Override 
protected void onResume() { 
    super.onResume(); 

    myReceiver = new BroadcastReceiver() { ... }; 
    IntentFilter filter = new IntentFilter("com.example.MY_ACTION"); 
    registerReceiver(myReceiver, filter); 
} 

是這個接收器輸出?如果另一個應用廣播com.example.MY_ACTION,它會被myReceiver收到嗎?

如果是這樣,我假設我需要使用接受字符串權限的registerReceiver()的形式,然後在我的清單中定義該權限,併爲其提供高級保護級別(如簽名)。那是對的嗎?有沒有更簡單的方法?

謝謝。

+1

它們被導出。對於保護方法,請查看:http://stackoverflow.com/questions/9528608/restricting-android-broadcast-receiver-from-specific-app – Kaediil 2012-07-26 18:06:53

+2

該帖子是關於清單註冊的接收器。我特意詢問有關程序註冊的接收器。 – 2012-07-26 18:59:27

+0

沒有區別。一旦您的應用程序正在運行並啓動接收器,任何人都可以向您發送意圖。 – Kaediil 2012-07-26 19:55:27

回答

1

從在廣播接收器API的API文檔:

如果您不需要跨應用程序發送廣播,使用這個類LocalBroadcastManager,而不是下面描述的更 設施一般考慮 。這將爲您提供更多有效的實施(無需跨進程通信)和 ,從而避免考慮與其他 應用程序能夠接收或發送廣播相關的任何安全問題。

這樣至少可以讓接收器只在應用程序中。

+2

雖然這在技術上並不能回答我的問題,但它是隱含問題的解決方案。 – 2012-07-27 15:57:11

+1

如果您必須在應用程序內發送廣播,但跨越流程邊界,則不可行。 – 2014-03-27 07:43:21

+0

@JuusoOhtonen好的,但這不是問題的關鍵,現在呢? – Kaediil 2014-03-27 12:58:10