Чтение ActivityManager-журналов на устройстве Jelly Bean?

Jelly Bean удалил возможность читать журналы других приложений (в соответствии с этим разговором ввода-вывода), что является разумным улучшением безопасности. Тем не менее, мне нужно прочитать ActivityManager -logs для моего приложения для работы (чтобы узнать, какое приложение в данный момент запущено). Для этого я использовал

 private static final String clearLogcat = "logcat -c"; private static final String logcatCommand = "logcat ActivityManager:I *:S"; //... 

Который больше не работает, поскольку я могу читать только журналы своего собственного приложения в Jelly Bean. Есть ли альтернативное решение для выяснения, когда запускается другое приложение (помимо root)? Я понимаю, почему мы не можем читать журналы других приложений (вроде – это должна быть совместимость других разработчиков с тем, чтобы никакая личная информация не регистрировалась, а не моя, если мне не удалось прочитать журнал), но я Не понимаю, почему ActivityManager , класс framework, включен в эту политику …

Благодаря,
Ник

    Здесь подробно обсуждается этот вопрос. К сожалению, это «ожидаемое поведение» и, как таковое, не будет исправлено. Единственное текущее решение (для чтения журналов из приложения в JB и выше) заключается в том, чтобы вручную предоставить разрешение на приложение через adb:

    adb shell pm grant <pkg> android.permission.READ_LOGS

    Такое разрешение:

    • Выживает перезагрузка
    • Сохраняет обновления приложений (например, «adb install -r»)
    • Не сохраняется, если приложение было удалено, а затем снова установлено

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

    Прежде всего, ActivityManager не является приложением … это класс, который составляет часть платформы приложений Android.

    Во-вторых, если команда Android намеренно ушла с пути, чтобы помешать этому работать, я сомневаюсь, что вокруг него есть лазейка безопасности. Дело в том, что сторонние приложения не должны полагаться на журналы logcat для правильной работы. Если вы подробно расскажете о своей причине необходимости читать эти журналы, возможно, мы сможем помочь вам найти лучшее решение.