一:问题描述
在已经root过的androID设备下,app执行一个linux命令,app需要获取su权限,在某些androID主板下会出现异常, Command: [su] Working Directory: null Environment: null,代码如下:
private voID execlinuxCommand(String cmd){ Runtime runtime = Runtime.getRuntime(); try { Process localProcess = runtime.exec("su"); OutputStream localOutputStream = localProcess.getoutputStream(); DataOutputStream localDataOutputStream = new DataOutputStream(localOutputStream); localDataOutputStream.writeBytes(cmd); localDataOutputStream.flush(); } catch (IOException e) { Logger.i(TAG+"strline:"+e.getMessage()); e.printstacktrace(); } }
由于确认设备已经root,并且上个月测试的时候,没有任何问题,然后今天换新设备测试时(新设备,旧设备androID版本一致,均为5.1,并且都已经root),却出现如下异常:
java.io.IOException: Error running exec(). Command: [su] Working Directory: null Environment: null12-02 10:00:08.685 W/System.err: Caused by: java.io.IOException: Permission denIEd12-02 10:00:08.686 W/System.err: at java.lang.ProcessManager.exec(Native Method)12-02 10:00:08.686 W/System.err: at java.lang.ProcessManager.exec(ProcessManager.java:209)12-02 10:00:08.687 W/System.err: ... 17 more
通过异常信息判断,Process localProcess = runtime.exec("su");执行这句代码,没有权限,都root了还没权限,我去。。。ls -al /system/xbin/su信息如下:
二:解决办法
出现这种问题,一般有三个原因
1 /system/xbin/su 不存在
root@rk3288:/system/xbin # ls -al su-rwsr-x--- root shell 67160 2017-10-16 15:01 su
通过adb命令,看到是有su这个文件的,所以排除这个原因。
2 /system/xbin/su 权限问题,
解决办法是执行如下命令,前提是androID主板给予了执行chmod 06755命令的权限
chmod 06755 /system/xbin/su
如果执行以上命令,出现如下问题,请联系设备厂商
root@rk3288:/system/xbin # chmod 06755 /system/xbin/suUnable to chmod /system/xbin/su: Read-only file system
3 /system/xbin/su 不允许第三方应用获取root权限
网上的解决办法是:
root@androID:/ $ susu: uID 10061 not allowed to suroot@androID:/
总结
以上所述是小编给大家介绍的AndroID 程序执行linux命令的解决方法及注意事项,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!
总结以上是内存溢出为你收集整理的Android 程序执行Linux命令的解决方法及注意事项全部内容,希望文章能够帮你解决Android 程序执行Linux命令的解决方法及注意事项所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)