静默安装/ 普通安装与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); }