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

Android 非 Root 環境下程式讀取 logcat 日誌的方法

     編輯:程式設計綜合問答

可行性

Android 4.1 (API 16) 起,應用無法直接讀取其他應用的 logcat,但可讀取自身程序的日誌。無需 Root,需宣告權限。

實作步驟

1. Manifest 宣告權限

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

2. 執行 logcat 指令並讀取輸出

fun readOwnLogs(): List<String> {
    val logs = mutableListOf<String>()
    try {
        val process = Runtime.getRuntime().exec(arrayOf("logcat", "-d", "*:V"))
        val reader = BufferedReader(InputStreamReader(process.inputStream))
        var line: String?
        while (reader.readLine().also { line = it } != null) {
            logs.add(line)
        }
        reader.close()
    } catch (e: Exception) {
        e.printStackTrace()
    }
    return logs
}

關鍵參數說明

  • -d:讀取後立即結束(非持續監聽)。
  • *:V:顯示所有等級日誌,可改為 MyTag:V *:S 過濾特定標籤。

限制與替代方案

  • Android 4.1+ 僅能讀取自身 UID 產生的日誌,系統/其他應用日誌不可見。
  • 生產環境建議整合 Timber、Logback 等日誌框架,自行寫入檔案並上傳。
  • 除錯階段可用 adb logcat 或 Android Studio Logcat 視窗。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved