如何在我的设备上获取logcat以显示来自所有进程的日志

我正在尝试编写一个应用程序来读取我的设备上的所有日志。 我有一个客户端/服务架构,我看到来自客户端和服务进程的日志消息,但是我没有看到任何来自手机上其他任何应用程序的消息(我看到使用桌面logcat的其他消息)。

我需要root吗?

代码片段

performance

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

日志阅读器

 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); } // Process line } 

Solutions Collecting From Web of "如何在我的设备上获取logcat以显示来自所有进程的日志"

在Android 4.1及READ_LOGS中,除非您拥有READ_LOGS权限,否则您只能访问您的进程logging的日志消息。 该权限要求您的应用程序使用签署设备固件的相同签名密钥进行签名,或者您的应用程序安装在系统分区上。

要以编程方式从其他应用程序读取日志,您需要在所有apks的清单文件中分配相同的android:sharedUserId。

还有另一种方式可以访问所有没有root权限的应用程序的日志。 它需要启用远程debugging。 看看开源的无根Logcat应用程序 。