2014-12-13 45 views
5

嗨我看到一些廣播接收器在Android Manifest.xml中使用這個標籤android:exported="true"進行註冊。在BroadcastReceiver中有什麼用android:exported =「true」

<receiver android:exported="true" android:name="com.flyingsoftgames.googleplayquery.QueryReceiver"> 
    <intent-filter> 
     <action android:name="com.android.vending.INSTALL_REFERRER" /> 
    </intent-filter> 
</receiver> 

究竟使用android:exported="true"註冊廣播接收器在Android的?

在此先感謝。

回答

8

Developer Guide

安卓出口 無論廣播接收器可以從它的應用程序之外的來源接收消息 - 「真」如果可以,和「假」如果不是。如果是「假」,則廣播接收機可以接收的唯一消息是那些由具有相同用戶ID的相同應用程序或應用程序的組件發送的消息。 默認值取決於廣播接收器是否包含意圖過濾器。沒有任何過濾器意味着它只能由指定其確切類名的Intent對象調用。這意味着接收者僅用於應用程序內部使用(因爲其他人通常不會知道類名)。所以在這種情況下,默認值是「false」。另一方面,至少一個過濾器的存在意味着廣播接收機意在接收系統或其他應用廣播的意圖,所以默認值是「真」。

此屬性不是限制廣播接收機外部曝光的唯一方法。您還可以使用權限來限制可以發送消息的外部實體(請參閱權限屬性)。

4

android:exported

true:廣播接收器可以接收由同一或其他應用程序發送

false‍事件:廣播接收器可以接收相同的應用程序發送的事件

+2

所以,如果我要聽到系統事件(即藍牙開/關狀態),我應該使用** exported = true **? – 2017-08-09 20:53:10

+0

@IgorGanapolsky在這種情況下,您不必使用此屬性。 – CopsOnRoad 2018-01-24 14:23:49

相關問題