Android 请求root权限实现静默安装

这几天在做一个新的功能,需要用到静默安装,所以在网上找了一些静默安装的资料就在这里记录一下吧。其实实现静默安装的原理就是请求Android手机的root权限,通过执行Linux命令来安装APK到手机系统,其实代码不是很多,就在这里列一下吧,以后用的时候可以直接翻出来:

 1     public class MyThread extends Thread {
 2         private String path;
 3
 4         public MyThread(String path) {
 5             // TODO Auto-generated constructor stub
 6             this.path = path;
 7         }
 8
 9         @Override
10         public void run() {
11             // TODO Auto-generated method stub
12             super.run();
13
14             Process process = null;
15             OutputStream out = null;
16             InputStream in = null;
17
18             try {
19                 process = Runtime.getRuntime().exec("su");
20                 out = process.getOutputStream();
21
22                 out.write(("pm install -r " + path + "\n").getBytes());
23                 in = process.getInputStream();
24                 int len = 0;
25                 byte[] bs = new byte[256];
26
27                 while (-1 != (len = in.read(bs))) {
28                     String state = new String(bs, 0, len);
29                     if (state.equals("Success\n")) {
30
31                         Message m = new Message();
32                         m.arg1 = 1;
33                         DownLoadService.this.myHandler.sendMessage(m);
34
35                     }
36                 }
37             } catch (IOException e) {
38                 // TODO Auto-generated catch block
39                 e.printStackTrace();
40
41             }
42         }
43     }

其主要步骤为:

1.执行Android手机的su命令,如果手机已经root过了,一般情况下Android手机会有一个提示框,提示你是否给予root权限,

2.如果Android获得了root权限并且同意该应用的权限,则调用pm命令进行安装

3.安装完成后可以通过读取命令的输出流来判断应用是否安装成功,一般会获得一个“success”的字符换

出现的问题:

1.如果用户拒绝授予root权限,在这里没有办法正确判断

2.如果在用户拒绝授予root权限的情况下,读取起错误流可以获得失败的判断。但是在读取了起错误流的情况下,如果用户授予其root权限,则不能正常执行安装操作

目前这两个问题还不知道怎么判断,希望有做过的朋友指点一下

Http下载APK文件,具体代码如下:

 1     HttpGet httpGet = new HttpGet(url);
 2             try {
 3                 HttpResponse httpResponse = new DefaultHttpClient()
 4                         .execute(httpGet);
 5
 6                 if (httpResponse.getStatusLine().getStatusCode() == 200) {
 7                     InputStream is = httpResponse.getEntity().getContent();
 8                     // 开始下载apk文件
 9                     FileOutputStream fos = new FileOutputStream(downloadPath
10                             + "/" + name+".apk");
11                     byte[] buffer = new byte[8192];
12                     int count = 0;
13                     while ((count = is.read(buffer)) != -1) {
14                         fos.write(buffer, 0, count);
15                     }
16                     fos.close();
17                     is.close();
18                     Log.d(TAG, "apk path = " + downloadPath + "/" + name+".apk");
19
20                     final String path = downloadPath + "/" + name+".apk";
21
22                     timer = new Timer();
23                     timer.schedule(new TimerTask() {
24                         @Override
25                         public void run() {
26                             // TODO Auto-generated method stub
27
28                             Message m = new Message();
29                             m.arg1 = 2;
30                             Bundle bundle = new Bundle();
31                             bundle.putString("path", path);
32                             m.setData(bundle);
33                             DownLoadService.this.myHandler.sendMessage(m);
34                         }
35                     }, timeOut);
36
37                     new MyThread(path).start();
38                 }
39             } catch (Exception e) {
40             }

Android 请求root权限实现静默安装,布布扣,bubuko.com

时间: 2024-08-09 02:18:51

Android 请求root权限实现静默安装的相关文章

android请求root权限

