Android LogCat以编程方式 - 所有进程

时间:2017-04-27 11:54:12

标签: android logcat

是否可以读取所有进程的LogCat消息? (比如在android studio中我们选择'No Filter'选项)

执行此操作时:

    File filename = new File(Environment.getExternalStorageDirectory() + "/mylog.txt");
    if (filename.exists()) {
        filename.delete();
    }

    String cmd = "logcat -f " + filename.getAbsolutePath();
    Runtime.getRuntime().exec(cmd);

它只会写连接到我的应用程序的日志。

1 个答案:

答案 0 :(得分:0)

从Android版本4.1+开始,您无法读取其他应用程序的logcat。请参阅this以供参考。

读取低于4.1的其他应用程序的日志

Runtime.getRuntime().exec("logcat -c").waitFor();
Process process = Runtime.getRuntime().exec("logcat -v long *:*");
BufferedReader reader = 
new BufferedReader(new InputStreamReader(process.getInputStream()));
while (true) {
    String nextLine = reader.readLine();
    if (!nextLine.contains("LogWatcher-D")) {
        Log.w("LogWatcher-D", "See: " + nextLine);
    }
}

您需要授予<uses-permission android:name="android.permission.READ_LOGS" />权限。

Reference

为了清楚明白,您可以参考this