文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android 静默安装如何实现(需要有ROOT权限),静默安装就是:app自动下载,自动安装,自动重新启动(可以设置重新启动打开哪个活动)

2023-10-07 19:00

关注

前提是手机需要被ROOT,也就是安卓设备需要被ROOT。需要知道apk文件的保存路径(绝对路径)
请看java代码

    //需要传下载后的apk的绝对路径和当前上下文,这个方法的返回值表示为:安装成功是true,安装失败是false    //apkPath:apk文件的绝对路径    public static boolean clientInstall(String apkPath,Context context) {        boolean result = false;        DataOutputStream dataOutputStream = null;        BufferedReader errorStream = null;        BufferedReader successStream = null;        Process process = null;        try {            // 申请 su 权限            process = Runtime.getRuntime().exec("su");            dataOutputStream = new DataOutputStream(process.getOutputStream());            // 执行 pm install 命令  (这是apk安装命令)            String command = "pm install -r " + apkPath + "\n";            //执行  am start -n   命令   (这是apk重启命令)    -----.MainActivity是默认重启app后要打开哪个界面            String runApp = "am start -n  "+context.getPackageName()+"/"+context.getPackageName()+".MainActivity >>/dev/null 2>&1;";            //这样子写也是可以的,用\n结尾也可以            // String runApp = "am start -n  "+context.getPackageName()+"/"+context.getPackageName()+".MainActivity"+ "\n";            command=command+runApp;            Log.d("111333","走到这里,---------------打印静默安装命令="+command);            dataOutputStream.write(command.getBytes(Charset.forName("UTF-8")));            dataOutputStream.writeBytes("exit\n");            Log.d("111333","走到这里,---------------打印静默安装完成");            dataOutputStream.flush();            process.waitFor();            errorStream = new BufferedReader(new InputStreamReader(process.getErrorStream()));            StringBuilder errorMsg = new StringBuilder();            String line;            while ((line = errorStream.readLine()) != null) {                errorMsg.append(line);            }            Log.d("111333","走到这里,---------------silent install error message:{}="+errorMsg);            StringBuilder successMsg = new StringBuilder();            successStream = new BufferedReader(new InputStreamReader(process.getInputStream()));            // 读取命令执行结果            while ((line = successStream.readLine()) != null) {                successMsg.append(line);            }            Log.d("111333","走到这里,---------------silent install success message:{}="+successMsg);            // 如果执行结果中包含 Failure 字样就认为是操作失败,否则就认为安装成功            if (!(errorMsg.toString().contains("Failure") || successMsg.toString().contains("Failure"))) {                result = true;            }        } catch (Exception e) {            Log.d("111333","走到这里,---------------e="+e);        } finally {            try {                if (process != null) {                    process.destroy();                }                if (dataOutputStream != null) {                    dataOutputStream.close();                }                if (errorStream != null) {                    errorStream.close();                }                if (successStream != null) {                    successStream.close();                }            } catch (Exception e) {                // ignored            }        }        return result;    }

来源地址:https://blog.csdn.net/qq_36570506/article/details/131593699

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