Как получить журнал во время выполнения, когда сила закрытия приложения Android

Как получить журнал во время выполнения, когда сила закрывается в приложении Android. Я хочу получить журналы и отправить их по почте.

Здесь некоторый код для сбора журналов внутри приложения:

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()); } } } 

Теперь вызовите этот класс async следующим образом.

  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); 

Используйте ACRA или связанные библиотеки, чтобы ломать сбои из производственных приложений и обрабатывать эти отчеты. По умолчанию ACRA будет регистрировать материал в электронной таблице Документов Google, но вы можете заменить его другим.

adb logcat когда устройство подключено к USB-отладке

или

Установите aLogCat из gplay.