应用获取Root权限的原理:让应用的代码执行目录获取最高权限.在Linux中通过chmod 777 [代码执行目录] //请求root权限    public static boolean upgradeRootPermission(String pkgCodePath) {          Process process = null;          DataOutputStream os = null;          Boolean resBoolean;        try {

关于安卓root过手机静默安装与卸载

用到一个工具类AndroidCommon  详细了解地址:http://www.open-open.com/lib/view/open1385174381198.html   ,其中为我们提供了root后静默安装的工具类PackageUtils,其中包含安装与卸载. 走下思路,首先静默安装要用到adb命令,所以手机必须root(至于360手机助手静默安装,无需root也可以静默安装,具体我也不清楚,哪位大牛清楚希望可以探讨下),在adb命令中执行pm install -r即可,具体可以参考And

关于root 关于实现静默安装

(文章最初写在有道笔记里面,所以排版不是很好,请原谅) 首先说一下静默安装,经过10天左右的研究,大概有如下几种方法: 一. 我们平时开发打包后,我们的ide(包括eclipse idea as )  都会给我们自动安装到手机上.那么很多手机并没有显示安装界面,当然也有部分手机是他妈的,做了底层的binder,这里还是会显示出来安装界面. 这种方法是通过命令的方式,adb shell命令的方式只有连接电脑才能实现.而普通的应用就只能通过root权限,否则没法执行一些特殊的adb命令.   但是问

非[无]root权限 服务器 下安装perl以及perl模块--转载

转载自http://www.zilhua.com 在本博客中,所有的软件安装都在服务器上,且无root权限.理论上适合所有的用户. 我的安装目录 cd /home/zilhua/software 1.在官方网站下载新版本的源码包: http://www.perl.org/get.html,版本自己选择,我下载的是perl-5.18.0.tar.gz 2.解压 tar zxvf perl-5.18.0.tar.gz 3.进入解压目录 cd /home/zilhua/software/perl-5.

Android 获取 root权限

在进行android 开发的时候,经常用真机进行调试,有时候需要把手机中的sqlite数据复制出来.这时候就需要获取手机的root权限.通过 adb shell 命令可以获取权限. 1. 运行cmd 通过cd命令到android sdk/tools目录,输入adb shell 输入 su 输入chmod -R 777 /data/xxx.xxx.xx  即可

Debian普通用户获取root权限|sudo的安装与配置

Debian系统的普通用户需要安装软件时,往往会收到“Permission denied”的提示,这时候需要root权限.那么如何在不登陆超级管理员账户的前提下拥有root权限呢?对于大多数Linux系统来说,我们可以通过“sudo”命令来获取root权限,或者通过“su”登陆超级管理员账户来进行各种需要root权限的操作. 然而,Debian系统好像默认不安装sudo,所以下面将讲解“如何安装sudo及配置其sudoers文件” 首先登陆超级管理员账户,在 Terminal 命令行内输入 su

转:Android 获取Root权限

来自:http://blog.csdn.net/twoicewoo/article/details/7228940 import java.io.DataOutputStream; import android.app.Activity; public class MyTestPri extends Activity{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); //*

Android 无需root实现apk的静默安装

转载请注明出处:http://blog.csdn.net/yyh352091626/article/details/50533137 Android的静默安装似乎是一个很有趣很诱人的东西,但是,用普通做法,如果手机没有root权限的话,似乎很难实现静默安装,因为Android并不提供显示的Intent调用,一般是通过以下方式安装apk: Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFi

Android静默安装实现方案,仿360手机助手秒装和智能安装功能

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/47803149 之前有很多朋友都问过我,在Android系统中怎样才能实现静默安装呢?所谓的静默安装,就是不用弹出系统的安装界面,在不影响用户任何操作的情况下不知不觉地将程序装好.虽说这种方式看上去不打搅用户,但是却存在着一个问题,因为Android系统会在安装界面当中把程序所声明的权限展示给用户看,用户来评估一下这些权限然后决定是否要安装该程序,但如果使用了静默安装的方式,也就没