2012-03-05 177 views
5

使用Android SDK附帶的adb.exe,我可以獲得對Android設備的根訪問權限。 出於測試目的,我也想給出Android應用程序根權限。 我知道該應用正在名爲app_68的特定帳戶下運行。 是否有一個adb shell命令將app_68添加到「根組」?授予Android應用根權限

在此先感謝您的意見/解決方案。

+1

我相信唯一的方法是使用命令行如:'Runtime.getRuntime()。exec(「su」);'這將改變應用程序的UID爲0,所以它有根特權。 (當然,必須已經安裝了正確的二進制文件)。如果你在你的應用中使用root,那麼[This](http://code.google.com/p/roottools/)是一個很大的幫助。 – Jakar 2012-03-05 23:27:26

+0

我試着執行「Runtime.getRuntime().exec(」su「);」從一個測試的Android應用程序,並得到一個錯誤消息「su:uid 10069不允許su」。我想應用程序不能改變自己在su帳戶下運行。 – ytw 2012-03-05 23:55:23

+3

你將不得不安裝SuperUser和BusyBox。如果你已經完成了這兩項工作,那麼你可能意外地拒絕了你的測試應用程序SuperUser – Jakar 2012-03-06 01:38:39

回答

0

您需要需要超級用戶(su)二進制文件以root用戶身份運行您的應用程序。 對於以root身份運行實現此:

Process p = Runtime.getRuntime().exec("su"); 
DataOutputStream os = new DataOutputStream(p.getOutputStream()); 

os.writeBytes("yourCommand\n"); 

os.writeBytes("exit\n"); 

os.flush(); 
os.close(); 
try { p.waitFor(); } catch (InterruptedException e) {} 

如果你喜歡的東西su: uid xxxx not allowed,那麼你需要更新你的使用SuperSU SU-二進制。

另見https://stackoverflow.com/a/26654728/4479004如果你想要一個完全詳盡和工作source.Just看看下面的代碼:

更新:要得到結果(輸出到stdout),用途: