2013-05-03 37 views
6

我知道設置android:exported =「false」會限制其他應用程序使用/訪問我的應用程序組件。
設置此屬性是否會限制系統以及使用/訪問我的組件?我懷疑。是否android:exported =「false」限制系統調用/訪問?

例如,我有以下接收機:

<receiver 
     android:name="ConnectivityManager" 
     android:label="NetworkConnection" 
     android:exported = "false" > 
     <intent-filter> 
      <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
     </intent-filter> 
    </receiver> 

接收機仍然從系統一旦連接狀態改變接收廣播(上/)。

這是否意味着系統調用/訪問永遠不能停止?請說明。

+0

只有在您主動請求接收廣播時纔會收到廣播。如果你不需要它,爲什麼不調用'unregisterReceiver()'方法? – TactMayers 2013-05-03 08:10:16

+1

是的,你對我提出的第二個問題是正確的。我可以通過setComponentEnabledSetting()或unregisterReceiver()來禁用/終止接收者。但我主要關心的是「是否android:exported =」false「限制系統調用/訪問?」。 – Strider007 2013-05-03 11:22:29

回答

3

是的,如果exports =「false」,它仍然會響應系統廣播,如連接變化。這很容易通過使用上面的廣播接收機和切換飛行模式來測試

3

Google的在線文檔沒有清楚地描述這一點。

從實際結果來看,即使設置了export =「false」,仍然可以通過系統廣播觸發接收器。