adb 静默安装_android 非root实现静默安装
Android高级开发交流群:484966421 。
微信公众号:oshome2015
在网上各种方法实现静默安装,但是大多数是采用方法是在root权限下,通过执行pm install 的方式去安装apk,但是很多情况下。获取root权限并不是很容易的。本文介绍一种非root情况下的一种静默安装方式,这种方式在智能电视运用的场景很多,很多例如当呗,沙发网等应用市场都是通过这种方式实现的非root权限的静默安装。
基本原理:
在应用程序内创建一个单独进程,执行adb install -r apkname.相当于在你的应用内部执行adb install 操作。这样为什么可以成功,有兴趣的同学可以百度一下adb的原理。后面的我也会详细分析一下adb原理,对此做一个完整的分析。
测试例子:
localRT=Runtime.getRuntime();
try{
localRT.exec("setprop persist.service.adb.enable 1").waitFor();
Process localProcess=localRT.exec("adb install -r "+packagename);
new StreamGobbler(localProcess,localProcess.getErrorStream(),"INFO").start();
result= localProcess.waitFor();
debug.LogE("result= " + result);
if(result==0){
return result;
}else{
debug.LogE(" silent install fail");
Process lp=localRT.exec("chmod -R 777 "+ Application.localFile);
....
}
catch(Exception e){
debug.LogE("install exception ="+e);
注意:在这儿用了StreamGobbler这个类处理localProcess的输出,主要原因是,如果不处理localProcess输出信息,程序会随机卡死这儿,你也无法确定是不是执行完成了。
class StreamGobbler extends Thread
{
InputStream is;
String type;
Process mP;
StreamGobbler(Process p,InputStream is, String type)
{
this.is = is;
this.type = type;
mP=p;
}
public void run()
{
try
{
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line=null;
while ( (line = br.readLine()) != null){
debug.LogV( type + " > " + line);
if(line.contains("error")){
mP.destroy();
}
}
} catch (IOException ioe)
{
ioe.printStackTrace();
}
}
}
adb 静默安装_android 非root实现静默安装相关推荐
- mysql 必须安装php_非root模式下安装mysql php小记
假设你的home目录为/home/work mysql-server 安装 1. 下载mysql.tar.gz wget http://dev.mysql.com/get/Downloads/MySQ ...
- 非ROOT实现静默安装的一些思考与体会,AIDL获取IPackageManager,反射ServiceManager,系统签名
非ROOT实现静默安装的一些思考与体会,AIDL获取IPackageManager,反射ServiceManager,系统签名 最近自家的系统要做一个升级服务,里面有三个功能,第一个是系统升级,也就是 ...
- 安装cuda 非root_linux非root用户下安装软件,搭建生产环境
之前的用实验室的服务器,因为某些原因,使用的用户没有root权限.linux的非root用户很多软件无法安装,非常的不方便.我的方法是使用brew来代替系统的包管理工具.brew是最先用在mac上的包 ...
- linux系统下安装pfam数据库中hmmer软件以及python3非root用户的安装
linux系统下安装pfam数据库中hmmer软件以及python3非root用户的安装 http://hmmer.org/从该链接下载源,其中有Userguide.pdf 下载,解压缩并切换目录 之 ...
- linux是不是在根目录下安装的软件其它用户就可以使用,[转载]Linux下非root用户如何安装软件...
[转载]Linux下非root用户如何安装软件 这是本人遇到的实际问题,之前用到的所有机器,无论是自己的PC还是云服务器,root权限都是妥妥的,但是现在发现实验室的服务器原来自己并没有root权限2 ...
- Linux 下非 root 用户 Conda 安装生物信息 R 软件包 MetaboAnalystR 演示
(首发地址:学习日记 https://www.learndiary.com/2022/06/metaboanalystr/ ) 前些天演示了一下 Linux 下非 root 用户 Conda 安装生 ...
- nginx在安装时使用root权限进行安装并启用,如何更改为普通用户权限运行nginx(亲测)
目录 前言: 步骤一:先查询nginx相关信息 1.查询操作系统版本:cat /etc/redhat-release 2.查询nginx安装路径:如果不知道nginx安装目录,使用:find / -n ...
- CentOS 7安装MySQL 非yum或rpm安装
CentOS 7安装MySQL 非yum或rpm安装 本文使用的数据库版本是MySQL 5.7.26(tar.gz) 本文既不通过rpm,也不通过yum安装mysql. 通过包名可看出MySQL包的区 ...
- 非root用户安装python_zzw_非root用户安装python3.5
目的:不想改变linux 自带的python,只想要用特定的非root用户运行特定版本的python 1.进入非root用户 2.新建一个python3.5的安装目录 [a4_csbdc@bdc816 ...
- zzw原创_非root用户下安装nginx
想自己安装nginx,又不相用到root用户. 非root用户下(本文为用户bdctool)来ngnix安装,要依赖pcre库.zlib库等, 1. 下载依赖包:下载地址 pcre(www.pcre. ...
最新文章
- 基于区域的CNN(R-CNN)
- (MYSQL学习笔记4)事务的开启、提交、回滚
- ajax get 缓存 ie,Ajax异步同步请求被IE缓存的问题解决方法(get方式)
- 【转】一分钟读懂互联网广告竞价策略GFP+GSP+VCG
- 安装Exchange Server 2013
- uni-app 模拟机调试环境搭建
- 3d object是什么文件_[单目3D目标检测论文笔记] 3D Bounding Box Estimation
- 线性回归和广义线性回归
- Java从入门到放弃系列
- java 蔡学镛_蔡学镛谈“Linux + Java 会得到什么”
- k8s部署nacos2.0.3出现tried: server is DOWNnow, detailed error message: Optional[Distro protocol XXXX
- HTML实现舔狗日记
- rac archiving
- dell服务器设置CPU高性能,DellR720服务器提示cpu1 internal error (IERR)
- 正确使用pageX、pageY、offsetLeft、offsetTop
- C#毕业设计——基于C#+asp.net+SQL Server的电子书城系统设计与实现(毕业论文+程序源码)——电子书城系统
- opencv 锐化 java_Java Opencv 实现锐化
- ethercat的linuxcnc解析器-关于lcec_conf和lcec.so
- unity2d游戏开发系列教程:一、环境安装
- 阿里又一员猛将出走江湖?原钉钉CEO“无招”将离职创业,新公司被投资方疯抢!阿里辟谣:人还没走!...