Android7.1 新增开机广播过滤(只有特定apk可以接收开机广播)

2023-10-17 00:28

本文主要是介绍Android7.1 新增开机广播过滤(只有特定apk可以接收开机广播),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、需求

对开机广播进行过滤,只有特定的apk才能接收开机广播(包名白名单、或者包名前缀匹配)。

二、需要修改的地方

对于广播的过滤,在frameworks/base/services/core/java/com/android/server/am/BroadcastQueue.java这个文件里:

BroadcastQueue.java是Android系统中的一个类,用于管理和处理广播消息的队列。
在Android系统中,广播是一种用于在应用程序之间传递消息的机制。当某个应用程序发送广播时,其他应用程序可以注册相应的广播接收器来接收并处理这些广播消息。
BroadcastQueue.java类负责管理和调度广播消息的传递。它维护了一个广播消息队列,并按照一定的优先级和顺序处理这些消息。它还负责将广播消息分发给注册了相应广播接收器的应用程序。

三、实现

在BroadcastQueue.java修改processNextBroadcast()方法
在这里插入图片描述
r.intent.getAction()可以获取要处理的广播,这里匹配开机广播
info.activityInfo.applicationInfo.processName获取apk包名,传入自定义方法isInWhiteList(),该方法用于检查apk是否在白名单中

如果广播为开机广播并且不在白名单中,仿照上面的代码对广播进行处理然后return

注意:许多系统必要的应用都需要接收开机广播自启,需要在白名单中添加这些apk的包名

以下代码可以获取接收开机广播的apk的包名

		PackageManager packageManager = getPackageManager();
// 创建一个Intent对象,表示开机广播Intent bootIntent = new Intent(Intent.ACTION_BOOT_COMPLETED);List<ResolveInfo> receivers = packageManager.queryBroadcastReceivers(bootIntent, 0);for (ResolveInfo receiver : receivers) {String packageName = receiver.activityInfo.packageName;String className = receiver.activityInfo.name;// 处理应用程序信息,例如打印或存储到列表中Log.d("", "Package: " + packageName + ", Class: " + className);}

这篇关于Android7.1 新增开机广播过滤(只有特定apk可以接收开机广播)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/221712

相关文章

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

pandas数据过滤

Pandas 数据过滤方法 Pandas 提供了多种方法来过滤数据,可以根据不同的条件进行筛选。以下是一些常见的 Pandas 数据过滤方法,结合实例进行讲解,希望能帮你快速理解。 1. 基于条件筛选行 可以使用布尔索引来根据条件过滤行。 import pandas as pd# 创建示例数据data = {'Name': ['Alice', 'Bob', 'Charlie', 'Dav

Android13_SystemUI下拉框新增音量控制条

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Android13_SystemUI下拉框新增音量控制条 一、必备知识二、源码分析对比1.brightness模块分析对比2.statusbar/phone 对应模块对比对比初始化类声明对比构造方法 三、源码修改四、相关资源 一、必备知识 在Android12 版本上面已经完成了功能的实现,目前是在And

Windows下Nginx的安装及开机启动

1、将nginx-1.16.1.zip解压拷贝至D:\web\nginx目录下。 2、启动Nginx,两种方法: (1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过。 (2)打开cmd命令窗口,切换到nginx目录下,输入命令 nginx.exe 或者 start nginx ,回车即可。 3、检查nginx是否启动成功。 直接在浏览器地址栏输入网址 http://lo

详解Tomcat 7的七大新特性和新增功能(1)

http://developer.51cto.com/art/201009/228537.htm http://tomcat.apache.org/tomcat-7.0-doc/index.html  Apache发布首个Tomcat 7版本已经发布了有一段时间了,Tomcat 7引入了许多新功能,并对现有功能进行了增强。很多文章列出了Tomcat 7的新功能,但大多数并没有详细解释它们

Android中如何实现adb向应用发送特定指令并接收返回

1 ADB发送命令给应用 1.1 发送自定义广播给系统或应用 adb shell am broadcast 是 Android Debug Bridge (ADB) 中用于向 Android 系统发送广播的命令。通过这个命令,开发者可以发送自定义广播给系统或应用,触发应用中的广播接收器(BroadcastReceiver)。广播机制是 Android 的一种组件通信方式,应用可以监听广播来执行

笔记本电脑开机报错故障的原因及解决办法

笔记本电脑开机报错故障是指笔记本电脑开机自检时或启动操作系统前停止启动,在显示屏 出现一些错误提示的故障。   笔记本电脑开机报错故障的原因及解决办法   造成此类故障的原因一般是笔记本电脑在启动自检时,检测到硬件设备不能正常工作或在自 检通过后从硬盘启动时,出现硬盘的分区表损坏、硬盘主引导记录损坏、硬盘分区结束标志丢失 等故障,笔记本电脑出现相应的故障提示。   维修此类故障时

设置zookeeper开机自启动/服务化

设置启动zk的用户为zookeeper 设置启动zk的用户为zookeeper用户,而非root用户,这样比较安全。 可以使用root用户进行zookeeper的管理(启动、停止…),但对于追求卓越和安全的的人来说,采用新非root用户管理zookeeper更好。 步骤: 1. 创建用户和用户组 2. 相关目录设置用户和用户组属性 3. 采用zookeeper用户启动进程 设置z

内置带so的APK为系统APK方法

(1)若内置为可卸载的APK,可以无需解压出lib直接编译就可以 具体参考http://blog.csdn.net/a462533587/article/details/46380795 (2)若内置为system APP,上述blog也有两种方式: 方法一:   如下例,在Android.mk中添加并配置变量(注意路径对应): LOCAL_PREBUILT_JNI_LIBS = \