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
版权声明:本文为kongqwesd12原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。