当我使用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并从那里运行它。仍然没有运气。
答案 0 :(得分:-1)
我有一个中国平板电脑有这样的问题。只需重新根它(替换su
二进制)。应该工作。
P.S。看到任何代码也会有所帮助。
答案 1 :(得分:-1)
您可以使用Android清单权限获取root访问权限
<uses-permission android:name="android.permission.FACTORY_TEST" />
您的应用将作为制造商测试应用运行,以root用户身份运行。从而使您的应用可以访问“su”命令。
但是,我怀疑Google Play会允许您在获得此类许可的情况下上传。