Я пытаюсь написать приложение, которое читает журналы, созданные adb logcat.Следуя коду на link1 и link2 , у меня есть следующий код:
try {
Process process = Runtime.getRuntime().exec("logcat");
System.out.println("Process : " + process); // shows process id
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
System.out.println("Buffered reader : " + bufferedReader.readLine());
StringBuilder log = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
log.append(line);
}
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText(log.toString());
} catch (IOException e) {
}
Чтобы проверить, что читает буферизованный читатель, я поставил println, ноЯ получаю сообщение "Невозможно связать TCP: 5038".Приведенный выше код не читает никаких журналов.Я также попытался использовать «logcat *: V», но я не получил журналы даже самого низкого приоритета.
Я дал своему приложению разрешение: android.permission.READ_LOGS.
Я тестирую свойкод на эмуляторе Android.
Может кто-нибудь указать, что я делаю не так.
Спасибо за помощь.
РЕДАКТИРОВАТЬ :
Я попытался "logcat -d", и я получил одну строку журнала.В коде можно заметить, что был предоставлен блок try / catch; когда я удаляю разрешение READ_LOGS из приложения, исключение не возникает и bufferReader просто печатает ноль (обычно, когда приложение не находит разрешение, которое ему требуется, оно вызывает исключение). В чем причина такого поведения?
EDIT2:
Я попробовал Log.d (TAG, log.toString ()) и получилболее одной строки текста.Может кто-нибудь объяснить последний вопрос из предыдущего редактирования: когда я удаляю требуемое разрешение, почему приложение не вызывает исключение?