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

本文介绍了一种在Android设备上实现Root权限下静默安装应用程序的方法,并提供了解决方案来处理未能获取Root权限的情况,即进行常规安装。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实现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);
}

这是本人在网上的第一篇文章,有问题请明示,大家一起共同成长共同进步。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值