Logcat ничего не возвращает при вызове из exec()

Я пытаюсь получить вывод logcat в простой программе Android, используя следующее:

try {
      Process process = Runtime.getRuntime().exec("logcat -d");
      BufferedReader bufferedReader = new BufferedReader(
      new InputStreamReader(process.getInputStream()));

      StringBuilder log=new StringBuilder();
      String line = "";
      while ((line = bufferedReader.readLine()) != null) {
        log.append(line);
      }

К сожалению, bufferedReader.readline() всегда возвращает null.

В чем проблема?


person gonzobrains    schedule 07.05.2013    source источник
comment
На каком уровне API вы тестируете? Я считаю, что возможность для приложений читать любые сообщения logcat, кроме своих собственных, была удалена в одном из более новых (я думаю, Jelly Bean, но, возможно, ICS). Это было сознательное решение, принятое инженерами платформы в попытке сделать систему более безопасный.   -  person FoamyGuy    schedule 08.05.2013
comment
У меня андроид 4.0.3. Я установил CatLog на свое устройство, и это работает, поэтому я не уверен, что делаю неправильно в своей тестовой программе.   -  person gonzobrains    schedule 08.05.2013


Ответы (1)


Кажется, мне нужно было добавить следующие разрешения в файл AndroidManifest.xml:

    <uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.ACCESS_SUPERUSER" />

Это сработало для меня.

person gonzobrains    schedule 08.05.2013
comment
Для 4.0.3 вам нужны только READ_LOGS. См. stackoverflow.com/questions/16795582/ - person Peri Hartman; 14.11.2013