如果送出sendBroadcast()後,
那之前提到的兩種註冊receiver都可以接收到,
1. 定義在AndroidManifest.xml裡。
2. 在程式裡用IntentFilter去定義哪些intent actioin要收到,再用registerReceiver()註冊。
如果你在送出去sendBroadcast()前,
在intent加個flag,
intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
這樣第一種註冊方式就無法監聽到這個事件,
只有第二種方式才拿得到事件。
目前測試"耳機"這個event是只能用第二種方式才拿得到。
android.intent.action.HEADSET_PLUG
為什麼要這樣做?
其實是為了安全目的,
因為用第一種方式,你的pkg只要安裝進去,
他就會自動啟動監聽,
就算這個pkg有執行起來,然後被關掉,
那這個監聽也不會被關掉。
Ref 1
Ref 2
沒有留言:
張貼留言