gpt4 book ai didi

Android- 以编程方式执行 su 命令不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:23:27 26 4
gpt4 key购买 nike

我需要我的应用以编程方式执行一些 su 命令(手机已 root)。

使用 adb 完成后,命令就可以工作了。

例如:su -c "mkdir/sdcard/testdir" 在/sdcard 中创建一个名为“testdir”的目录。

当我打电话时:

    p = Runtime.getRuntime().exec("su -c \"mkdir /sdcard/testdir\"");
p.waitFor();

它只是继续前进,没有任何变化发生。

我尝试读取输入:

DataInputStream dis = new DataInputStream(p.getInputStream());
while((temp = dis.readLine())!=null)
Log.d(ctx.TAG,"shell:"+temp);

但它没有报告任何内容(循环执行 0 次迭代)。

有没有人遇到过这个问题?如何解决?不用说,非 su 命令确实可以使用此方法以编程方式工作。

注意:我以 mkdir 为例(我知道它不一定需要 su)。我需要在 su

下执行很多不同的命令

谢谢!

编辑:当我以编程方式调用 su -c "id" 时,输出 uid=0。

最佳答案

我可能会在一个问题上卡几天,当我鼓起勇气在 StackOverflow 上提问时,它会在几分钟内解决。

修复是:

    p=Runtime.getRuntime().exec("su");
DataOutputStream dos = new DataOutputStream(p.getOutputStream());
dos.writeBytes("mkdir /sdcard/testdir\n");
dos.writeBytes("exit\n");
dos.flush();
dos.close();
p.waitFor();

不要忘记在您写入 DataOutputStream 的每个命令末尾使用 \n,因为没有它它将无法工作。

关于Android- 以编程方式执行 su 命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29750137/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com