【问题标题】:Android 4.1 SuperSU Shell grants no root accessAndroid 4.1 SuperSU Shell 不授予 root 访问权限
【发布时间】:2012-09-09 17:05:11
【问题描述】:

我最近在变压器 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 访问权限,我的应用程序可以正常工作,尽管随机显示通知我“授予 root 访问权限”或“拒绝 root 访问权限”。会不会是 SuperSU 的 bug?

感谢您的帮助!

【问题讨论】:

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


    【解决方案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 摆弄的情况下写入您的 USB 设备,这真的很不好。

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

    【讨论】:

    • 谢谢。肯定会尝试的。另一个问题仍然存在.. SuperSU 随机显示已授予我的应用程序 root 权限的 Toasts。即使应用程序甚至没有运行!有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-19
    相关资源
    最近更新 更多