是不是有时候发觉有时候Android的broadcastReciver重写正确,IntentFilter定义正确,添加Action正确,。。可能正确,注册IntentFileter也是正确,正确,正确,都是正确,但依然收不到想要收到的broadcastReciver,或许你只是忘记addDataScheme这一点点,试一试,说不定你就能收到迟来的broadcast。至于为什么要添加这个,请参看这篇文章,讲得还是很清楚和很详细的哦,地址:
http://blog.youkuaiyun.com/silenceburn/article/details/6083375
下面是我从Android源码收集的几段addDataScheme:
1.mediaScanner相关的:
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相关的:
filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
filter.addDataScheme("package");
3.sms相关的:
intentFilter.addAction(Intents.DATA_SMS_RECEIVED_ACTION);
intentFilter.addDataScheme("sms");
源码便是最好的注释,现在想想,真的还是有道理的。
本文深入解析了Android中广播接收者在实际应用中遇到的问题,特别是关于IntentFilter、Action、DataScheme等关键概念的理解和使用。通过案例分析,作者详细解释了在配置BroadcastReceiver时容易忽视的addDataScheme这一细节,并提供了源码实例进行说明。旨在帮助开发者避免常见的配置错误,确保BroadcastReceiver能够正常接收预期的广播。
229

被折叠的 条评论
为什么被折叠?



