Android 静默安装

有时候我们需要软件实现静默安装,但是Android并未提供相应的API,然而我们知道命令行安装android的时候是不会提示用户的,所有要实现这个功能,我们就可以从执行命令行的方式实现。android提供的安装命令是

  1. pm install package
  2. 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" 

    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(); 
时间: 2024-10-02 13:50:07

Android 静默安装的相关文章

绕过身份检测,破解Android SU(android静默安装)

由于Android底层是Linux内核,故了解了Linux的权限管理后就可以知道ROOT的原理,具体可以访问<Android系统权限和root权限>一文,而一般的Androd下的su命令只支持在ROOT用户和SHELL用户下才有权限让程序以root用户身份运行,其实看完Android源码下的system/extras/su/su.c代码即可清楚,而我们绕过了其中的当前运行用户判断来让所有的用户都可以将以自己身份运行的程序尝试去设置以root用户身份运行,即运行su命令不需判断运行程序的当前用户

android静默安装和智能安装(转)

Android 静默安装和智能安装的实现方法 http://blog.csdn.net/fuchaosz/article/details/51852442 Android静默安装实现方案,仿360手机助手秒装和智能安装功能 http://blog.csdn.net/guolin_blog/article/details/47803149 5.0以上 静默安装的安装包放在根目录下,如:Environment.getRootDirectory().toString()+"/xxx.apk"

Android 静默安装/后台安装&amp; Root permission

Android 静默安装/后台安装& Root permission 静默安装其实很简单,今天在网上找资料找半天都说的很复杂,什么需要系统安装权限.调用系统隐藏的api.需要系统环境下编译.需要跟systemUI同进程什么的.我不知道他们真的实现了静默安装实现方式,亲测效果跟豌豆荚一样,并且实现起来非常简单: 1.支持静默安装的机器必须Root,这个不需要我多讲了. 2.使用pm指令安装即可.     3.特别注意 PM指令不支持中文,也就说路径中有中文会导致安装失败! 关键代码如下: exec

Android 静默安装Apk

参考链接 android 静默安装 [Android]实现静默安装APK的两种方法

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

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

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

1 简介 最近研究了Android的静默安装和智能安装,于是写博客记录一下. 静默安装就是无声无息的在后台安装apk,没有任何界面提示. 智能安装就是有安装界面,但全部是自动的,不需要用户去点击. 首先强调两点: 静默安装必须要root权限 智能安装必须要用户手动开启无障碍服务 2 原理 静默安装.卸载的原理就是利用pm install命令来安装apk,pm uninstall 来卸载apk. 智能安装是利用android系统提供的无障碍服务AccessibilityService,来模拟用户点

Android静默安装和静默卸载

静默顾名思义就是静静的默默地,静默安装和静默卸载的意思也就是说在后台默默地安装和卸载. 最近的一个app应用分发的项目中app下载的模块,下载完成之后,用户可以通过这个app进行安装,为了提高用户的体验,我就加入了静默安装和卸载功能,然后还加入了使用am命令启动某个Activity. 这个项目中静默的方式实现代码如下: 首先判断是否有root权限,如果有利用静默方式,否则利用意图实现app安装和卸载操作. package com.example.test; import java.io.File

Android静默安装和静默卸载代码

静默顾名思义就是静静的默默地,静默安装和静默卸载的意思也就是说在后台默默地安装和卸载. 最近的一个app应用分发的项目中app下载的模块,下载完成之后,用户可以通过这个app进行安装,为了提高用户的体验,我就加入了静默安装和卸载功能,然后还加入了使用am命令启动某个Activity. 这个项目中静默的方式实现代码如下: 首先判断是否有root权限,如果有利用静默方式,否则利用意图实现app安装和卸载操作. 1 package com.example.test; 2 3 import java.i

Android 静默安装/后台安装

Android实现静默安装其实很简单,今天在网上找资料找半天都说的很复杂,什么需要系统安装权限.调用系统隐藏的api.需要系统环境下编译.需要跟systemUI同进程什么的.我不知道他们真的实现了静默安装没有,反正我按照他们的方式统统都失败了. 下面我来说说我的静默安装实现方式,亲测效果跟豌豆荚一样,并且实现起来非常简单: 1.支持静默安装的机器必须Root,这个不需要我多讲了. 2.使用pm指令安装即可.     3.特别注意 PM指令不支持中文,也就说路径中有中文会导致安装失败! 关键代码如