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实现静默安装相关推荐

  1. mysql 必须安装php_非root模式下安装mysql php小记

    假设你的home目录为/home/work mysql-server 安装 1. 下载mysql.tar.gz wget http://dev.mysql.com/get/Downloads/MySQ ...

  2. 非ROOT实现静默安装的一些思考与体会,AIDL获取IPackageManager,反射ServiceManager,系统签名

    非ROOT实现静默安装的一些思考与体会,AIDL获取IPackageManager,反射ServiceManager,系统签名 最近自家的系统要做一个升级服务,里面有三个功能,第一个是系统升级,也就是 ...

  3. 安装cuda 非root_linux非root用户下安装软件,搭建生产环境

    之前的用实验室的服务器,因为某些原因,使用的用户没有root权限.linux的非root用户很多软件无法安装,非常的不方便.我的方法是使用brew来代替系统的包管理工具.brew是最先用在mac上的包 ...

  4. linux系统下安装pfam数据库中hmmer软件以及python3非root用户的安装

    linux系统下安装pfam数据库中hmmer软件以及python3非root用户的安装 http://hmmer.org/从该链接下载源,其中有Userguide.pdf 下载,解压缩并切换目录 之 ...

  5. linux是不是在根目录下安装的软件其它用户就可以使用,[转载]Linux下非root用户如何安装软件...

    [转载]Linux下非root用户如何安装软件 这是本人遇到的实际问题,之前用到的所有机器,无论是自己的PC还是云服务器,root权限都是妥妥的,但是现在发现实验室的服务器原来自己并没有root权限2 ...

  6. Linux 下非 root 用户 Conda 安装生物信息 R 软件包 MetaboAnalystR 演示

    (首发地址:学习日记 https://www.learndiary.com/2022/06/metaboanalystr/  ) 前些天演示了一下 Linux 下非 root 用户 Conda 安装生 ...

  7. nginx在安装时使用root权限进行安装并启用,如何更改为普通用户权限运行nginx(亲测)

    目录 前言: 步骤一:先查询nginx相关信息 1.查询操作系统版本:cat /etc/redhat-release 2.查询nginx安装路径:如果不知道nginx安装目录,使用:find / -n ...

  8. CentOS 7安装MySQL 非yum或rpm安装

    CentOS 7安装MySQL 非yum或rpm安装 本文使用的数据库版本是MySQL 5.7.26(tar.gz) 本文既不通过rpm,也不通过yum安装mysql. 通过包名可看出MySQL包的区 ...

  9. 非root用户安装python_zzw_非root用户安装python3.5

    目的:不想改变linux 自带的python,只想要用特定的非root用户运行特定版本的python 1.进入非root用户 2.新建一个python3.5的安装目录 [a4_csbdc@bdc816 ...

  10. zzw原创_非root用户下安装nginx

    想自己安装nginx,又不相用到root用户. 非root用户下(本文为用户bdctool)来ngnix安装,要依赖pcre库.zlib库等, 1. 下载依赖包:下载地址 pcre(www.pcre. ...

最新文章

  1. 基于区域的CNN(R-CNN)
  2. (MYSQL学习笔记4)事务的开启、提交、回滚
  3. ajax get 缓存 ie,Ajax异步同步请求被IE缓存的问题解决方法(get方式)
  4. 【转】一分钟读懂互联网广告竞价策略GFP+GSP+VCG
  5. 安装Exchange Server 2013
  6. uni-app 模拟机调试环境搭建
  7. 3d object是什么文件_[单目3D目标检测论文笔记] 3D Bounding Box Estimation
  8. 线性回归和广义线性回归
  9. Java从入门到放弃系列
  10. java 蔡学镛_蔡学镛谈“Linux + Java 会得到什么”
  11. k8s部署nacos2.0.3出现tried: server is DOWNnow, detailed error message: Optional[Distro protocol XXXX
  12. HTML实现舔狗日记
  13. rac archiving
  14. dell服务器设置CPU高性能,DellR720服务器提示cpu1 internal error (IERR)
  15. 正确使用pageX、pageY、offsetLeft、offsetTop
  16. C#毕业设计——基于C#+asp.net+SQL Server的电子书城系统设计与实现(毕业论文+程序源码)——电子书城系统
  17. opencv 锐化 java_Java Opencv 实现锐化
  18. ethercat的linuxcnc解析器-关于lcec_conf和lcec.so
  19. unity2d游戏开发系列教程:一、环境安装
  20. 阿里又一员猛将出走江湖?原钉钉CEO“无招”将离职创业,新公司被投资方疯抢!阿里辟谣:人还没走!...

热门文章

  1. 关于ERP生产制造系统实施的几点看法
  2. android tabbar框架,Android 自定义tabbar 用viewPage实现
  3. Java实例化对象的几种方式
  4. 替换字符串中全部斜杠
  5. 单片机C51之1:流水灯
  6. 弱监督学习-snorkel
  7. POJ-3744 Scout YYF I 概率DP
  8. 思维模型 时间管理矩阵
  9. Android PackageManager详解
  10. java实现网页结构分析,网页列表发现