我有一个场景,我需要以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;
}
}
如何打印相同的数据?
答案 0 :(得分:0)
你可以使用
String[] cmd = new String[] {"logcat", "-d", "Keymaster:V *:S" }
但是如果您需要自己的日志,我建议您只使用自己的记录器
为<uses-permission android:name="android.permission.READ_LOGS" />
对我来说太冒犯了。
您可以使用Timber根据需要使用特定的本地记录器。 或具有可视化器形式the google examples
的通用记录器