rk3588 安卓13 应用安装白名单的接口

文章目录

  • 概述
  • 一、app应用安装白名单核心代码
  • 二、app应用安装白名单核心功能分析
  • 三、代码实战
    • 1.先导入所需要的包
    • 2.添加获取白名单方法
    • 3.添加限制白名单方法
    • 4.上层使用
    • PS:查看当前白名单
  • 总结


概述

在13.0系统rom定制化开发中,客户需求要实现应用安装白名单功能,在白名单中的应用可以安装,其他的应用不准安装,实现一个
控制app安装的功能并且暴露接口给上层应用,这需要从app安装流程入手才可以实现功能
PMS就是负责管理app安装的,功能就在这里添加就可以了,接下来看具体实现这个功能


一、app应用安装白名单核心代码

framework/base/core/java/android/content/pm/IPackageManager.aidl
framework/base/services/core/java/com/android/server/pm/InstallPackageHelper.java
framework/base/services/core/java/com/android/server/pm/PackageManagerService.java

二、app应用安装白名单核心功能分析

PackageManager是用于获取Android系统中应用程序的信息,查询应用程序相关信息(application,activity,receiver,service,provider及相应属性等)、查询已安装的应用、
增加或删除权限、清除数据用户、服务器、代码段等
IPackageManager接口类中定义了服务端和客户端通信的业务函数,还定义了内部类Stub,该类从Binder派生并实现了IPackageManager接口。
PackageManagerService继承自IPackageManager.Stub类,由于Stub类从Binder派生,因此PackageManagerService将作为服务端参与Binder通信。
PackageManagerService(简称PKMS),是Android系统中核心服务之一,管理着所有与package相关的工作,常见的比如安装、卸载应用、信息查询等工作,主要完成以下核心功能
1.解析AndroidManifest.xml清单文件,解析清单文件中的所有节点信息
2.扫描本地文件,主要针对apk,主要是系统应用、本地安装应用等。
实现功能需求:
我这里用了简单的方法在InstallPackageHelper.java中增加白名单接口,实现设置白名单和获取白名单,接下来在InstallPackageHelper中的安装app的方法中判断是否是白名单的app,然后确定是否让安装从而实现功能

三、代码实战

1.先导入所需要的包

//add LQX
import android.text.TextUtils;
import java.util.Arrays;
import java.util.List;
//add LQX

有些Android13是没有android.provider.Settings.System定义的,就需要多加一个:

import android.provider.Settings

2.添加获取白名单方法

//add LQXprivate boolean isWhiteListApp(String packagename){String installWhiteApp = android.provider.Settings.System.getString(mContext.getContentResolver(), "install_white_app");if (TextUtils.isEmpty(installWhiteApp)) {return false;}else{String[] split = installWhiteApp.split(",");List<String> installWhiteAppList = Arrays.asList(split);if (installWhiteAppList.contains(packagename)) {return true;}else{return false;}}}
//add LQX

3.添加限制白名单方法

在preparePackageLI(InstallArgs args, PackageInstalledInfo res)中添加:

        try (PackageParser2 pp = mPm.mInjector.getPreparingPackageParser()) {parsedPackage = pp.parsePackage(tmpPackageFile, parseFlags, false);AndroidPackageUtils.validatePackageDexMetadata(parsedPackage);} catch (PackageManagerException e) {throw new PrepareFailure("Failed parse during installPackageLI", e);} finally {Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);}//add LQXif(!isWhiteListApp(parsedPackage.getPackageName())){Log.d("InstallPackageHelper",parsedPackage.getPackageName()+" is does not instant app");throw new PrepareFailure(INSTALL_FAILED_INTERNAL_ERROR,"app is not in the WhiteList.packageName");}//add LQX// Instant apps have several additional install-time checks.

4.上层使用

Settings.System.putString(mContext.getContentResolver(), "install_white_app","com.LQX.systemproperties,com.LQX");

多个包名用逗号隔开

PS:查看当前白名单

settings get system install_white_app

总结

以上就是安卓13的应用安装白名单以及接口教程。

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

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

相关文章

如何动态渲染HTML内容?用v-html!

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【AcWing】蓝桥杯集训每日一题Day26|分解质因数|试除法|3377.约数的个数(C++)

3377.约数的个数 3377. 约数的个数 - AcWing题库难度&#xff1a;简单时/空限制&#xff1a;1s / 64MB总通过数&#xff1a;3529总尝试数&#xff1a;6834来源&#xff1a;清华大学考研机试题算法标签数学知识约数试除法因式分解 题目内容 输入 n 个整数&#xff0c;依次输出…

Ceph学习 -8.认证管理-用户基础

文章目录 1.用户基础1.1 基础知识1.2 简单实践1.3 小结 1.用户基础 学习目标&#xff1a;这一节&#xff0c;我们从基础知识、简单实践、小结三个方面来学习。 1.1 基础知识 简介 Ceph集群管理员能够直接在Ceph集群中创建、更新和删除用户 注意&#xff1a;创建用户时&#x…

计算机网络知识等汇总补充

计算机网络知识汇总补充 一、四次挥手1、为什么TCP要等待2MSL2、如果说一个系统中&#xff0c;有大量的time_wait和close_wait&#xff0c;会是什么原因&#xff1f; 二、你是怎么解决粘包问题&#xff1f;三、你觉得哪些场景适合redis四、redis的持久化策略五、你会怎么保证my…

4-云原生监控体系-Grafana-基本使用

1. 介绍 使用Grafana&#xff0c;您可以通过漂亮、灵活的仪表板创建、探索和共享所有数据。查询、可视化、提醒和理解您的数据&#xff0c;无论数据存储在何处。 图片出处&#xff1a; https://grafana.com/grafana/ 官方网站 2. 界面介绍 Connections 可以配置数据源&#x…

自动驾驶感知场景挖掘

目录 前言 1. 目标检测与跟踪 2. 语义分割 3. 环境建模 4. 场景理解与预测 5. 异常检测与处理 总结 前言 自动驾驶感知场景挖掘是指利用传感器和算法技术&#xff0c;对车辆周围的环境进行实时监测和理解。这种技术可以识别和分析道路、车辆、行人、交通标志等各种元素…

php-redis windows ,pecl 已经不维护了,解决方案:php 8.2 | 8.3+ redis extension windows

从论坛上pecl 已经不维护了&#xff0c;直接让大家到ci 去下载 https://stackoverflow.com/questions/76496488/redis-dll-not-found-for-php8-2/76496489#76496489 让我们找最新的一次commit &#xff0c;然后又action 构建&#xff0c;再下载&#xff0c;这样的话也好&#…

Redis从入门到精通(十三)Redis分布式缓存(一)RDB和AOF持久化、Redis主从集群的搭建与原理分析

文章目录 第5章 Redis分布式缓存5.1 Redis持久化5.1.1 RDB持久化5.1.1.1 执行时机5.1.1.2 bgsave原理 5.1.2 AOF持久化5.1.2.1 AOF原理5.1.2.2 AOF配置5.1.2.3 AOF文件重写 5.1.3 RDB和AOF的对比 5.2 Redis主从5.2.1 搭建主从结构5.2.2 主从数据同步原理5.2.2.1 全量同步5.2.2.…

集群开发学习(一)(安装GO和MySQL,K8S基础概念)

完成gin小任务 参考文档&#xff1a; https://www.kancloud.cn/jiajunxi/ginweb100/1801414 https://github.com/hanjialeOK/going 最终代码地址&#xff1a;https://github.com/qinliangql/gin_mini_test.git 学习 1.安装go wget https://dl.google.com/go/go1.20.2.linu…

【Ubuntu】 Github Readme导入GIF

1.工具安装 我们使用 ffmpeg 软件来完成转换工作1.1 安装命令 sudo add-apt-repository ppa:jonathonf/ffmpeg-3sudo apt-get updatesudo apt-get install ffmpeg1.2 转换命令 &#xff08;1&#xff09;直接转换命令&#xff1a; ffmpeg -i out.mp4 out.gif(2) 带参数命令&…

