Невозможно открыть устройство журнала '/ dev / log / main': в доступе отказано

Я видел другие решения для этого, но ни одно из них, похоже, не подходит.

Я пытаюсь читать из процесса, выполняющего «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, и тем не менее есть много статей кода, подобных этой ... работает нормально.

Есть ли другие идеи о том, что я делаю неправильно или могу попробовать?


person valheru    schedule 25.02.2014    source источник
comment
Это разрешение не работает на JB + без рута. См. stackoverflow.com / questions / 11461650 /   -  person Matthew    schedule 26.02.2014
comment
У вас есть root-доступ на устройстве?   -  person Kakarot    schedule 26.02.2014
comment
@ Мэтью, спасибо. Не могли бы вы добавить это в качестве ответа? кажется правильным на данный момент.   -  person valheru    schedule 26.02.2014
comment
Ха, я пробовал, но он сказал, что это банальный ответ, и автоматически превратил его в комментарий :)   -  person Matthew    schedule 26.02.2014


Ответы (1)


Он занесен в топ-10 плохих разрешений и отключен в jellybean, ответ от Google:

Дэн Галпин: Прочтите системный журнал. У меня для вас плохие новости, ребята. Если вы не смотрели некоторые из наших других презентаций, чтение системного журнала фактически исчезло с J. Нет больше читать системный журнал, который вы можете получить. Однако позволяет вам без разрешения читать системный журнал вашего собственного приложения. Так что хорошей новостью является отсутствие жуткого слежения за тем, что делает пользователь, включив для него разрешение на чтение системного журнала. И в то же время вы все еще можете получить полезные журналы, необходимые для помощи в отладке, если записи о сбоях и всего того, что у нас есть в Google Play, недостаточно.

Ссылка: http://youtu.be/WDDgoxvQsrQ?t=22m3s

person Smile2Life    schedule 26.02.2014