`

静默安装实现方法

 
阅读更多
有时候我们需要软件实现静默安装,但是Android并未提供相应的API,然而我们知道命令行安装android的时候是不会提示用户的,所有要实现这个功能,我们就可以从执行命令行的方式实现。android提供的安装命令是
pm install package
ps : pm install /sdcard/android.apk
但是执行这个命令需要前提条件,需要是系统级应用或者具有ROOT权限。我们先介绍通过ROOT权限的方式执行。
1,通过获取ROOT权限静默安装APK
看代码:
new Thread() {
    public void run() {
    Process process = null;
    OutputStream out = null;
    InputStream in = null;
    try {
    // 请求root
    process = Runtime.getRuntime().exec("su");
    out = process.getOutputStream();
    // 调用安装
    out.write(("pm install -r " + currentTempFilePath + "\n").getBytes());
    in = process.getInputStream();
    int len = 0;
    byte[] bs = new byte[256];
    while (-1 != (len = in.read(bs))) {
    String state = new String(bs, 0, len);
    if (state.equals("Success\n")) {
       //安装成功后的操作
         }
       }
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (out != null) {
                out.flush();
                out.close();
            }
            if (in != null) {
                in.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  }
}.start();
当然也可以通过NDK实现,代码就不放了。
第二种方式,同样是通过pm命令实现,不用请求ROOT,但是需要系统的签名。这里附上模拟器的的签名,用这个签名的APK安装在模拟器上可以实现不请求ROOT而静默安装的效果。
//首先在manifest标签加入
android:sharedUserId="android.uid.system"
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

new Thread() {
    public void run() {
    Process process = null;
    InputStream in = null;
    try {
    // 请求root
    process = Runtime.getRuntime().exec("pm install -r " + currentTempFilePath + "\n");
    in = process.getInputStream();
    int len = 0;
    byte[] bs = new byte[256];
    while (-1 != (len = in.read(bs))) {
    String state = new String(bs, 0, len);
    if (state.equals("Success\n")) {
       //安装成功后的操作
         }
       }
    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        try {
            if (in != null) {
                in.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
  }
}.start();

分享到:
评论
1 楼 yxhloen01 2014-06-05  
只放debug.keystore但是没给密码啊。。。。。。  

相关推荐

    Android 静默安装实现方法

    主要介绍了Android 静默安装实现方法的相关资料,静默安装的方法,静默安装就是绕过安装程序时的提示窗口,直接在后台安装,需要的朋友可以参考下

    Android应用源码APK实现静默安装整套资料

    如果用过一些手机助手的朋友都知道,手机助手下载其他软件的更新程序后会自动静默更新。APK静默安装是指实现了在APK文件...压缩包里有两种实现apk静默安装的方法说明和详细的操作文档与源码。 涉及模块&技术 静默安装

    android应用的静默安装实现

    导入jar包。即可使用PackAgeManager的installPackage方法进行静默安装。注意复写回调来回馈安装结果。

    android应用后台安装,静默安装的代码实现方法

    android应用后台安装,静默安装的代码实现方法。以及编译出来的apk

    Android4.0静默安装方法和源码

    提供android系统静默安装的实现方法,提供基于android4.0的PackageInstaller修改,并且提供测试Demo。亲测通过!!

    Android实现静默安装的两种方法

    1、root权限静默安装实现 实现实际使用的是su pm install -r filePath命令。 核心代码如下: protected static void excuteSuCMD() { Process process = null; OutputStream out = null; I

    Android实现静默安装APK的两种方法.doc

    Android实现静默安装APK的两种方法.doc

    android静默安装的整套资料

    如果用过一些手机助手的朋友都知道,手机助手下载其他软件的更新程序后会自动静默更新。APK静默安装是指实现了在APK文件...压缩包里有两种实现apk静默安装的方法说明和详细的操作文档与源码。 涉及模块&技术 静默安装

    android6.0以上几种静默安装方法

    非root下 实现静默安装 多种方式。

    Android实现静默安装APK的两种方法

    android apk 的安装方式,看了这篇文档,希望对你有点帮助!

    Android静默安装Demo

    通过反射实现静默安装,卸载功能。Demo代码在Android6.0系统测试可以正常卸载,安装应用。Demo中除了通过反射方法外,还提供了其他两种方法安装,卸载应用。

    Android程序静默安装安装后重新启动APP的方法

     实现这个功能第一个想到的方法就是静默安装,由于广告机已经root,静默安装比较顺利,安装app的主要代码如下: /*  @pararm apkPath 等待安装的app全路径,如:/sdcard/app/app.apk **/ private static boolean ...

    Android 静默安装和智能安装的实现方法

    静默安装就是无声无息的在后台安装apk,没有任何界面提示。智能安装就是有安装界面,但全部是自动的,不需要用户去点击...下面脚本之家小编给大家介绍下Android 静默安装和智能安装的实现方法,感兴趣的朋友一起看看吧

    android实现静默安装与卸载的方法

    本文实例讲述了android实现静默安装与卸载的方法。分享给大家供大家参考。具体如下: 方法1:【使用调用接口方法,由于安装卸载应用程序的部分API是隐藏的,所以必须下载Android系统源码,在源码下开发并编译之后...

    Android静默 安装卸载应用程序文档

    内附apk 实现说明 是在linx系统环境下 源码下MM 编译实现方式

    Android静默安装和卸载

    在android设备root或者应用内置为系统应用时,可以实现静默安装和卸载。 PackageUtils.java中有提供了静默安装和卸载的方法。

Global site tag (gtag.js) - Google Analytics