Android framework修改,禁止指定包名的apk安装到设备上(基于Android10.0.0-r41)

文章目录

  • Android framework修改,禁止指定包名的apk安装到设备上(基于Android10.0.0-r41)
    • 1.新增接口提供给上层调用
    • 2.在pms中实现新增的接口
    • 3.找到preparePackageLI方法。
    • 4.测试验证

Android framework修改,禁止指定包名的apk安装到设备上(基于Android10.0.0-r41)

1.新增接口提供给上层调用

pms就是负责apk的安装和卸载,从pms入手

frameworks/base/core/java/android/content/pm/IPackageManager.aidl

在这里插入图片描述

//qfh addvoid pmList(in List<String> pkgNames);List<String> getPackageInfoList();//qfh end

自定义两个接口在aidl文件中,pmList主要设置要禁止安装的包名的列表,getPackageInfoList是获取包名列表

2.在pms中实现新增的接口

frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java

在pms中

在这里插入图片描述

    //qfh addprivate List<String> pkNames;@Overridepublic void pmList(List<String> pkNames) {this.pkNames = pkNames;Slog.d(TAG, "    pkNames " + pkNames);}@Overridepublic List<String> getPackageInfoList(){return this.pkNames;}private boolean refuseInstallationAppList(String packagename){if(this.pkNames == null || this.pkNames.size() == 0){return false;}for(String pkNameItem : this.pkNames) {if (pkNameItem.equals(packagename)) {return true;}}return false;}//qfh end

主要是对pmList,getPackageInfoList两个接口的实现,refuseInstallationAppList是判断我们传入的包名是否被列入禁止安装的列表中,

3.找到preparePackageLI方法。

只要是安装apk都会走这个方法,包括adb,以及Android studio,等各种方式安装进系统内。

在这里插入图片描述

        //qfh addif(refuseInstallationAppList(pkg.packageName)) {Log.d("refuseInstallationAppList","refuseInstallationAppList");throw new PrepareFailure(INSTALL_FAILED_INSTANT_APP_INVALID, "this is a app for refuseInstallationAppList");}//qfh end

判断传入的包名是否在禁止安装的列表中,如果在就抛出异常禁止安装。

由于pms是父类,它有一个子类ApplicationPackageManager还需要我们添加一个接口方法,提供给app外界调用

frameworks/base/core/java/android/app/ApplicationPackageManager.java

在这里插入图片描述

public void setPkgNamesList(List<String> pkgNames) {try {Log.w("PackageManager", "pkgNames" + pkgNames);mPM.pmList(pkgNames);} catch (RemoteException e) {throw e.rethrowFromSystemServer();}}

4.测试验证

添加我们需要禁止安装的app的包名

在这里插入图片描述

public void createPackageManagerTest(View view) {Context context = getApplicationContext();ApplicationPackageManager packageManager = (ApplicationPackageManager) context.getPackageManager();List<String> pkNames = new ArrayList<>();pkNames.add("com.example.myapplication6");packageManager.setPkgNamesList(pkNames);}

我们可以把包名修改成禁用的包名测试下

在这里插入图片描述

使用adb安装,这是我们抛出异常的日志信息,

在这里插入图片描述

在这里插入图片描述

Androidstuduio直接安装也是被禁止

在这里插入图片描述

在这里插入图片描述

至此就达到了我们的要求,可以有选择性的禁止一些app的安装

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/844129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

钛媒体首发 | 百度沈抖回应大模型价格战:希望大家别再天天拉表格比价格

ITValue “有这个时间&#xff0c;不如去卷场景、卷应用。” 作者&#xff5c;张帅 编辑&#xff5c;盖虹达 首发&#xff5c;钛媒体APP ITValue 钛媒体App 5月28日消息&#xff0c;在2024智能经济论坛上&#xff0c;百度集团执行副总裁、百度智能云事业群总裁沈抖介绍了文心系…

免费,Python蓝桥杯等级考试真题--第16级(含答案解析和代码)

Python蓝桥杯等级考试真题–第16级 一、 选择题 答案&#xff1a;B 解析&#xff1a;&#xff08;75&#xff09;//212//26&#xff0c;故答案为B。 答案&#xff1a;B 解析&#xff1a;因为x15&#xff0c;所以range&#xff08;2,15&#xff09;&#xff0c;i的取值为2-14&a…

Java+mysql酒店管理系统

1&#xff0e;引言 1.1编写的目的 本文档为酒店管理系统需求分析报告&#xff0c;为酒店管理系统的设计的主要依据&#xff0c;主要针对酒店管理系统的概要设计和详细设计人员&#xff0c;作为项目验收的主要依据。 1.2背景 本软件全称为阳光酒店管理系统。 1.3 参考资料 …

云平台教程 | 手把手教你GSEA富集分析和解读

爱基百客云平台小工具使用 1.1 爱基百客云平台之GSEA分析 1.2 GSEA富集分析原理图 1.3 GSEA富集分析过程 1.4 参数设置 1.5 任务查看 1.6 结果 1.6.1 富集结果表格 1.6.2 富集可视化图解读 01 爱基百客云平台小工具使用 首先&#xff0c;打开爱基百客官网&#xff1a;http://w…

STM32——启动文件选择及启动文件宏定义

文章目录 前提&#xff1a;以STM32F1xx系列芯片为例&#xff08;有方法&#xff0c;其他系列一样&#xff09;启动文件选择对应启动文件的寻找方法对应宏定义#define的寻找方法另外 前提&#xff1a;以STM32F1xx系列芯片为例&#xff08;有方法&#xff0c;其他系列一样&#x…

时间|基于SprinBoot+vue的时间管理系统(源码+数据库+文档)

