Android 4.1 SuperSU Shell不授予root访问权限

时间:2012-09-17 13:13:50

标签: android root android-4.2-jelly-bean su

我最近在我的变压器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中的一个错误吗?

感谢您的帮助!

1 个答案:

答案 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权限!