Мне нужно программно сбросить logcat с фильтром. Я применил adb logcat -s "TAGNAME", но приложение просто "зависло". есть похожая тема, но нет решения: Чтение отфильтрованного журнала cat (Программно)?
try { Process process = Runtime.getRuntime().exec("logcat -s XXX"); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(process.getInputStream())); StringBuilder log = new StringBuilder(); String line; while ((line = bufferedReader.readLine()) != null) { log.append(line); log.append(FragmentLog.LINE_SEPARATOR); } ((TextView) tv).setText(log.toString()); } catch (IOException e) { ((TextView) tv).setText(R.string.default_blank); }
Я использую другой способ заставить мое приложение работать. Вот код, на случай, если кто-то захочет узнать.
try { Process process = Runtime.getRuntime().exec("logcat -d"); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; Pattern pattern = Pattern.compile("XXX", 0); while ((line = bufferedReader.readLine()) != null) { if (patternu != null && !pattern.matcher(line).find()) { continue; } log.append(line); log.append('\n'); } } catch (IOException e) { }
Ну, во-первых, эта команда будет транслировать logcat и не будет ее выгружать.Следовательно, он никогда не перестанет работать.Кроме того, если нет содержимого для отчета, BufferedReader, вероятно, ожидает ввода полной строки, поэтому вы блокируете.