Android的BroadcastReciver收不到Broadcast(系統廣播)的原因之一
阿新 • • 發佈:2019-01-26
原文地址:http://blog.csdn.net/huangxiaohu_coder/article/details/7106014
是不是有時候發覺有時候Android的broadcastReciver重寫正確,IntentFilter定義正確,新增Action正確,。。可能正確,註冊IntentFileter也是正確,正確,正確,都是正確,但依然收不到想要收到的broadcastReciver,或許你只是忘記addDataScheme這一點點,試一試,說不定你就能收到遲來的broadcast。至於為什麼要新增這個,請參看這篇文章,講得還是很清楚和很詳細的哦,地址:http://blog.csdn.net/silenceburn/article/details/6083375
下面是我從Android原始碼收集的幾段addDataScheme:
1.mediaScanner相關的:
[java] view plain copy print?- IntentFilter intentFilter =
- new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);
- intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
-
intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_STARTED);
- intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
- intentFilter.addAction(Intent.ACTION_MEDIA_EJECT);
- intentFilter.addDataScheme("file");
2.package相關的:
[java] view plain copy print?- filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
-
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
- filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
- filter.addDataScheme("package");
3.sms相關的:
[java] view plain copy print?- intentFilter.addAction(Intents.DATA_SMS_RECEIVED_ACTION);
- intentFilter.addDataScheme("sms");
原始碼便是最好的註釋,現在想想,真的還是有道理的。