2012-09-17 74 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