舒心、快乐,比什么都重要

静默安装/ 普通安装与root权限获取相关

静默安装

有时候使用第三方的插件时我们需要静默安装其提供的apk包,静默安装时我们需要获取root权限,如下代码

Process process = Runtime.getRuntime().exec("su");

然后此时获取到的root权限不是整个个应用的,而是Process这个进程

所以此时要进行的root权限相关的操作,就必须通过Process这个进程来获取

ps:file为sd卡中的文件File类型

如下

DataOutputStream dataOutputStream = new DataOutputStream(process.getOutputStream(););
                //执行777 linux命令获取文件的最高权限
                dataOutputStream.writeBytes("chmod 777 " + file.getPath()
                        + "\n"); // 获取文件所有权限
                dataOutputStream
                        .writeBytes("LD_LIBRARY_PATH=/vendor/lib:/system/lib pm install -r "
                                + file.getPath()); // 进行静默安装命令
    // 提交命令
                dataOutputStream.flush();
                // 关闭流操作
                dataOutputStream.close();
                out.close();
                int value = process.waitFor();

                // 代表成功
                if (value == 0) {
                    Log.e("hao", "安装成功!");
                    result = true;
                } else if (value == 1) { // 失败
                    Log.e("hao", "安装失败!");
                    result = false;
                } else { // 未知情况
                    Log.e("hao", "未知情况!");
                    result = false;
                }

value值可以判断安装是否成功

注:try catch 异常捕获代码没有写,可自行添加

//不上心的分隔线

普通安装

普通模式安装,调用系统Intent

public static void install(Context context, String filePath) {
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setDataAndType(Uri.parse("file://" + filePath), "application/vnd.android.package-archive");
    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(i);
}

 

posted @ 2017-02-15 13:25  Arcturis  阅读(677)  评论(0编辑  收藏  举报