TviKo7teaFy_ 2022-08-11 17:37 采纳率: 0%
浏览 8
已结题

安卓获取root权限使用process类获取的时候会卡上五六秒

问题遇到的现象和发生背景

安卓获取root权限使用process类获取的时候会卡上五六秒
process.exitValue()第一次也会返回为1而不是0正常退出的结果码

问题相关代码,请勿粘贴截图

//此处为获取的代码
execShellBoolean("chmod 777 " + context.getPackageCodePath());

public static boolean execShellBoolean(String script) {
Process process = null;
DataOutputStream dataOutputStream;
// DataOutputStream dataOutputStream = null;
try {
process = Runtime.getRuntime().exec("su");
dataOutputStream = new DataOutputStream(process.getOutputStream());
dataOutputStream.writeBytes(script + "\n");
dataOutputStream.flush();
dataOutputStream.writeBytes("exit\n");
dataOutputStream.flush();
process.waitFor();
dataOutputStream.close();
return (process.exitValue() == 0);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
return false;
} finally {
// try {
// if (dataOutputStream != null) {
// dataOutputStream.close();
// }
// } catch (IOException e) {
// e.printStackTrace();
// }
process.destroy();
}
}

运行结果及报错内容

安卓获取root权限使用process类获取的时候会卡上五六秒
process.exitValue()第一次也会返回为1而不是0正常退出的结果码
测试环境为雷电模拟器4.0 安卓7.0

我的解答思路和尝试过的方法

先前以为是管道堵死的情况后来使用线程清空管道的缓存,照样还会卡上个几秒而且
process.exitValue()第一次也会返回为1而不是0正常退出的结果码
请问是什么原因,经过断点调试卡在位置应该是在process.waitFor()这个函数
但是明明已经执行成功且以及process.destroy();销毁了process但是一样会卡而且返回结果码一样为异常的1

我想要达到的结果

execShellBoolean("chmod 777 " + context.getPackageCodePath());
在使用这段命令的时候不造成卡顿且process.exitValue()返回的结果码为正常的0

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 8月19日
    • 创建了问题 8月11日

    悬赏问题

    • ¥15 使用rml 2016.10a数据集做半监督学习的自动调制识别
    • ¥25 使用cube ai 导入onnx模型时报错
    • ¥15 关于#微信小程序#的问题:用一个网页显示所有关联的微信小程序数据,包括每个小程序的用户访问量
    • ¥15 root的安卓12系统上,如何使apk获得root或者高级别的系统权限?
    • ¥20 关于#matlab#的问题:如果用MATLAB函数delayseq可以对分数延时,但是延时后波形较原波形有幅度上的改变
    • ¥15 使用华为ENSP软件模拟实现该实验拓扑
    • ¥15 通过程序读取主板上报税口的数据
    • ¥15 matlab修改为并行
    • ¥15 尝试访问%1服务的windows注册表时遇到问题。必须先解决此问题,然后才能运行安装过程。(请确认您正在使用管理员权限运行)373
    • ¥15 (关键词-运算放大器)