Android静默安装一(Root版)

	近期开发上线一个常驻app,项目已上线,今天随笔记录一下静默安装相关内容。我分三篇静默安装(root版)、静默安装(无障碍版)、监听系统更新、卸载、安装。先说说我的项目需求:要求app一直运行,通过指令进行自动安装并在安装成功后自动开启。行业人事都了解,非root权限不可能无声无息的完成此要求。我分两步完成了此功能开发。今天记录一下root权限下实现静默安装app。本文使用RunTime执行pm install安装指定文件。一、获取权限

```javapublic class SilentInstall {/*** root权限下,静默安装apk* @param apkPath 目标文件* @return true 安装成功; false 安装失败*/public boolean install(String apkPath) {boolean result =false;DataOutputStream dataOutputStream =null;BufferedReader errorStream =null;try{// 申请su权限Process process = Runtime.getRuntime().exec("su");dataOutputStream =new DataOutputStream(process.getOutputStream());// 执行pm install命令String command ="pm install -r "+ apkPath +"\n";dataOutputStream.write(command.getBytes(Charset.forName("utf-8")));dataOutputStream.flush();dataOutputStream.writeBytes("exit\n");dataOutputStream.flush();process.waitFor();errorStream =new BufferedReader(new InputStreamReader(process.getErrorStream()));String msg ="";String line;// 读取命令的执行结果while((line = errorStream.readLine()) !=null) {msg += line;}// 如果执行结果中包含Failure字样就认为是安装失败,否则就认为安装成功if(!msg.contains("Failure")) {result =true;}}catch(Exception e) {Log.e("install",e.getMessage(),e);}finally{try{if(dataOutputStream !=null) {dataOutputStream.close();}if(errorStream !=null) {errorStream.close();}}catch(IOException e) {Log.e("install",e.getMessage(),e);}}return result;}}

调用

				if (!new SilentInstall().install(absolutePath)) {// 调用系统安装方法Intent install = new Intent(Intent.ACTION_VIEW);Uri uri = Uri.fromFile(new File(apkPath));install.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);install.setDataAndType(uri,"application/vnd.android.package-archive");context.startActivity(install);}

有root权限时,使用静默安装。没有权限时使用系统安装方法。
但是使用系统安装方法,明显时不符合项目需要的。所以我使用无障碍服务,辅助系统安装方法完成无操作安装。

下篇使用无障碍服务进行无操作安装应用。欢迎各位同学指导……

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

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

相关文章

贵价茶叶产区成谜,竹叶青茶是“行业黑马”还是“韭菜镰刀”?

撰稿|行星 来源|贝多财经 近日,央视“315”晚会曝光了自诩“高端商务白酒”的听花酒。这款白酒号称拥有提升免疫力、改善睡眠、保障男性功能等多种保健功能,标准装售价5860元,精品装售价更是达到5.86万元,昂贵程度令人瞠目结舌。…

为什么c++要在c语言的基础上添加命名空间?命名空间如何定义和使用?

1、为什么c要在c语言上增添命名空间的概念 在c语言中,定义的全局变量与库中相同,或者和别人代码结合的时候可能存在相同的命名,此时就会命名冲突。c语言是没有办法很好的解决这个问题的。 假设这样一种情况,当一个班上有两个名叫…

jmeter的函数助手使用方法

如某个上传文件接口,一个文件只能同时被一个接口调用,如果被并发同时调用就会报错 创建多个测试文件 比如50并发,创建更多的文件防止并发多时随机数生成重复 生成随机数函数 工具–函数助手-选择random-输入范围(1-696&#…

网络学习:IPV6基础配置

目录 一、配置接口的全球单播地址 二、配置接口本地链路地址 三、配置接口任播地址 四、配置接口PMTU 配置静态PMTU: 配置动态PMTU: 五、接口配置IPV6地址示例: 一、配置接口的全球单播地址 全球单播地址类似于IPv4公网地址&#xff0…

前端 js 经典:数组常用方法总结

一:不改变原数组的方法 1. join 数组拼接 let arr [1, 2, 3]; // 默认拼接 arr.join(""); // 默认 , 拼接,返回:1,2,3 // 使用 - 拼接 arr.join("-"); // 返回:1-2-3 2. concat 尾部插入 let arr [1, 2…

Redis技术学习|实战项目记录|短信登录(重点:拦截器)+ Redis代替session存储用户登录信息

学习资料声明 黑马程序员的Redis学习视频:黑马程序员Redis入门到实战教程 需要用到的知识:linux(推荐韩顺平老师的教程,学到p30,创建好虚拟机和简单的几个命令就好。)SSM。SpringBoot。 还用到了MybatisPl…

富格林:合理规避虚假风险安全盈利

富格林悉知,黄金投资不仅具有强大的保值功能,其剧烈的市场变化也隐含着巨大的盈利潜力,吸引着众多投资者入市。但投资都会存在一定的风险,因此大家在投资的过程中要学习总结一些技巧,以便能在必要时帮助投资者规避虚假…

linux系统kubernetes容器检查和恢复机制

容器检查和恢复机制 容器检查和恢复机制命令模式探针http get方式探针POD 的恢复策略 容器检查和恢复机制 在kubernetes中,可以为容器定义一个健康探针,kubelet 就会根据这个 Probe 的返回值决定这个容器的状态,而不是直接以容器是否运行&…

5G里面NR,gNB,en-gNB,ng-eNB是什么意思

不得不提一个国际组织,叫国际电信联盟(ITU, International Telecommunication Union),简称国际电联。我们先看看国际电联的自我介绍: 国际电信联盟 『国际电联 (国际电信联盟) 是主管信息通信技术事务(ICT)的联合国机…

微信打卡小程序怎么做_用户的每日习惯培养神器

微信打卡小程序:你的每日习惯培养神器 在这个快节奏的现代社会,我们每天都在忙碌中度过,有时候甚至会忘记自己曾经立下的那些小目标、小习惯。然而,随着科技的不断发展,微信打卡小程序的出现,为我们的生活…

Apollo(阿波罗)配置中心

Apollo(阿波罗)配置中心: 采用分布式架构,它能够集中管理不同环境、不同集群的配置,配置修改后能够实时推送到应用端,有可视化界面 和 规范的权限,支持 版本管理、灰度发布、监控 等功能。 主要…

早期零撸项目,预注册即将截止, AI身份项目GenomeFi明牌空投教程

简介:GenomeFi基金会旨在用个人基因信息推动生物产业发展,他们通过AI大数据平台和区块链技术验证身份、保护个人信息、提升收入。GenomeFi和CLINOMICS(一家基于基因组学疾病早期诊断的领先公司)合作提供基因诊断、早期疾病检测、个…

朋友圈之于私域的意义

朋友圈作为社交媒体的一种,是品牌主进行私域流量营销的主要载体,具有推动产品销售、传播信息等多种作用。具体来说,朋友圈在私域中的意义可以体现在以下几个方面: 1. 传播信息:朋友圈可以成为品牌主向其潜在客户传递信…

面试算法-63-全排列

题目 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1: 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 解 class Solution {public List&l…

前端学习笔记|CSS基础

css学习 中文学习网站 https://www.w3school.com.cn/ 非语义化的标签 1.div 2.span 类型选择器 类型选择器有时也叫做“标签名选择器*”*或者是”元素选择器“,因为它在文档中选择了一个 HTML 标签/元素 类选择器 类选择器以一个句点(.&#xff…

Leetcode 202:快乐数

编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&#xff0c…

2024年运维相关面试题

SLA 关键词 负责系统的 SLA 代码维护、迭代更新,保证任务质量和交付及时性;推动提升服务的可靠性、可扩展性以及性能优化,保障系统 SLA为系统提供基础设施 SLA 保障 SLA保障:服务质量保障 sla 保障建设,目前一是将故…

代码随想录阅读笔记-字符串【重复的子字符串】

题目 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。 示例 1: 输入: "abab"输出: True解释: 可由子字符串 "ab" 重复两次构成。 示例 2: 输入: "aba…

爬虫入门系列-HTML基础语法

🌈个人主页:会编辑的果子君 💫个人格言:“成为自己未来的主人~” HTML基础语法 bs4解析比较简单,但是呢,首先你需要了解一丢丢的html知识,然后再去使用bs4去提取,逻辑和编写难度就会非常简…

【笔试】银行校招,信息科技岗 金融科技岗笔试准备方向

【笔试】银行校招,信息科技 & 金融科技岗笔试准备方向 文章目录 1、银行招聘流程(投递)2、笔试内容分析(笔试)3、真题题库(BOC)3.1 职业能力(行测)3.2 英语3.3 信息科…