您的位置:首页 > 其它

实现有Root权限进行静默安装,没有root权限,或者拒绝授权root权限进行常规安装

2014-08-25 16:45 260 查看
实现Root权限下静默安装,获取不到root权限的情况下进行常规安装

由于工作需要,开发的程序需要进行ROOT权限下进行静默安装,但是实现静默安装后发现,如果用户拒绝授权Root权限的话,程序不会安装,而且以后所有推送的程序都不会安装,所以,公司要求没有获取到root权限要进行常规安装,想了很久找了很多方法都不行,最后我发现在执行完命令后停个几秒钟,再往下继续执行,就可以达到想要的效果。

代码如下:

/**
* 静默安装
* @param file
* @return
*/
public boolean slientInstall(File file) {
boolean result = false;
Process process = null;
OutputStream out = null;
try {
process = Runtime.getRuntime().exec("su");

//再次停3秒钟再往后执行,有获取到了root权限就会静默安装,没有获取到就会返回false,然后再去调用常规安装
Thread.sleep(3000);
out = process.getOutputStream();
DataOutputStream dataOutputStream = new DataOutputStream(out);
dataOutputStream.writeBytes("chmod 777 " + file + "\n");
dataOutputStream.writeBytes("LD_LIBRARY_PATH=/vendor/lib:/system/lib pm install -r " +file);
// 提交命令
dataOutputStream.flush();
// 关闭流操作
dataOutputStream.close();
out.close();
int value = process.waitFor();
// 代表成功
if (value == 0) {
result = true;
} else if (value == 1) { // 失败
result = false;
} else { // 未知情况
result = false;
}
} catch (Exception e) {
return false;
}
return result;
}
/**
* 安装APK文件
* @param apkfile APK文件名
* @param mContext
*/
public void installApk(Context mContext, File apkFile)
{
if (!apkFile.exists())
{
return;
}
// 通过Intent安装APK文件
Intent i = new Intent(Intent.ACTION_VIEW);
i.setDataAndType(Uri.parse("file://" + apkFile.toString()), "application/vnd.android.package-archive");
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(i);
}

这是本人在网上的第一篇文章,有问题请明示,大家一起共同成长共同进步。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  静默安装判断