【发布时间】: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 访问