android日志获取

zy1mlcev  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(220)

我有一个场景,在这个场景中,我需要以1秒的间隔读取logcat上不断出现的数据。因此,我创建了一个线程来调用这个类方法,但最终出现了如下异常

Working Directory: null Environment: null

我已经添加了如下权限

<uses-permission android:name="android.permission.READ_LOGS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

代码是

public class LogsUtil {  

    public static StringBuilder readLogs() {  
        StringBuilder logBuilder = new StringBuilder();  
        try {  

            String[] cmd = new String[] { "logcat | find \\ Keymaster" /*"logcat", "-v", "time", "ActivityManager:W", "Keymaster:D"*/ };
            //Process processClear = new ProcessBuilder().command("logcat -c").redirectErrorStream(true).start();

            //String cmd[] = new String[]{"logcat"};

            Process process = Runtime.getRuntime().exec(/*"logcat -d"*/cmd);  

            BufferedReader bufferedReader = new BufferedReader(  
                    new InputStreamReader(process.getInputStream()));  

            String line;  
            while ((line = bufferedReader.readLine()) != null) {
                 Log.e(" ", ""+bufferedReader.readLine());
                logBuilder.append(line + "\n");  
            }  
        }
        catch (IOException e) 
        {
            e.printStackTrace();
        } 
        return logBuilder;  
    }  
}

需要读取的确切日志是

如何打印相同的数据?

8mmmxcuj

8mmmxcuj1#

你可以用

String[] cmd = new String[] {"logcat", "-d", "Keymaster:V *:S" }

但是,如果您需要自己的日志,我建议您只使用自己的日志
作为 <uses-permission android:name="android.permission.READ_LOGS" /> 对我来说太无礼了。
您可以使用木材使用特定的本地记录器为您的需要。或常见的记录器与可视化形式的谷歌例子

相关问题