首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 程序內讀取 logcat 日誌:需聲明 READ_LOGS 權限並正確啟動進程

     編輯:程式設計綜合問答

App 內調用 Runtime.exec("logcat -d") 讀取日誌無輸出,通常缺少 READ_LOGS 權限或進程參數不當。

必要條件

  1. 權限聲明(AndroidManifest.xml):
    <uses-permission android:name="android.permission.READ_LOGS" />
    
    注意:Android 4.1+ 此權限僅系統應用可獲取,普通應用無法讀取其他進程日誌,只能讀取自身進程日誌。
  2. 正確命令參數:
    // 讀取完畢退出
    String[] cmd = {"logcat", "-d", "-v", "time", "MyTag:V", "*:S"};
    
    // 持續監聽(去掉 -d)
    String[] cmdLive = {"logcat", "-v", "time", "MyTag:V", "*:S"};
    

完整讀取代碼

try {
    Process process = Runtime.getRuntime().exec(cmd);
    BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()), 1024);
    String line;
    StringBuilder log = new StringBuilder();
    while ((line = reader.readLine()) != null) {
        log.append(line).append("\n");
    }
    reader.close();
    // log.toString() 即為日誌內容
} catch (IOException e) {
    e.printStackTrace();
}

替代方案:Logger 類自行輸出

生產環境建議自行實現日誌收集(如寫入文件、上傳服務器),而非依賴 logcat,兼容性與權限更可控。

理解權限限制與命令參數,按需選擇日誌獲取方案。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved