Android-Framework 不允许应用商场下载的应用安装,adb 、pm 可以正常安装

一、环境

高通865 Android10

二、情景

从framework层禁止应用商场下载的应用安装,adb 、pm 可以正常安装

三、代码实现

frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/InstallStart.java
@@ -35,6 +35,7 @@ import android.os.Build;import android.os.Bundle;import android.os.RemoteException;import android.util.Log;
+import android.provider.Settings;/*** Select which activity is the first visible activity of the installation and forward the intent to
@@ -46,10 +47,23 @@ public class InstallStart extends Activity {private static final String DOWNLOADS_AUTHORITY = "downloads";private IPackageManager mIPackageManager;private boolean mAbortInstall = false;
+    int installState = 0;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);
+		installState = Settings.Global.getInt(getContentResolver(), "installState", 0);
+		if(installState == 0){
+			finish();
+			return;	
+		}
+
+		Settings.Global.putInt(getContentResolver(), "installState", 0);
+
+
+mIPackageManager = AppGlobals.getPackageManager();Intent intent = getIntent();String callingPackage = getCallingPackage();
frameworks/base/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
@@ -246,15 +246,6 @@ public class PackageInstallerActivity extends AlertActivity {}private void initiateInstall() {
-        Log.d(TAG," initiateInstall uid : " + Process.myUid()/100000 );
-        if((Process.myUid()/100000) != Process.ROOT_UID
-            && (Process.myUid()/100000) != Process.SHELL_UID){
-			return;
-        }
-
-String pkgName = mPkgInfo.packageName;// Check if there is already a package on the device with this name// but it has been renamed to something else.

 

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

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

相关文章

kubesphere 使用docker kubesphere 使用教程

1. 在centos上的安装流程 1.1 安装需要的环境 yum install -y socat conntrack ebtables ipset curl1.2 下载KubeKey #电脑必须可以访问github,很重要。不然安装过程会出问题 curl -sfL https://get-kk.kubesphere.io | VERSIONv1.2.1 sh - chmod x kk1.3 开始安…

如何链接未被使用的符号

如何链接未被使用的符号 我们知道,在ld链接静态库过程中,通常只有被使用到的符号才回被链接进可执行文件中。 而在某些场景中,我们希望在链接的时候也能把未使用的符号也给链接进来。 在ext/mylib.h文件中声明了一个add函数和一个Register…

DistributedDataParallel数据不均衡

背景 在使用 DistributedDataParallel 进行数据并行训练时,每次反向传播都需要执行 all_reduce 操作以同步各个进程的梯度。all_reduce 需要进程组中的所有进程参与,如果某一个进程没有执行 all_reduce(一个进程的输入较其他进程少&#xff…

软件测试(五)自动化 selenium

文章目录 自动化测试单元测试:单元测试:UI自动化 selenium工具定义特点:原理:seleniumjava环境搭建SeleniumAPI获取测试结果:添加等待浏览器操作键盘事件鼠标事件多层框架/窗口定位下拉框处理弹窗处理上传文件操作关闭…

Unity Editor 打包指定资源(AssetBundle)和加载指定资源

前言: 一般用于ui资源打包和加载,代码比较简单没什么好说的,直接上代码。 打包代码: [MenuItem("Assets/打包指定的预设")]public static void BuildAsset() {var selectObject Selection.activeObject;if (selectObje…

怎样才能去除视频中的背景音乐,保留人声?

做视频剪辑,二次创作的朋友,需要去除视频中的背景音乐,保留人声;或者去除人声,保留背景音乐。如果请身边做视频的朋友帮忙,可有时不能沟通到位,完成后的效果并不是很理想,就很尴尬了…

26. 通过 cilium pwru了解网络包的来龙去脉

pwru是一种基于eBPF的工具,可跟踪Linux内核中的网络数据包,并具有先进的过滤功能。它允许对内核状态进行细粒度检查,以便通过调试网络连接问题来解决传统工具(如iptables TRACE或tcpdump)难以解决甚至无法解决的问题。在本文中,我将介绍pwru如何在不必事先了解所有内容的…

低代码助力软件开发

低代码开发工具正在日益变得强大,它正不断弥合着前后端开发之间的差距。对于后端来说,基于低代码平台开发应用时,完全不用担心前端的打包、部署等问题,也不用学习各种框架(Vue、React、Angular等等)&#x…

Mysql中的RR 隔离级别,到底有没有解决幻读问题

Mysql 中的 RR 事务隔离级别,在特定的情况下会出现幻读的问题。所谓的幻读,表示在同一个事务中的两次相同条件的查询得到的数据条数不一样。 在 RR 级别下,什么情况下会出现幻读 这样一种情况,在事务 1 里面通过 update 语句触发当…

一款简单漂亮的WPF UI - AduSkin

前言 经常会有同学会问,有没有好看简单的WPF UI库推荐的。今天就给大家推荐一款简单漂亮的WPF UI,融合多个开源框架组件:AduSkin。 WPF是什么? WPF 是一个强大的桌面应用程序框架,用于构建具有丰富用户界面的 Windo…

大模型基础——大模型范式

大模型背后的范式 整个预训练语言模型的使用范式: 对于预训练模型,最核心的要素是从无标注的数据中去学习,通过自监督的一些任务去做预训练,得到丰富的知识。在具体的应用中,会引入一些任务相关的数据,去调…

C++学习之多态详解

目录 多态的实现 例题 重载 重写 重定义的区别 抽象类 多态实现原理 多态的实现 C中的多态是指,当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。多态意味着调用成员函数时,会根据调用函数的对象的类型来执…

万能DIY预约小程序源码系统 上门预约服务小程序搭建 适用于各种预约场景 自由DIY功能模块

在这个快节奏的时代,预约服务已经成为了我们日常生活的一部分。从看病挂号到餐厅预订,从美发美容到家政服务,预约已经深入到了各个领域。然而,传统的预约方式存在着许多不便,如电话预约、在线填写表格等,不…

MyBatis Generator - 快速生成 实体类 和 映射文件

目录 一、MyBatis Generator 的使用 1.1、生成类和映射文件 1.1.1、在 pom.xml 中引入依赖 1.1.2、根据 configurationFile 标签中配置的路径 创建 generatorConfig.xml 文件 1.1.3、自动生成类 和 映射文件 1.1.4、在 Insert 标签中添加获取主键值的选项 1.1.5、扫描配置…

Linux编译器-gcc/g++使用函数库

【Linux】系列文章目录 【Linux】基础常见指令:http://t.csdn.cn/hwLPb 【Linux】基本权限:http://t.csdn.cn/faFZg 【Linux】软件包管理器yum与环境开发工具vim:http://t.csdn.cn/LEqkm 目录 【Linux】系列文章目录 前言 一、gcc选项总…

Android Update Engine 分析(二十四)制作降级包时,到底发生了什么?

文章目录 0. 导读1. 关于升级和降级的本质2. Android 如何制作降级包?3. Android 降级流程全追踪1. 使用 "--downgrade" 选项制作降级包2. OPTIONS.downgrade = True 选项3. OPTIONS.wide_user_data = True 选项4. 制作差分包对时间戳的检查5. 总结6. 思考题7. 其它…

Arthas(阿尔萨斯):阿里巴巴开源的线上问题诊断工具

背景 通常,本地开发环境无法访问生产环境。如果在生产环境中遇到问题,则无法使用 IDE 远程调试。更糟糕的是,在生产环境中调试是不可接受的,因为它会暂停所有线程,导致服务暂停。 开发人员可以尝试在测试环境或者预发环境中复现生产环境中的问题。但是,某些问题无法在不同…

[C++]类型转换

一、C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与 接收返回值类型不一致时,就需要发生类型转化。 C语言中总共有两种形式的类型转换:隐式类型转换和显式…

VMware克隆虚拟机

VMware克隆虚拟机: https://blog.csdn.net/wisdom_futrue/article/details/128553427

python astra相机驱动问题

报错问题: openni.utils.OpenNIError: (OniStatus.ONI_STATUS_ERROR, bDeviceOpen using default: no devices found, None) 解决办法: 1、从sdk中拷贝文件 2、修改openni源码 3、执行测试程序 from openni import openni2 import numpy as np impor…