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



我最近在我的变压器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("exitn");
        oOutSream.flush();

我知道,chmod 777 不是一个好主意,但到目前为止我还没有找到任何其他解决方案。好吧,升级到 4.1 后,这不再起作用了。SuperSU 会提示一个消息框,通知我该应用程序已请求 root 访问权限,但它不起作用。奇怪的是..当我从PC打开adb shell并输入这些命令时,它可以完美运行。

如果我通过电脑授予 su 访问权限,我的应用程序可以正常工作,尽管会显示随机 Toast 通知我"授予根访问权限"或"拒绝根访问"。会不会是SuperSU中的错误?

感谢您的帮助!

更好的主意是查看 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

我在这里可能是错的,但我认为在每个安卓版本中,USB 组对所有 USB 设备都有rw权限。您要做的是,使用 usb 作为组 ID 启动应用程序。

例如

,您可以使用 su 将进程提升为 root,然后使用 setgid 设置组 ID 来执行此操作。之后,您可以写入USB设备而无需chmod摆弄,这真的不好。

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

最新更新