1

我最近在我的变压器 tf101 上升级了 Stock Android 4.1。在我的应用程序中,我需要对插入设​​备的 USB 摄像头进行 root 访问。到目前为止,我已经通过以下代码做到了这一点:

        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 并输入这些命令时,它完美无缺。

如果我通过 pc 授予 su 访问权限,我的应用程序可以正常工作,尽管出现随机 toast 通知我“授予 root 访问权限”或“拒绝 root 访问权限”。这可能是 SuperSU 中的错误吗?

谢谢您的帮助!

4

1 回答 1

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 组都具有rw所有 USB 设备的权限。您想要做的是,使用usb组 ID 启动您的应用程序。

您可以这样做,例如,使用su将您的进程提升为 root,然后使用setgid. 之后,您可以在没有那种chmod真正不好的情况下向您的 USB 设备写入数据。

编辑:另外,不要忘记在setuid(whateverAppUID)设置组 ID 后使用删除 root 权限!

于 2012-09-25T18:22:24.723 回答