Android 静默升级,静默安装

      实现静默安装首先手机root权限或者是system 应用

         在Android 4.4版本中,静默升级代码如下


    // 静默安装,1-安装成功,或没有升级文件,2-升级安装出现异常,-1-程序异常
    public static int installBySlient(Context context, String filePath) {
        int result = 0;
        try {
            File file = new File(filePath);
            if (filePath == null || filePath.length() == 0
                    || (file = new File(filePath)) == null
                    || file.length() <= 0 || !file.exists() || !file.isFile()) {
                return 1;
            }

            String[] args = { "pm", "install", "-r", filePath };
            ProcessBuilder processBuilder = new ProcessBuilder(args);

            Process process = null;
            BufferedReader successResult = null;
            BufferedReader errorResult = null;
            StringBuilder successMsg = new StringBuilder();
            StringBuilder errorMsg = new StringBuilder();

            try {
                process = processBuilder.start();
                successResult = new BufferedReader(new InputStreamReader(
                        process.getInputStream()));
                errorResult = new BufferedReader(new InputStreamReader(
                        process.getErrorStream()));
                String s;

                while ((s = successResult.readLine()) != null) {
                    successMsg.append(s);
                }

                while ((s = errorResult.readLine()) != null) {
                    errorMsg.append(s);
                }
            } catch (IOException e) {
                e.printStackTrace();
                result = 2;
            } catch (Exception e) {
                e.printStackTrace();
                result = 2;
            } finally {
                try {
                    if (successResult != null) {
                        successResult.close();
                    }
                    if (errorResult != null) {
                        errorResult.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
                if (process != null) {
                    process.destroy();
                }
            }

            if (successMsg.toString().contains("Success")
                    || successMsg.toString().contains("success")) {
                result = 1;
            } else {
                result = 2;
            }

            logd("App升级信息:" + "successMsg:" + successMsg + ", ErrorMsg:" + errorMsg);
        } catch (Exception e) {
            result = -1;
        }
        return result;
    }

  但是在Android 7.0版本,使用这个方法会报空指针异常

   只需要修改一行代码

  String[] args = { "pm", "install","-i ","xxxxxx", "-r",filePath };

    -i 后面的参数是应用报名

  

   还有一种场景,就是你的应用帮别的应用实现静默升级,这里的包名还是用你的应用包名


猜你喜欢

转载自blog.csdn.net/x995630736/article/details/74348098