您好,登錄后才能下訂單哦!
一:問題描述
在已經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: null 12-02 10:00:08.685 W/System.err: Caused by: java.io.IOException: Permission denied 12-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/su Unable to chmod /system/xbin/su: Read-only file system
3 /system/xbin/su 不允許第三方應用獲取root權限
網上的解決辦法是:
root@android:/ $ su su: uid 10061 not allowed to su root@android:/
總結
以上所述是小編給大家介紹的Android 程序執行Linux命令的解決方法及注意事項,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。