1. 程式人生 > >Android 靜默升級,靜默安裝

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 後面的引數是應用報名

  

   還有一種場景,就是你的應用幫別的應用實現靜默升級,這裡的包名還是用你的應用包名