Я пытаюсь прочитать журналы logcat и записать их содержимое в файл. Для этого я использую приведенный ниже код:
public class LogCatTask extends AsyncTask<Void, String, Void> {
@Override
protected Void doInBackground(Void... voids) {
File dir = new File(LOG_FILE_LOCATION);
if (!dir.exists()) {
dir.mkdirs();
}
Date date = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss", Locale.TAIWAN);
File file = new File(dir, "logcat_" + dateFormat.format(date) + ".txt");
//write log to file
int pid = android.os.Process.myPid();
try {
String command = "logcat -d -v threadtime *:*";
Process process = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder result = new StringBuilder();
String currentLine = null;
while ((currentLine = reader.readLine()) != null) {
if (currentLine != null && currentLine.contains(String.valueOf(pid))) {
result.append(currentLine);
result.append("\n");
}
}
FileWriter out = new FileWriter(file);
out.write(result.toString());
out.close();
} catch (IOException e) {
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
}
return null;
}
}
Это просто сохранит последние несколько строк из logcat и сохранит их в файл. Я не уверен, в чем проблема, я также пробовал использовать приведенную ниже команду logcat, но даже она не дает мне полного журнала. Я пробовал создать поток и службу для обработки приведенного ниже кода, но ничего не дает мне правильного результата.
String command = "logcat -d -v threadtime *:*";
Process process = Runtime.getRuntime().exec(command);
Я просмотрел много ответов stackoverflow, но не смог решить эту проблему . Пожалуйста, помогите! Спасибо!