Процесс Android AsyncTask (logcat) не выводит сообщения (на эмуляторе)

Процесс logcat запущен, я не получаю никаких ошибок или принудительно закрываюсь. Просто кажется, что он не генерирует никакого вывода.

    String commandLine = "logcat -v time -b main *:V";
    String line;

    try {
        process = Runtime.getRuntime().exec(commandLine);
        bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

        while(!mStop && (line = bufferedReader.readLine()) != null && newMessages.size() < maxMessages) {
            // It does not reach this point
            // Debugger shows 
            // mStop == false
            // newMessages.size == 0
            // maxMessages == 5000
            // line == null

Подозрение в том, что logcat выходит без вывода чего-либо. Я попробовал это в командной строке, и он выводит сообщения logcat.

Я заменил logcat на ls, а затем bufferedReader заполнил line.

Проверка bufferedReader показывает элемент in(InputStreamReader), который сам имеет элемент endOfInput, который имеет значение false перед readLine() и становится true сразу после него.

ПОСЛЕДНИЕ НОВОСТИ: я открыл эмулятор терминала в самом эмуляторе и запустил его:

$ logcat -v time -b main *:V
Unable to open log device '/dev/log/main': Permission denied
$

person ilomambo    schedule 18.05.2012    source источник


Ответы (1)


После поиска похожего поста кажется, что это довольно дубликат из:

Android не может запустить logcat из приложения

Короче говоря, проблема заключалась в следующем: для чтения логов требуется разрешение пользователя, поэтому я добавил:

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

в манифест, и теперь он отлично работает.

person ilomambo    schedule 18.05.2012