我基本上想要從應用程序java
命令啓動一個駐留在/system/bin/...
中的進程。 我試過所有類型的Runtime.process.exec()
選項 嘗試了su
和ouputStream
組合,但沒有任何東西能夠啓動應用程序。 我在設備和模擬器中使用代碼,兩者都沒有運氣。 我能夠成功地從ADB Shell運行相同的命令(因爲它具有root權限)。在Android應用程序上執行基於Root Access的命令
該設備是紮根的,我可以看到#當我使用adb來調試我的設備,它也可以通過adb進入su。 基於我的搜索我發現(在從adb外殼做ps之後) 我可以從應用程序層使用lrwz -x-x權限運行任何命令,例如(ls-> toolbox,ps-> toolbox)但我無法執行任何其他未鏈接到工具箱的命令。
這並不執行ls
:
Process p = Runtime.getRuntime().exec("su");
DataOutputStream os=new DataOutputStream(p.getOutputStream());
os.writeBytes("ls \n");
os.flush();
但這並執行ls
:
Process p = Runtime.getRuntime().exec("ls");
我真的很感激,如果我能得到任何幫助這裏!我在做了大量的研究之後發佈這篇文章。
嘗試執行程序時會得到什麼錯誤消息或錯誤代碼或異常? – sarnold
您是否在您的超級用戶應用程序中驗證了該應用程序允許訪問「su」。我很確定超級用戶保留一個應用列表黑名單,也許你在某個時候將它列入黑名單 – user931366
@sarnold我沒有得到任何異常或錯誤,只是劑量執行,如果我給 進程p = Runtime.getRuntime()。exec ( 「ス」); DataOutputStream os = new DataOutputStream(p.getOutputStream()); os.writeBytes(「ls \ n」); os.flush(); ls dosent得到執行......但是 進程p = Runtime.getRuntime()。exec(「ls」); 執行沒有任何問題,我得到使用標準輸入流讀取數據。 – codester