Не все данные, отображаемые при чтении Android logcat программно


У меня такая проблема, я пытаюсь получить данные из logcat программно. разрешение также было добавлено в файл манифеста:

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

Код:

    new Thread(new Runnable() {
        @Override
        public void run() {
            try {
                Process process = Runtime.getRuntime().exec("logcat ActivityManager:I *:S");
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

                String line;
                while ((line = bufferedReader.readLine()) != null) {
                    reactOnString(line);
                }
            } catch (IOException e) {
            }
        }
    }).start();

Однако я не вижу, когда запускаются другие приложения. Я жду строк, подобных приведенной ниже, но они не появляются.

2260-2566/system_process                 I/ActivityManager: Start proc com.android.email for activity com.android.email/.activity.MessageCompose: pid=6460 uid=10011 gids={50011, 3003, 1015, 1023, 1028}

P.S. Этот код выполняется в сервисе.

2 9

2 ответа:

У меня для вас плохие новости: начиная с JB, READ_LOGS больше не работают так, как раньше:

Https://groups.google.com/forum/?fromgroups#! тема / android-разработчики/6U4A5irWang

(прокрутите до поста Dianne Hackborn, разработчика Android) и это видео:

Google I / O 2012-Десять Вещей, Которые Разработчики Игр Должны Знать

(22:47) для официальных источников.

Однако его еще не было задокументировано (разрешение READ_LOGS не сообщить об этом) и все же является источником путаницы. Теперь вы можете получить доступ только к своим собственным журналам, и хорошей новостью является то, что вам больше не нужно запрашивать разрешения на это (Если вы нацелены на Jelly Beans, это все...).

Я думаю, что это компромисс, на который пошла команда разработчиков Android, чтобы предотвратить шпионство вредоносного приложения за пользователем, возможно, получение конфиденциальной информации (я бы не стал спорить, что каждый разработчик приложений очищает свой собственный журнал.D заявления перед выпуском).

Надеюсь, это поможет

В Android Jelly Bean приложения не могут считывать записи журналов из других приложений, если только ваше устройство не укоренено и вы не читаете журналы как суперпользователь.

Так что в принципе... Это и есть ожидаемое поведение.

Я не смог найти никакого официального заявления в документации Android (кто-то может отредактировать этот ответ, если они это сделают), но вам может быть интересно взглянуть на это ответ: https://android.stackexchange.com/questions/28857/how-can-i-access-android-log-files-on-my-nexus-7-without-root-access