关于SDK>=26之后静态广播失效问题(Background execution not allowed: receiving Intent)

为限制后台应用过度启动及接收广播,在Android SDK26中,系统开始限制静态注册的广播接收器。本文详细介绍了如何通过指定组件名称或添加特定标志来绕过此限制,以及动态注册广播接收器的方法,确保应用在高版本Android系统中正常接收广播。

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

 在 SDK 26,通过令静态注册的广播接收器失效 以限制后台过多应用启动,接受广播等情况。

当运行时,会有以下LOG:

Background execution not allowed: receiving Intent

 

1.  如果是自己编写发送广播,可以通过 以下方式使广播工作

  (1) 

if(Build.VERSION.SDK_INT >= 26){
  //参数1-包名 参数2-广播接收者所在的路径名
  ComponentName componentName=new ComponentName(getApplicationContext(),"com.code.tx1n.tochat.MessageReceiver"); 
  
  myIntent.setComponent(componentName); }

  (2)  

 if(Build.VERSION.SDK_INT >= 26){

   //此方法功能更强大一些,但硬编码存在隐患

  myIntent.addFlags(0x01000000);

2. 如果是接收隐式Intent,则只能通过动态注册广播接收器解决

  

转载于:https://www.cnblogs.com/xfdmyghdx/p/10356154.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值