2012-09-17 78 views
1

我最近在我的變壓器tf101上的Stock Android 4.1上進行了升級。在我的應用程序中,我需要root訪問插入設備的USB攝像頭。截至目前,我有下面的代碼這樣做:Android 4.1 SuperSU Shell授予無根權限

 Runtime.getRuntime().exec("su"); 
     DataOutputStream oOutSream = new DataOutputStream(process.getOutputStream()); 
     oOutSream.writeBytes("chmod -R 777 /dev/bus/usb/* \n"); 
     oOutSream.flush(); 
     oOutSream.writeBytes("exit\n"); 
     oOutSream.flush(); 

我知道,搭配chmod 777是不是一個好主意,但我還沒有發現任何其他的解決辦法爲止。那麼,升級到4.1後,這不再起作用。 SuperSU會提示一個Messagebox,通知我該應用程序請求了root訪問權限,但它不會工作。奇怪的是..當我打開電腦的adb外殼,並輸入這些命令,它的工作完美無瑕。

如果我通過電腦授予su訪問權限,我的應用程序可以正常工作,雖然隨機吐司會顯示通知我「root acces granted」或「root acces denied」。它可能是SuperSU中的錯誤嗎?

感謝您的幫助!

回答

1

一個更好的主意是看你想訪問的USB設備的權限。

例如在手機上使用ls

$ ls -l /dev/bus/usb/001/ 
crw-rw---- system usb  189, 1 2012-09-15 19:18 002 
crw-rw---- system usb  189, 0 2012-09-15 19:18 001 

我可能是錯在這裏,但我覺得在每一個Android版本的USB團對所有的USB設備rw權限。你想要做的是,以usb作爲組ID來啓動你的應用程序。

您可以這樣做,例如,使用su將您的進程提升到根目錄,然後使用setgid設置您的組標識。之後,你可以寫入你的USB設備沒有那個真的很不好。

編輯:另外,不要忘記使用拖放你setuid(whateverAppUID)大功告成設置組ID後的root權限!

+0

謝謝。絕對會嘗試。另一個問題仍然存在.. SuperSU隨機顯示Toast已將其授予我的應用程序。即使該應用程序甚至沒有運行!有任何想法嗎? – Hafnernuss