Пустой InputStream для Android Porcess с "su"
У меня устройство Android 7 с рутом (работает)
Я хочу выполнять корневые команды через OutputStream и получать сообщения о результатах через InputStream.
private void getSu() {
if (mProcess != null) return;
try {
mProcess = Runtime.getRuntime().exec("su");
} catch (IOException e) {
e.printStackTrace();
}
}
private void getStdOut() {
if (mStdOut != null) return;
getSu();
mStdOut = new DataOutputStream(mProcess.getOutputStream());
}
private void getStdIn() {
if (mStdIn != null) return;
getSu();
mStdIn = new BufferedReader(new InputStreamReader(mProcess.getInputStream()));
}
После этого я пытаюсь выполнить команду "mount" и прочитать результаты этой команды.
getSu();
getStdOut();
getStdIn();
String[] mountLine = getMount(mStdOut, mStdIn, "/system");
private String[] getMount(@NonNull DataOutputStream stdOut, @NonNull BufferedReader stdIn, String string) {
String[] res=null;
try {
stdOut.writeBytes("mount");
stdOut.writeBytes("\n");
String str;
while ((str=stdIn.readLine()) != null) {
if (str.contains(string)) {
res = str.split(" ");
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
return res;
}
Этот код работал на Android 6 раньше. Но на Android 7 я получаю InputSream, полный \u0000
Я попытался выполнить эту команду через оболочку adb, и я получил хорошие результаты. Почему я получаю InputSream, полный \u0000?