Android8 自定义广播接收不到的问题

1. 问题的前提:本人维护的一个应用是通过按键发送一个自定义广播,然后拉起服务。原来项目开发是在Android6,将该应用安装到Android7系统上面可正常使用,但是安装到Android8上面,死活收不到广播。通过百度参考了两篇文章(文章最后加备注),做了以下总结:

2.原因:Android8在静态广播的使用上做了一些限制具体可查看:https://developer.android.google.cn/about/versions/oreo/android-8.0.html

3. 解决办法:

(1)使用动态广播代替静态广播,具体可参考博客1。

(2)保留原来的静态广播,但是加入Component参数,具体可参考博客2。

我使用的是解决方式2(写了demo测试了一下),在必须要使用自定义静态广播的时候可采用这个方法,发送广播时加入ComponentName,参数1是自定义广播的包名,参数2是自定义广播的路径:
Intent it = new Intent("com.hisense.test.broadcast");
it.setComponent(new ComponentName("com.example.broadcasttest",
                        "com.example.broadcasttest.MyBroadcast"));
sendBroadcast(it);


备注:

      博客1:https://developer.android.google.cn/about/versions/oreo/android-8.0.html

      博客2:http://blog.csdn.net/MusicCannon/article/details/78555652




你可能感兴趣的:(移动开发)