android-是否有可能在单击按钮时获得logcat的最后几行?
作者:互联网
我试图在按钮上单击以获取Logcat(至少最后几行),但没有任何反应-
view.findViewById(R.id.logdone).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// Make file name.
String fullName = "userlogs";
// Extract to file.
File file = new File(fullName);
InputStreamReader reader = null;
FileWriter writer = null;
try
{
// get input stream
String cmd = "logcat -d -v time";
Process process = Runtime.getRuntime().exec(cmd);
reader = new InputStreamReader (process.getInputStream());
// write output stream
writer = new FileWriter (file);
char[] buffer = new char[10000];
do
{
int n = reader.read (buffer, 0, buffer.length);
if (n == -1)
break;
writer.write (buffer, 0, n);
} while (true);
reader.close();
writer.close();
}
catch (IOException e)
{
if (writer != null)
try {
writer.close();
} catch (IOException e1) {
}
if (reader != null)
try {
reader.close();
} catch (IOException e1) {
}
e.printStackTrace();
return;
}
}
}
注意:
我确实有权限-
<uses-permission android:name="android.permission.READ_LOGS" />
更新:
我大部分的内容在Log.d()中,然后是Log.v()中,然后是Log.e()中,然后是Log.i()中.但是如何单击按钮才能获得最后的事件行.我的目的是获取这些行并将其通过电子邮件发送给开发人员.
我正在使用流行的第三方API(称为ACRA)来发送正常运行的电子邮件.
我可以使用StringBuilder将所有设备日志都放入其中,然后通过电子邮件发送.
但我无法得到.
有没有任何有效的优雅方法?
解决方法:
鉴于我对不再授予非系统应用程序的READ_LOGS权限的评论,我建议使用带有标准Java Logger
的MemoryHandler
.单击按钮,您可以将消息push
发送到目标StreamHandler
(您可以只是将它们转储到您选择的输出缓冲区中).
标签:android-logcat,android 来源: https://codeday.me/bug/20191121/2055322.html