• 【Android异常】关于静态注册BroadcastReceiver接收不到系统广播的问题


    如果你静态注册的广播无法接收到消息,请先检查下:你的安卓版本是不是8.0+


    前言
    Google官方声明:Beginning with Android 8.0 (API level 26), the system imposes additional restrictions on manifest-declared receivers. If your app targets API level 26 or higher, you cannot use the manifest to declare a receiver for most implicit broadcasts (broadcasts that do not target your app specifically).
    大概意思就是说:从android 8.0(API26)开始,对清单文件中静态注册广播接收者增加了限制,建议大家不要在清单文件中静态注册广播接收者。

    其实说白点:就是因为在清单文件中静态注册广播接收者,容易让一些"不法分子"获取用户的隐私(如:电话监听、短信监听等等),所以google限制了静态注册

    解决方案(以android.intent.action.BATTERY_CHANGED为例):

    动态注册不能放到activity中,因为动态注册必须要在activity消亡的时候调用unregisterReceiver,会随着activity的解锁消失而不能再接收广播。一般的办法是在activity起来后马上start一个service,这个service里动态注册一个broadcastreceiver,service必须常驻在系统内,所以要接收开机消息android.intent.action.BOOT_COMPLETED。

  • 相关阅读:
    笔记||Python3之字典
    笔记||Python3之算法
    笔记||Python3之文件的读写
    笔记||Python3之循环
    笔记||Python3之字符串格式化输出
    笔记||Python3之对象的方法
    笔记||Python3之函数
    笔记||Python3之布尔表达式+条件判断
    《1024伐木累》-程序员相亲都做了什么?
    《1024伐木累》-宝贝儿,可不可以
  • 原文地址:https://www.cnblogs.com/zFrankie/p/14379798.html
Copyright © 2020-2023  润新知