Освой программирование играючи
/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000
Название библиотеки ACRA является сокращением от Application Crash Reports for Android.
Разработчик создаёт всегда идеальную программу, которая никогда не глючит на его устройстве. Но стоит выложить приложение для пользователей, как вдруг выясняется, что на других устройствах приложение может крашится без явных на то причин. Зачастую пользователь не может внятно соообщить разработчику приложения о проблеме. Библиотека ACRA поможет разобраться, кто же виноват в неправильном поведении программы и прислать сообщение, не беспокоя при этом пользователя.
Домашняя страница: Гитхаб
Установим зависимость в Gradle.
compile 'ch.acra:acra:4.9.2'
Создадим класс, наследующийся от класса Application и пропишем его имя в манифесте:
<application
...
android:name=".MyApplication"
android:theme="@style/AppTheme">
Библиотека предоставляет несколько способов получения отчёта об ошибке: отправка на электронный адрес, отправка на сервер, реализация собственного поставщика отчетов. Самый простой и понятный способ - отправка на электронный адрес. Им и воспользуемся.
Добавим специальную аннотацию @ReportsCrashes к классу MyApplication. Аннотация содержит следующие атрибуты:
Затем в методе onCreate() инициализируем библиотеку.
package ru.alexanderklimov.acra;
import android.app.Application;
import org.acra.ACRA;
import org.acra.ReportingInteractionMode;
import org.acra.annotation.ReportsCrashes;
@ReportsCrashes(mailTo = "[email protected]",
mode = ReportingInteractionMode.TOAST,
resToastText = R.string.crash_toast_text)
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
ACRA.init(this);
}
}
Не забудьте добавить строковый ресурс.
<string name="crash_toast_text">Ошибка! Отправляем отчёт</string>
Для проверки и демонстрации примера добавим кнопку на экран приложения. Код для щелчка, где сами сознательно сгенерируем ошибку в приложении.
public void onClick(View view) {
throw new RuntimeException("App is crashed");
}
Включим разрешение на использование интернета.
<uses-permission android:name="android.permission.INTERNET"/>
При нажатии на кнопку мы получим Toast-сообщение с нашим текстом, а потом будет сформировано письмо.
На странице библиотеки можно найти другие примеры, описание параметров и прочую информацию.