Android logcat: отправка записей журнала с устройства по электронной почте

Сценарий

Я выпустил бета-версию приложения для Android нескольким друзьям. Теперь я хотел бы исправить некоторые ошибки, возникшие в течение периода тестирования.

Я установил утилиту отчетов о сбоях сторонних разработчиков, поэтому я могу легко справляться с авариями приложений. Однако есть некоторые ошибочные поведения, которые не вызывают сбоев. В этих случаях я хотел бы проверить журналы приложений и посмотреть, что пошло не так.

Есть ли способ для приложения отправлять свои записи logcat по электронной почте?

Разъяснения

  • Существует множество приложений регистрации (android-log-collector, Log Viewer (logcat)), которые могут проверять и показать записи logcat. Однако эти приложения не могут получить доступ к журналам других приложений с Android 4.1.
  • Я не против занимать много места в устройстве - эта функция предназначена только для бета-тестеров.
  • Решение должно работать без root или любых других специальных разрешений.

Ответы

Ответ 1

Вызовите этот метод в onDestroy своей основной деятельности.

 public void SendLogcatMail(){

    // save logcat in file
    File outputFile = new File(Environment.getExternalStorageDirectory(),
            "logcat.txt");
    try {
        Runtime.getRuntime().exec(
                "logcat -f " + outputFile.getAbsolutePath());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

 //send file using email
 Intent emailIntent = new Intent(Intent.ACTION_SEND);
 // Set type to "email"
 emailIntent.setType("vnd.android.cursor.dir/email");
 String to[] = {"[email protected]"};
 emailIntent .putExtra(Intent.EXTRA_EMAIL, to);
 // the attachment
 emailIntent .putExtra(Intent.EXTRA_STREAM, outputFile.getAbsolutePath());
 // the mail subject
 emailIntent .putExtra(Intent.EXTRA_SUBJECT, "Subject");
 startActivity(Intent.createChooser(emailIntent , "Send email..."));
 }

Ответ 2

Похоже, что RemoteLogger именно то, что вам нужно

https://github.com/sschendel/RemoteLogger

Захват журнала отладки в файл, который пользователь может легко отправить вам по электронной почте. Это было создано по необходимости для устранения неповторяющейся ошибки, сообщенной пользователем. Чтобы быть ясным, запись была удалена в версию приложения, выпущенную для проверки пользователей на устранение неполадок. Удалено в конечном производственном коде.

Библиотека предоставляет крючки для запуска, остановки, отправки и удаления файла журнала.