当我尝试从我的拥有系统权限的程序运行su命令时,stderr返回以下错误信息:
下面是代码:
我将共享uid设置为android.uid.system或android.uid.shell,但没有任何改变。这个设备应该已经root了。我真的不明白发生了什么。uid 1000 not allowed to su
下面是代码:
private boolean runAsRoot(String cmd, File workdir) throws IOException {
Log.i(LOG_TAG, "Execute command as root: " + cmd);
Process p = Runtime.getRuntime().exec(new String[] {"su", "-c", cmd});
if (p == null) {
Log.e(LOG_TAG, "cannot create process for " + cmd);
return false;
}
int exit = -1;
try {
exit = p.waitFor();
InputStreamReader isr;
if (exit == 0) {
isr = new InputStreamReader(p.getInputStream());
} else {
isr = new InputStreamReader(p.getErrorStream());
}
BufferedReader br = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
String line;
while ((line = br.readLine()) != null) {
if (sb.length() > 0) {
sb.append('\n');
}
sb.append(line);
}
String string = sb.toString();
Log.l(LOG_TAG, exit == 0 ? Level.INFO : Level.SEVERE, string);
} catch (InterruptedException e) {
Log.e(LOG_TAG, e);
}
return exit == 0;
}