我有一個自定義設備android 4.3。問題發生在一些命令中,例如:su在adb上和程序上的行爲不同
su -c 'pm enable com.android.systemui'
當我在adb上運行此命令時,它起作用。但是,當我使用this庫以編程方式運行代碼時,它只是不起作用,也沒有顯示錯誤。
有趣的觀察:
Shell.SU.available() : false
Shell.SU.isSELinuxEnforcing() : false
我有一個自定義設備android 4.3。問題發生在一些命令中,例如:su在adb上和程序上的行爲不同
su -c 'pm enable com.android.systemui'
當我在adb上運行此命令時,它起作用。但是,當我使用this庫以編程方式運行代碼時,它只是不起作用,也沒有顯示錯誤。
有趣的觀察:
Shell.SU.available() : false
Shell.SU.isSELinuxEnforcing() : false
確定,所以設備被生根。你試圖使用該庫來執行該命令的任何原因?
我想說的是爲什麼你不能自己運行shell命令?
runRootCommand
方法:
static boolean runRootCommand(String command) {
boolean status = true;
DataOutputStream os = null;
try {
Process process = Runtime.getRuntime().exec("su");
os = new DataOutputStream(process.getOutputStream());
os.writeBytes(command + "\n");
os.writeBytes("exit\n");
os.flush();
process.waitFor();
} catch (IOException | InterruptedException e) {
Log.e(TAG, e.toString());
status = false;
} finally {
try {
if (os != null)
os.close();
} catch (IOException e) {
Log.e(TAG, e.toString());
status = false;
}
}
return status;
}
然後調用該方法是這樣的:
boolean success = runRootCommand("pm enable com.android.systemui");
if(success) {
// command was successful
} else {
// command was NOT successful
}
這將運行命令 「蘇」(超級用戶)。 希望這有助於。
問題不是我該如何執行su命令。問題本身就是。問題是我如何才能達到訪問級別,就像adb root一樣。 – guness
如果您的設備已經生根,您已經擁有所需的「訪問級別」。這只是一個正確的方式。如果您想測試它,請從Play商店下載終端應用程序並執行命令。它會工作。 –
通過'adb',即使您的設備沒有root權限,您也可以執行該命令。但是,如果設備沒有根,無論您使用哪個庫,該命令都會失敗。那麼如果物理設備真的紮根? –
@ th3pat3l,設備默認爲root。所以,我可以運行大部分的root命令。例如,當我單獨執行「reboot」命令時,它不起作用。但是,如果我作爲根設備重新啓動執行它。 – guness
我發佈了一個答案。看看能否幫到你 –