为什么 Android 8.0 注册的广播接收不到了?

本文首发微信公众号:菜天Android

忙啊~最近好忙呀。

这篇文章偷个闲,记录下 Android8.0 上的新增的广播限制。

零、前言

最近在基于 Android 8.1 的系统项目中有用到静态注册广播去监听广播。可是不论我是普通的将Apk install进去抑或是高贵的push到对应的system/priv-app/目录下,都收不到这个广播。心态,DUANG,炸了。

后来灵光一闪,扒出记忆角落的Android7.0的广播限制,赶紧Google一下。原来如此,恍然大悟:Android8.0后,当App targetSDK >= 26,几乎禁止了所有的隐式广播的静态注册监听。 特在此记录,防止我以后又提莫的忘记了。

本篇文章主要讲述以下内容,还请拿起小板凳,带好零食,前来观赏:

  • Android广播科普
  • Android8.0的后台限制
  • 具体广播限制和对应赦免清单
  • 适配/解决方法

一、科普科普广播知识

来来来,先科普下,广播两种监听/接收注册方式和两种类型,拿小本本记下来,记住了!

注册方式

  • 静态注册:也称为清单注册,就是在AndroidManifest.xml中注册的广播。此类广播接收器在 应用尚未启动 的时候就可以接收到相应广播。
  • 动态注册:也称为运行时注册,也就是在Service或者Activity组件中,通过Context.registerReceiver()注册广播接收器。此类广播接收器是在应用已启动后,通过代码进行注册。

两种类型

  • 显式广播(Explicit Broadcast):发送的Intent是显示Intent的广播。通过指定Intent组件名称来实现的,它一般用在知道目标组件名称的前提下,去调用以下方法。意图明确,指定了要激活的组件是哪个组件,一般是在相同的应用程序内部实现的。

Intent.setComponent()
Intent.setClassName()
Intent.setClass()
n

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值