【发布时间】:2019-12-10 11:45:16
【问题描述】:
我需要从设备获取 logcat -v 时间并将其保存到 SD 卡中的文本文件中。问题是当我按下按钮时我的应用程序冻结了。
我知道这可能会发生,因为 logcat -v time 不断获取设备所有操作的日志,不间断。我需要所有这些信息。但我不知道如何正确编码。有人可以帮帮我吗?
提前致谢!
这是我的代码:
btn_comeca.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
Process process = Runtime.getRuntime().exec("logcat -v");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder log=new StringBuilder();
String line = "";
while ((line = bufferedReader.readLine()) != null) {
log.append(line);
}
try {
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED) {
//Verifica permissão de gravar/ler
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
} else {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MODE_ENABLE_WRITE_AHEAD_LOGGING);
}
}
File caminho_arquivo = new File("/sdcard/ARQUIVOFINAL.txt");
caminho_arquivo.createNewFile();
FileOutputStream fileOutputStream = new FileOutputStream(caminho_arquivo);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream);
TextView tv = (TextView)findViewById(R.id.texttext);
String texto = "";
//tv.setText(log.toString());
texto = log.toString();
//outputStreamWriter.append(tv.getText());
outputStreamWriter.append(texto);
outputStreamWriter.close();
fileOutputStream.close();
Toast.makeText(getBaseContext(), "Text File Saved!", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
catch (IOException e) {}
}
【问题讨论】:
-
不明白做这种事情的目的,反正看看这个stackoverflow.com/a/14628593/1025070
-
实际上一个设备有一些奇怪的行为,制造商希望我得到它的 logcat 来查看设备中发生的一切。所以我决定制作这个应用程序,以便更容易获得 logcat。
-
如果是这样,无需尝试保存在设备 sdcard 中,您可以在连接了设备“adb logcat > logcat.txt”的计算机上运行,这会将所有 logcat 输出重定向到文本文件。
-
UdayaLakmal,我知道。使用电脑工作正常。但我想这个应用程序只是为了不使用任何电脑。这将使所有事情变得更加容易。
标签: java android process logcat