以编程方式读取Android logcat时,并未显示所有数据

Ruz*_*ard 9 android logcat

我有这样的问题,我尝试以编程方式从logcat获取数据.权限也已添加到清单文件中:

<uses-permission android:name="android.permission.READ_LOGS"/>
Run Code Online (Sandbox Code Playgroud)

码:

    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();
Run Code Online (Sandbox Code Playgroud)

但是,我无法看到其他应用程序何时启动.我正在等待下面的字符串,但它们没有出现.

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}
Run Code Online (Sandbox Code Playgroud)

PS此代码在服务中运行.

Ric*_*k77 8

我有个坏消息:从JB开始,READ_LOGS不再像以前一样工作了:

https://groups.google.com/forum/?fromgroups#!topic/android-developers/6U4A5irWang

(滚动到Dianne Hackborn的帖子,Android Develper)和这个视频:

Google I/O 2012 - 游戏开发者应该知道的十件事

(22:47)官方消息来源.

但是他还没有记录(READ_LOGS权限不报告这个),但却是混乱的根源.您现在只能访问自己的日志,而且好消息是,您不再需要获取权限(如果您的目标是Jelly Beans,那就是它......).

我想这是Android开发团队为防止恶意应用程序对用户进行间谍活动所做的妥协,也许是获取敏感信息(我不打赌每个应用程序开发人员在发布之前清除它自己的Log.d语句).

希望这可以帮助