【问题标题】:Android Runtime.getRuntime().exec("su") java.io.IOException: Permission deniedAndroid Runtime.getRuntime().exec("su") java.io.IOException: Permission denied
【发布时间】:2017-06-08 14:33:06
【问题描述】:

当我使用这段代码时:

process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());

总是有错误,有什么想法吗?在安卓虚拟设备上运行

W/System.err(3211): java.io.IOException: Error running exec(). Command: [su] Working Directory: null Environment: null
W/System.err(3211):     at java.lang.ProcessManager.exec(ProcessManager.java:211)
W/System.err(3211):     at java.lang.Runtime.exec(Runtime.java:174)
W/System.err(3211):     at java.lang.Runtime.exec(Runtime.java:247)
W/System.err(3211):     at java.lang.Runtime.exec(Runtime.java:190)
W/System.err(3211):     at com.example.executeandroidtest.ShellUtils.execCommand(MainActivity.java:661)
W/System.err(3211):     at com.example.executeandroidtest.MainActivity$3.run(MainActivity.java:410)
W/System.err(3211):     at java.lang.Thread.run(Thread.java:818)
W/System.err(3211): Caused by: java.io.IOException: Permission denied
W/System.err(3211):     at java.lang.ProcessManager.exec(Native Method)
W/System.err(3211):     at java.lang.ProcessManager.exec(ProcessManager.java:209)
W/System.err(3211):     ... 6 more

【问题讨论】:

  • 这不是很明显吗?您想获得超级用户权限,但 android 有安全限制。
  • 那么,我该如何解决呢?
  • 你的设备root了吗?
  • 可能 SELinux 正在执行一些策略来拒绝 root 访问

标签: android exception


【解决方案1】:

原因:java.io.IOException: Permission denied

  1. 查找 su 在哪里,例如:/system/xbin/su
  2. 检查su的文件权限:ls -al /system/xbin/su
  3. 必要时更改模组:chmod 4755 su
  4. 再试一次。

【讨论】:

    【解决方案2】:

    您是否尝试添加此权限

    <uses-permission android:name="android.permission.ACCESS_SUPERUSER"/>
    

    【讨论】:

    • 我已经添加了这个,但仍然是这个问题。
    猜你喜欢
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 2018-02-10
    • 2022-01-21
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    相关资源
    最近更新 更多