Android在应用

时间:2016-09-18 09:51:30

标签: android adb root su selinux

当我使用adb访问我的设备(Android 4.4.2直接来自制造商使用他们的自定义ROM - 它不是常规设备 - 它内置2D条形码扫描仪)它直接有一个#我是读取意味着我有root访问权限。如果我运行“id”,我会得到以下内容:

uid=0(root) gid=0(root) context=u:r:adbd:s0

然而,当我从我的应用程序中运行“su”然后“id”时,我得到以下内容:

uid=10079(u0_a79) gid=10079(u0_a79) groups=50079(all_a79) context=u:r:untrusted_app:s0n

所以它显然不是以root身份运行的。 我的理解是错误的,相信它应该从应用程序中以root身份运行,或者我需要做些什么才能使其正常工作?

非常感谢任何建议。

以下是我目前用于运行su和id命令的代码:

p = Runtime.getRuntime().exec("su");
            p.waitFor();
            BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));

            String line = "";
            while ((line = reader.readLine())!= null) {
                output.append(line + "n");
            }


            p = Runtime.getRuntime().exec("id");
            p.waitFor();
            reader = new BufferedReader(new InputStreamReader(p.getInputStream()));

            line = "";
            while ((line = reader.readLine())!= null) {
                output.append(line + "n");
            }

我忘了提到的另一件事 - 我将应用程序复制到/ system / priv-app并从那里运行它。仍然没有运气。

2 个答案:

答案 0 :(得分:-1)

我有一个中国平板电脑有这样的问题。只需重新根它(替换su二进制)。应该工作。

P.S。看到任何代码也会有所帮助。

答案 1 :(得分:-1)

您可以使用Android清单权限获取root访问权限

<uses-permission android:name="android.permission.FACTORY_TEST" />

您的应用将作为制造商测试应用运行,以root用户身份运行。从而使您的应用可以访问“su”命令。

但是,我怀疑Google Play会允许您在获得此类许可的情况下上传。