好吧我看了ProcessBuilder(它也存在于android中)。但我仍然遇到问题。
while ((line = buffer.readLine()) != null) {
data = line;
}
if (data != null && data.contains("uid=0")) {
return true;
}
这将提供与以前相同的问题。它无处可逃。但是,如果我将代码更改为
while ((line = buffer.readLine()) != null) {
if (data != null && data.contains("uid=0")) {
return true;
}
}
这将工作正常。这个过程将会结束,并且它将会返回真实。问题是为了让我使用这个,我必须非常清楚地知道作为返回数据(我在这个测试方法中做了什么)。所以这不可能是解决方案。
这里是整个测试方法
try {
ProcessBuilder builder = new ProcessBuilder("su");
builder.redirectErrorStream(true);
Process process = builder.start();
DataOutputStream output = new DataOutputStream(process.getOutputStream());
InputStreamReader reader = new InputStreamReader(process.getInputStream());
BufferedReader buffer = new BufferedReader(reader);
output.writeBytes("id\n");
output.flush();
String line = null;
String data = null;
while ((line = buffer.readLine()) != null) {
data = line;
}
if (data != null && data.contains("uid=0")) {
return true;
}
} catch(Throwable e) {
Log.d(TAG, "Root access rejected [" + e.getClass().getName() + "] : " + e.getMessage());
}
return false;
什么你试试? –
你可能没有完全正确地读取它的stdout/stderr流 –
好的,你能否提供一个如何正确的读取它的例子? –