我最近在我的变压器tf101上升级了Stock Android 4.1。在我的应用程序中,我需要root访问我的USB摄像头插入设备。直到现在,我已通过以下代码完成此操作:
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提示消息框通知我应用程序已请求root访问权限,但它无法正常工作。奇怪的是..当我从电脑上打开adb shell并输入这些命令时,它完美无瑕。
如果我通过电脑授予su访问权限,我的应用程序可以正常工作,虽然随机吐司显示通知我“root access granted”或“root acces denied”。它可能是SuperSU中的一个错误吗?
感谢您的帮助!
答案 0 :(得分: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
将您的流程提升为root,然后使用setgid
设置您的群组ID。之后你就可以在没有chmod
fiddeling的情况下写信给你的usb设备,这真的不是很好。
修改:另外,在完成设置组ID后,请不要忘记使用setuid(whateverAppUID)
删除root权限!