Android 程序執(zhí)行Linux命令的解決方法及注意事項
一:問題描述
在已經(jīng)root過的android設(shè)備下,app執(zhí)行一個linux命令,app需要獲取su權(quán)限,在某些android主板下會出現(xiàn)異常, 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();
}
}
由于確認(rèn)設(shè)備已經(jīng)root,并且上個月測試的時候,沒有任何問題,然后今天換新設(shè)備測試時(新設(shè)備,舊設(shè)備android版本一致,均為5.1,并且都已經(jīng)root),卻出現(xiàn)如下異常:
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");執(zhí)行這句代碼,沒有權(quán)限,都root了還沒權(quán)限,我去。。。ls -al /system/xbin/su信息如下:
二:解決辦法
出現(xiàn)這種問題,一般有三個原因
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 權(quán)限問題,
解決辦法是執(zhí)行如下命令,前提是android主板給予了執(zhí)行chmod 06755命令的權(quán)限
chmod 06755 /system/xbin/su
如果執(zhí)行以上命令,出現(xiàn)如下問題,請聯(lián)系設(shè)備廠商
root@rk3288:/system/xbin # chmod 06755 /system/xbin/su Unable to chmod /system/xbin/su: Read-only file system
3 /system/xbin/su 不允許第三方應(yīng)用獲取root權(quán)限
網(wǎng)上的解決辦法是:
root@android:/ $ su su: uid 10061 not allowed to su root@android:/
總結(jié)
以上所述是小編給大家介紹的Android 程序執(zhí)行Linux命令的解決方法及注意事項,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
- Android系統(tǒng)添加Linux驅(qū)動
- 在Linux下通過命令行打包Android應(yīng)用的方法
- 簡述Android中SELinux的TE
- Linux下Android開發(fā)環(huán)境搭建的操作方法
- 詳解Android Selinux 權(quán)限及問題
- Linux系統(tǒng)下安裝android sdk的方法步驟
- Android在linux下刷機教程
- 利用adt-bundle輕松搭建Android開發(fā)環(huán)境與Hello world(Linux)
- 基于Android SDK-在64位Linux中使用需要注意的問題
- Linux命令行下編譯Android NDK的示例代碼
相關(guān)文章
Android中分析Jetpack?Compose動畫內(nèi)部的實現(xiàn)原理
這篇文章主要介紹了Android中分析Jetpack?Compose動畫內(nèi)部的實現(xiàn)原理,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下2022-09-09
Android編程實現(xiàn)使用Intent傳輸包含自定義類的ArrayList示例
這篇文章主要介紹了Android編程實現(xiàn)使用Intent傳輸包含自定義類的ArrayList,涉及Android對象序列化、反序列化、Intent數(shù)據(jù)傳輸?shù)认嚓P(guān)操作技巧,需要的朋友可以參考下2017-08-08
AndroidStudio3.6.1打包jar及AndroidStudio4.0打包jar的一系列問題及用法
這篇文章主要介紹了AndroidStudio3.6.1打包jar,AndroidStudio4.0打包jar的問題及用法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03
Android實現(xiàn)檢測手機多點觸摸點數(shù)
這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)檢測手機多點觸摸點數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-05-05
Android開發(fā)筆記SQLite優(yōu)化記住密碼功能
這篇文章主要為大家詳細(xì)介紹了Android開發(fā)筆記SQLite優(yōu)化記住密碼功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07
Android中ViewFlipper和AdapterViewFlipper使用的方法實例
ViewFlipper和AdapterViewFlipper是Android自帶的一個多頁面管理控件,下面這篇文章主要給大家介紹了關(guān)于Android中ViewFlipper和AdapterViewFlipper使用的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05

