解决高版本的android8.0系统 接收不到广播的问题

本文探讨了Android 8.0系统中广播接收的问题,详细介绍了当应用程序从Android 6.0升级到Android 8.0时遇到的广播接收失败现象,并提供了两种解决方案:使用动态广播或为静态广播添加Component参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

20180507 21:03:14

阅读数:431

最近在回看第一行代码时,做书上有关广播的例子时,发现高版本的android系统,对于广播的接收变得越来越严格,

导致自己写的demo中收不到广播,看了官网上的一些介绍    附上链接

https://developer.android.google.cn/about/versions/oreo/features/background-broadcasts

原来在Android6,将该应用安装到Android7系统上面可正常使用,但是安装到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

 

具体的解决办法就是

Intent intent =new Intent( "com.example.wenhaibo.androidstudy_broadcast02.MY_BROADCAST" );

intent.setComponent( new ComponentName( "com.example.wenhaibo.androidstudy_broadcast02" ,

        "com.example.wenhaibo.androidstudy_broadcast02.MyBroadCastReceiver") );

sendBroadcast( intent );

sendBroadcastintent)方法之前,用intent 对象调用一下  setComponent new ComponentName''参数一'',''参数二''))  参数一是你的包名,参数二是你的接收器的路径。

 

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值