2012-06-24 24 views
1

我想先介紹一下我的情況,我正在做一個內核調試器,它使用Runtime.getRuntime().exec(...)來傳遞各種shell命令,它很好地工作,但問題是每次運行時都會詢問su權限一個帶有su的shell命令。Su許可問了很多次

我希望應用只需要一次權限,然後執行所有命令而不再詢問su。目前我的應用程序有大約30行su命令,所以我的應用程序用戶必須允許su訪問30次才能使所有的工作都可用。

+0

你不能執行你的應用程序作爲SU嗎?並沒有它執行命令? –

+0

讓「superuser.com」傢伙告訴你關於'sudo' ......或其他解決方案。但它在這裏是無關緊要的。 –

+1

實際上它並不是真正的主題,因爲它是一個關於在一些自定義ROM中使用工具的問題,它允許android應用程序以root身份運行子進程。應用程序本身不能以root身份運行,因爲它永遠不會執行exec(),而是會從系統範圍的zygote進程中分離出來,並通過加載組成應用程序的共享庫進行專門化。 –

回答

0

我解決了這個問題,在Async Task中爲我的根調用使用相同的接口,初始時我單獨使用了方法,並在Fragment中需要時導致權限被一次又一次地詢問。然後將其更改爲一個標準的exec方法,並使用它每次進行系統調用。它修復了錯誤。

2

可能工作的一種方法是使用su運行shell,並將各種命令傳遞到希望生成的根shell進程的標準輸入中。這意味着su只能使用一次。

這樣做的代碼已經在人們希望用su命令行無法傳遞的參數運行命令的上下文中多次討論過,因此必須通過管道傳遞到結果進程中。

+0

我解決了它們..!謝謝任何方式:D – user1478070

+0

那麼你是如何解決它的?發佈您的答案,以便其他人可以從中學習。 – JPM