1

我正在制作一个应用程序,它必须在日志中显示我在设备上启动了哪些应用程序。我logcat ActivityManager:I *:S在某些设备和模拟器上使用并且做得很好。

但在某些设备上它有奇怪的行为——我在日志中看到的一切都是重复的:

02-18 16:32:09.132: D/LockApp(4082): --------- beginning of /dev/log/main

代码片段:

Process process = null;
try {
    process = Runtime.getRuntime().exec("logcat -c");
    process = null;
    process = Runtime.getRuntime().exec("logcat ActivityManager:I *:S");
    br = new BufferedReader(new InputStreamReader(process.getInputStream()));
    String line = null;

    line = br.readLine();

    while( line != null && !this.isInterrupted()){
        Log.d(Tag, "Start LockApp loop");
        Log.d(Tag, line);
    }
} catch (IOException e) {
    Log.d(Tag, e.toString());
}

android.permission.READ_LOGS在清单中有

我正在使用 Android 4.1 和 4.2

4

1 回答 1

2

这是什么logcat -c>这将清除(刷新)整个日志并退出。

只有V,D,I,W,E & WTF:-) 六类 logcat 类

在此处将其更改为Runtime.getRuntime().exec("logcat -e"); 链接:

编辑: 在此处阅读果冻豆 链接时出现问题

Jelly Beans (Android 4.1) 的 READ_LOGS 权限将不再授予普通应用程序。

应用程序只允许读取自己的日志。

查看更多信息

您可以尝试实现一个功能,为拥有根设备的用户授予自己 READ_LOGS 权限。

于 2013-02-18T09:06:02.687 回答