如何获得记录在运行时强制关闭在Android应用程序 [英] How to get log at run time when force close in Android application
本文介绍了如何获得记录在运行时强制关闭在Android应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何获得记录在运行时强制关闭在Android应用程序。
我想获得的日志和寄出。
How to get log at run time when force close in Android application. I want to get logs and mail it.
推荐答案
下面一些code收集里面的应用程序日志:
Here some code to collect logs inside application:
private int MAX_LOG_MESSAGE_LENGTH = 100000;
private String[] mFilterSpecs;
private String mFormat;
private String mBuffer;
private class CollectLogTask extends AsyncTask<ArrayList<String>, Void, StringBuilder> {
@Override
protected void onPreExecute() {
}
@Override
protected StringBuilder doInBackground(ArrayList<String>... params) {
final StringBuilder log = new StringBuilder();
try {
ArrayList<String> commandLine = new ArrayList<String>();
commandLine.add("logcat");//$NON-NLS-1$
commandLine.add("-d");//$NON-NLS-1$
ArrayList<String> arguments = ((params != null) && (params.length > 0)) ? params[0] : null;
if (null != arguments) {
commandLine.addAll(arguments);
}
Process process = Runtime.getRuntime().exec(commandLine.toArray(new String[0]));
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null) {
log.append(line);
log.append(LINE_SEPARATOR);
}
} catch (IOException e) {
Log.e(TAG, "CollectLogTask.doInBackground failed", e);//$NON-NLS-1$
}
return log;
}
@Override
protected void onPostExecute(final StringBuilder log) {
if (null != log) {
// truncate if necessary
int keepOffset = Math.max(log.length() - MAX_LOG_MESSAGE_LENGTH, 0);
if (keepOffset > 0) {
log.delete(0, keepOffset);
}
if (mAdditonalInfo != null) {
log.insert(0, LINE_SEPARATOR);
log.insert(0, mAdditonalInfo);
}
Log.d("printLog",log.toString());
}
}
}
现在调用这个类的异步这样。
Now call this async class like this.
ArrayList<String> list = new ArrayList<String>();
if (mFormat != null) {
list.add("-v");
list.add(mFormat);
}
if (mBuffer != null) {
list.add("-b");
list.add(mBuffer);
}
if (mFilterSpecs != null) {
for (String filterSpec : mFilterSpecs) {
list.add(filterSpec);
}
}
new CollectLogTask().execute(list);
这篇关于如何获得记录在运行时强制关闭在Android应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文