Android的BroadcastReciver收不到Broadcast(系统广播)的原因之一

来源:互联网 发布:迅雷xp系统优化工具 编辑:程序博客网 时间:2024/05/22 02:22
     是不是有时候发觉有时候Android的broadcastReciver重写正确,IntentFilter定义正确,添加Action正确,。。可能正确,注册IntentFileter也是正确,正确,正确,都是正确,但依然收不到想要收到的broadcastReciver,或许你只是忘记addDataScheme这一点点,试一试,说不定你就能收到迟来的broadcast。至于为什么要添加这个,请参看这篇文章,讲得还是很清楚和很详细的哦,地址:http://blog.csdn.net/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");

    源码便是最好的注释,现在想想,真的还是有道理的。

原创粉丝点击