Я видел другие решения для этого, но ни одно из них, похоже, не подходит.
Я пытаюсь читать из процесса, выполняющего «logcat -d», и получаю сообщение об ошибке в заголовке.
Мой AndroidManifest.xml включает:
<uses-permission android:name="android.permission.READ_LOGS" />
Используя оболочку adb, я могу отлично выполнить команду.
Это фрагмент кода:
ProcessBuilder procBuilder = new ProcessBuilder();
procBuilder.redirectErrorStream(true);
procBuilder.command("logcat", "-d");
procBuilder.directory(new File("/"));
Process process = procBuilder.start();
//Process process = Runtime.getRuntime().exec("logcat -d");
process.waitFor();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder log = new StringBuilder();
String line = "";
while ((line = bufferedReader.readLine()) != null) {
log.append(line + "\n");
}
При выполнении я вижу первую строку как ошибку в заголовке, и все.
Я читал в Интернете, что logcat не может быть запущен без su, и тем не менее есть много статей кода, подобных этой ... работает нормально.
Есть ли другие идеи о том, что я делаю неправильно или могу попробовать?