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 add
    void 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 add
    private List<String> pkNames;
    @Override
    public void pmList(List<String> pkNames) {
        this.pkNames = pkNames;
        Slog.d(TAG, "    pkNames " + pkNames);
    }
    @Override
    public 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 add
        if(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的安装

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何利用短链接巧妙避开多渠道推广大坑

在当下&#xff0c;推广渠道多样化对企业来说&#xff0c;那可是机遇与大坑并存&#xff01;多渠道推广的重要性大家都懂&#xff0c;但为啥说有坑呢&#xff1f;一旦企业开启多渠道推广模式&#xff0c;就得面对大量人力物力的投入&#xff0c;可要是区分不了各个渠道的推广效…

超详细介绍基于微调 Faster R-CNN实现海上航拍图像中检测小物体-含源码与数据集免费下载

在航拍图像中检测小物体,尤其是对于海上救援等关键应用而言,是一项独特的挑战。及时检测水中的人可能意味着生死之间的差别。我们的研究重点是微调 Faster R-CNN(一种强大的两阶段物体检测器),以满足这一重要需求。 我们研究的核心是SeaDroneSee 数据集,这是一组重要的图…

【NumPy】全面解析add函数:高效数组加法操作

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

源达投顾的投资建议可不可信?

在金融投资领域&#xff0c;专业的投资顾问机构如源达投顾&#xff0c;为投资者提供了宝贵的投资建议和策略。然而&#xff0c;面对市场上众多的投资顾问机构&#xff0c;投资者往往会产生疑问&#xff1a;源达投顾的投资建议真的可信吗&#xff1f; 一、专业团队背景 源达投…

MSC Apex压力容器应力线性化的应用方法

应力线性化是针对压力容器设计常用的一种技术。在工程领域&#xff0c;应力线性化在分析复杂载荷条件下构件的结构完整性方面起着至关重要的作用。准确的应力线性化对于评估是否符合行业标准(如美国机械工程师协会(ASME)制定的标准)至关重要。为了简化应力线性化的过程&#xf…

HTML+CSS+JS简易计算器

HTMLCSSJS简易计算器 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>简易计算器</t…

探索Django 5: 从零开始,打造你的第一个Web应用

今天我们将一起探索 Django 5&#xff0c;一个备受开发者喜爱的 Python Web 框架。我们会了解 Django 5 的简介&#xff0c;新特性&#xff0c;如何安装 Django&#xff0c;以及用 Django 编写一个简单的 “Hello, World” 网站。最后&#xff0c;我会推荐一本与 Django 5 相关…

JAVAEE之多线程进阶(2)_ CAS概念、实现原理、ABA问题及解决方案

前言 在并发编程时&#xff0c;常常会出现线程安全问题&#xff0c;那么如何保证原子性呢&#xff1f;常用的方法就是加锁。在Java语言中可以使用 Synchronized和CAS实现加锁效果。  Synchronized关键字保证同步的&#xff0c;这会导致有锁&#xff0c;但是锁机制存在以下问题…

慧尔智联携纷享销客启动CRM项目 推进客户经营升级与内外高效协作

智慧农业领军企业慧尔智联携手纷享销客&#xff0c;启动CRM客户经营管理系统项目。双方将深入合作&#xff0c;全面落实慧尔智联发展策略&#xff0c;持续提升数字化经营管理水平&#xff0c;实现内部团队信息化高效协作&#xff0c;以快速响应市场需求&#xff0c;提升客户满意…

竹云董事长在第二届ICT技术发展与企业数字化转型高峰论坛作主题演讲

5月25日&#xff0c;由中国服务贸易协会指导&#xff0c;中国服务贸易协会信息技术服务委员会主办的 “第二届ICT技术发展与企业数字化转型高峰论坛” 在北京隆重召开。 本次论坛以 “数据驱动&#xff0c;AI引领&#xff0c;打造新质生产力” 为主题&#xff0c;特邀业内200余…

hadoop hdfs优势和缺点

hdfs优点 高容错性适合处理大数据可构建再廉价的机器上 hdfs缺点 不适合做低延迟数据访问 毫秒级的存储数据做不到 无法高效的对大量小文件进行存储不支持并发写入 文件随机修改 一个文件只能有一个writer 不允许多个线程同时写仅支持数据追加 不支持文件的随机修改 hdf…

队列的特性及代码实现(C语言)

目录 队列的定义 队列的实现分析 代码实现 Queue.h Queue.c 队列的定义 队列是只允许在一端进行插入操作&#xff0c;而在另一段进行删除操作的线性表。 首先&#xff0c;让我们来看一看生活中的队列&#xff0c;当我们去银行办理业务的时候&#xff0c;我们进入银行的时候…

TPK系列——2W 3KVDC 隔离单,双输出 DC/DC 电源模块

TPK系列是一款2W并且有高隔离电压要求的理想产品&#xff0c;工业级温度范围–40℃到 105℃&#xff0c;在此温度范围内都可以稳定输出2W&#xff0c;并且效率非常高&#xff0c;高达89%&#xff0c;同时负载调整率非常低&#xff0c;对于有输出电压精度有要求的地方特别合适&a…

服务案例|网络攻击事件的排查与修复

LinkSLA智能运维管家V6.0版支持通过SNMP Trap对设备进行监控告警&#xff0c;Trap是一种主动推送网络设备事件或告警消息的方式&#xff0c;与SNMP轮询&#xff08;polling&#xff09;不同&#xff0c;具有以下几点优势&#xff1a; 1. 实时监控与快速响应 SNMP Trap能够实时…

LeetCode 518.零钱兑换Ⅱ

思路&#xff1a; 这题和之前做的不大一样&#xff0c;之前的动态规划转化成背包问题一般都是求能放入的最大重量&#xff0c;这个是求组合数。 求组合数的状态转移方程之前在1和0提到过&#xff1a; dp[j]dp[j-nums[]i]; 这里重点分析一下遍历顺序&#xff1a; 这段代码里面是…

vue学习汇总

目录 一、vue基本语法 1.插值表达式 {{}} 2.显示数据(v-text)和(v-html) 3.事件处理(v-on) 4.循环遍历(v-for) 5.判断语法(v-if) 6.元素显示与隐藏(v-show) 7.动态设置属性(v-bind) 8.数据双向绑定(v-model) 9.计算属性 二、vue组件 1.使用组件的三个步骤 2.注册组…

Spring Boot发送邮件时如何支持定时功能?

如何使用Spring Boot结合AokSend以实现高效邮件发送&#xff1f; 如何高效地进行sendmail发送邮件并支持定时功能是一个值得探讨的问题。本文将详细介绍如何在Spring Boot中实现定时sendmail发送邮件&#xff0c;并结合AokSend工具实现高效邮件发送。 Spring Boot发送邮件&am…

【Go专家编程——并发控制——三剑客】

并发控制 我们考虑这么一种场景&#xff0c;协程在A执行过程中需要创建子协程A1、A2、A3…An&#xff0c;协程创建完子协程后就等待子协程退出。 针对这种场景&#xff0c;Go提供了三种解决方案&#xff1a; Channel&#xff1a;使用channel控制子协程 优点&#xff1a;实现…

6.1 Go 数组

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Spring Cloud Alibaba-06-Sleuth链路追踪

Lison <dreamlison163.com>, v1.0.0, 2024.4.03 Spring Cloud Alibaba-06-Sleuth链路追踪 文章目录 Spring Cloud Alibaba-06-Sleuth链路追踪为什么使用链路追踪常见链路追踪解决方案Sleuth概述概述Sleuth术语 Sleuth Zipkin 原理Sleuth原理简述Zipkin 原理简述 Sleut…