2017-04-27 208 views
0

是否可以读取所有进程的LogCat消息? (如在Android Studio中,当我们选择“无过滤”选项)通过编程的Android LogCat - 所有进程

当我执行此:

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

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

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

回答

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