Android软件的静默更新工具(需要手机ROOT)


import android.util.Log;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;

public class UpdateUtils {
    /**
     * 执行具体的静默安装逻辑,需要手机ROOT。
     *
     * @param apkPath 要安装的apk文件的路径
     * @return 安装成功返回true,安装失败返回false。
     */
    public static boolean install(String apkPath) {
        boolean result = false;
        DataOutputStream dataOutputStream = null;
        BufferedReader errorStream = null;
        try {
            // 申请su权限
            Process process = Runtime.getRuntime().exec("su");
            dataOutputStream = new DataOutputStream(process.getOutputStream());
            // 执行pm install命令
            String command = "pm install -r " + apkPath + "\n";
            dataOutputStream.write(command.getBytes(Charset.forName("utf-8")));
            dataOutputStream.flush();
            dataOutputStream.writeBytes("exit\n");
            dataOutputStream.flush();
            process.waitFor();
            errorStream = new BufferedReader(new InputStreamReader(process.getErrorStream()));
            String msg = "";
            String line;
            // 读取命令的执行结果
            while ((line = errorStream.readLine()) != null) {
                msg += line;
            }
            Log.d("TAG", "install msg is " + msg);
            // 如果执行结果中包含Failure字样就认为是安装失败,否则就认为安装成功
            if (!msg.contains("Failure")) {
                result = true;
            }
        } catch (Exception e) {
            Log.e("TAG", e.getMessage(), e);
        } finally {
            try {
                if (dataOutputStream != null) {
                    dataOutputStream.close();
                }
                if (errorStream != null) {
                    errorStream.close();
                }
            } catch (IOException e) {
                Log.e("TAG", e.getMessage(), e);
            }
        }
        return result;
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 在一些定制的android智能设备上要求app可以无人操作自动更新,具体说就是:某个条件触发app下拉最新安装包,...
    carlwu_186阅读 7,608评论 2 3
  • 遇到一个喜欢的人,谈一场轰轰烈烈的恋爱,这也是所有人对爱情的美好期盼。这比来场说走就走的旅行更酷,更有意义。...
    黑化后的亚瑟阅读 1,466评论 0 0
  • 说起来自己的专业也真是憋屈,说是“要在学会书本知识的基础上注重实践”,但大学前三年的课业根本腾不出一周两天的时间去...
    啊我不喜欢吃香菜阅读 416评论 4 4
  • 清晨雾醇 采一把能酿砒霜 云也厚 偷一颗下来塞进棉被 估计能过南方的冬 哦 这个盖被而可以露大腿的美好时节
    烧溢阅读 177评论 1 2

友情链接更多精彩内容