泛微E-Cology ProcessOverRequestByXml 任意文件读取漏洞复现

0x01 产品简介 泛微协同管理应用平台E-Cology是一套兼具企业信息门户、知识文档管理、工作流程管理、人力资源管理、客户关系管理、项目管理、财务管理、资产管理、供应链管理、数据中心功能的企业大型协同管理平台。 0x02 漏洞概述 泛微e-cology某处功能点最初针对用户输入…

【洛谷 P4017】最大食物链计数 题解(深度优先搜索+动态规划+邻接表+记忆化搜索+剪枝)

最大食物链计数 题目背景 你知道食物链吗&#xff1f;Delia 生物考试的时候&#xff0c;数食物链条数的题目全都错了&#xff0c;因为她总是重复数了几条或漏掉了几条。于是她来就来求助你&#xff0c;然而你也不会啊&#xff01;写一个程序来帮帮她吧。 题目描述 给你一个…

K8S之资源管理

关于资源管理&#xff0c;我们会从计算机资源管理&#xff08;Computer Resources&#xff09;、服务质量管理&#xff08;Qos&#xff09;、资源配额管理&#xff08;LimitRange、ResourceQuota&#xff09;等方面来进行说明 Kubernetes集群里的节点提供的资源主要是计算机资源…

ChatGPT与学术论文:提升写作效率的最佳工具

ChatGPT无限次数:点击直达 ChatGPT与学术论文&#xff1a;提升写作效率的最佳工具 在当今信息爆炸的时代&#xff0c;如何高效地撰写学术论文成为许多学术写作者面临的挑战之一。随着人工智能技术的发展&#xff0c;ChatGPT成为了一个极具潜力的工具&#xff0c;能够帮助写作者…

Node.js环境WebSocket示例

server.js&#xff1a; const WebSocket require(ws);const wss new WebSocket.Server({ port: 3000 });wss.on(connection, function connection(ws) {console.log(客户端已连接);ws.on(message, function incoming(message) {console.log(收到客户端消息:, message);ws.se…

Kali安全

基础配置 $ ip a s # 查看网络IP地址&#xff0c;本例中查看到的是192.168.88.40 $ sudo systemctl start ssh # 启ssh服务&#xff0c;弹出的窗口输入密码kali $ sudo systemctl enable ssh # 设置ssh服务开机自启 [rootmyhost ~]# ssh kali192.168.88.40 nmap…

SuperGluePretrainedNetwork调用接口版本(两个版本!)

本脚本是一个基于Python的应用&#xff0c;旨在演示如何使用SuperGlue算法进行图像之间的特征匹配。SuperGlue是一个强大的特征匹配工具&#xff0c;能够在不同的图像之间找到对应的关键点。这个工具尤其适用于计算机视觉任务&#xff0c;如立体视觉、图像拼接、对象识别和追踪…

0基础刷图论最短路 2(从ATcoder 0分到1800分)

AT最短路刷题2&#xff08;本文难度rated 1000~ 1200&#xff09; 题目来源&#xff1a;Atcoder 题目收集&#xff1a; https://atcoder-tags.herokuapp.com/tags/Graph/Shortest-Path &#xff08;里面按tag分类好了Atcoder的所有题目&#xff0c;类似cf&#xff09; &#x…

RN封装三角形组件(只支持上下箭头)

import React from react; import { View, StyleSheet } from react-native;const Triangle ({ direction, width, height, color }) > {// 根据方向选择三角形的样式const triangleStyle direction up? {borderTopWidth: 0,borderBottomWidth: height,borderLeftWidth: …

docker完美安装分布式任务调度平台XXL-JOB

分布式任务调度平台XXL-JOB 1、官方文档 自己看 https://www.xuxueli.com/xxl-job/#1.1%20%E6%A6%82%E8%BF%B0 2、使用docker部署 本人使用的腾讯云&#xff0c;安装docker暴露一下端口&#xff0c;就很舒服的安装这个服务了。 docker pull xuxueli/xxl-job-admin:2.4.03…