时间管理系统 目录 基于SprinBootvue的时间管理系统 一、前言 二、系统设计 三、系统功能设计 1管理员功能模块 2用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农…

JavaScript数据类型概述及Undefined与Null详解

在JavaScript&#xff08;简称JS&#xff09;中&#xff0c;数据类型是构建程序逻辑的基础。ECMAScript标准定义了七种数据类型&#xff0c;包括六种原始&#xff08;简单&#xff09;数据类型和一种复杂数据类型。这些类型构成了JS表达和处理信息的核心框架。 数据类型概览 …

VMware vSphere Distributed Services Engine 和利用 DPU 实现网络加速

VMware相关学习专栏&#xff1a;虚拟化技术 vSphere 8.0 通过加速数据处理单元 (DPU) 上的网络功能实现了突破性的工作负载性能。 vSphere 8.0 通过加速 DPU 上的网络功能实现了突破性工作负载性能&#xff0c;从而满足现代分布式工作负载的吞吐量和延迟需求。借助 vSphere Dis…

物联网都有什么优缺点?——青创智通

工业物联网平台解决方案 物联网&#xff0c;这个曾经似乎遥不可及的科技概念&#xff0c;如今已逐渐渗透到我们生活的方方面面。从智能家居到智能工业&#xff0c;从智能医疗到智能城市&#xff0c;物联网技术正在改变着我们的世界。 然而&#xff0c;正如任何一项技术一样&a…

解决 git:OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0

解决 git&#xff1a;OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0 问题 git pull报错&#xff1a;fatal: unable to access ‘https://github.com/aircrushin/ultrav-music.git/’: Failed to connect to github.com port 443 after 21077 ms: Couldn’t connect to serve…

【Xilinx】MMCM时钟频率合成、相位调整和时钟管理IP核参数的定义及计算方法

前言 MMCM是Xilinx FPGA中用于时钟频率合成、相位调整和时钟管理的IP核。有些参数是用于配置和管理Xilinx FPGA中的MMCM&#xff08;Mixed-Mode Clock Manager&#xff09;时钟管理模块的参数。 比如有如下参数 parameter CLKIN_PERIOD_MMCM 10000,parameter…

IPv4组播——组播IP,MAC地址,组播网络基本架构

目录 一.组播的好处 二.组播实现原理 1.组播IP地址 2.组播MAC地址 &#xff08;1&#xff09;前24位 &#xff08;2&#xff09;第25位 &#xff08;3&#xff09;低23位 三.组播网络基本架构 1.源端网络 2.组播转发网络 3.成员端网络 四.组播服务类型 根据组播源…

2024长三角快递物流展即将亮相,致鸿物流器材有限公司值得关注

广东致鸿物流器材有限公司&#xff0c;前身为广州致鸿物流器材有限公司&#xff0c;成立于2002年初&#xff0c;是一家中国专业仓储笼研发制造公司&#xff0c;公司员工约400名&#xff0c;日产仓储笼制造规模近8000个&#xff0c;在全国范围内有五大配送服务中心&#xff1a;江…

一次收获颇丰的Google漏洞挖掘旅程

本文由安全专家Henry N. Caga于2024年03月23日发表在InfoSecWrite-ups网站&#xff0c;本文记录了Henry N. Caga的一次漏洞挖掘过程&#xff0c;此次漏洞挖掘的成果得到了Google官方认可&#xff0c;拿到了4133.70美元的漏洞奖金&#xff0c;并让他成功进入了Google名人堂。本文…

数组和特殊矩阵的压缩存储

文章目录 一维数组二维数组特殊矩阵对称矩阵三角矩阵三对角矩阵稀疏矩阵三元组法十字链表法 一维数组 以一维数组A[0...n-1]为例&#xff0c;其存储结构关系式为 LOC ⁡ ( a i ) LOC ⁡ ( a 0 ) i L ( 0 ⩽ i < n ) \operatorname{LOC}\left(a_i\right)\operatorname{LO…

spark 之数据湖

delta lake 基本使用 可参见&#xff1a; https://docs.delta.io/2.3.0/quick-start.html#language-scala bin/spark-shell --packages io.delta:delta-core_2.12:2.3.0 --conf "spark.sql.extensionsio.delta.sql.DeltaSparkSessionExtension" --conf "spark…

代理IP的几个应用场景

小熊代理IP是采用国际运营商自有纯净IP&#xff0c;高性能、高匿名服务器&#xff0c;稳定且无任何限制的纯净国内跟海外Socks5/HTTP代理IP池&#xff0c;适用于任意种类业务场景访问到世界任何地方的网络数据&#xff0c;高效率的扩展您的在线业务。

python处理EXCEL

python处理EXCEL 在Python中&#xff0c;有多个库可以用来操作Excel文件。其中比较常用的有openpyxl、pandas&#xff0c;以及xlsxwriter。下面我将分别介绍这些库及其使用方法。 一、openpyxl 安装 pip install openpyxl 示例代码 from openpyxl import Workbook, load_workbo…

【Numpy】NumPy数组的切片和索引操作深入详解

深入理解NumPy数组的切片和索引操作 引言 在数据分析和科学计算中&#xff0c;NumPy 是一个非常重要的库。它提供了强大的多维数组对象和丰富的函数库&#xff0c;帮助我们高效地进行数值计算和数据操作。今天&#xff0c;我们将深入探讨 NumPy 数组的切片和索引操作。 什么…

MySQL之性能剖析(四)

性能剖析 使用慢查询 Percona Server对慢查询日志做了哪些改进&#xff1f;比如"使用SHOW PROFILE"执行相同查询后可以抓取到的结果 # Time:110905 17:03:18 # UserHost:root[root] localhost[127.0.01] # Thread_id:7 Schema:saklia Last_errono:0 Killed:0 # Qu…