它适用于Android 5.0,但不适用于Jellybean设备。
@ReportsCrashes(
formKey = "", // This is required for backward compatibility but not used
formUri = "dummyurl",
reportType = org.acra.sender.HttpSender.Type.JSON,
httpMethod = org.acra.sender.HttpSender.Method.PUT,
formUriBasicAuthLogin="adminTest",
formUriBasicAuthPassword="adminTest",
mode = ReportingInteractionMode.TOAST,
resToastText = R.string.crash_toast_text)
public class Application extends Application {
@Override
public void onCreate() {
super.onCreate();
init();
ACRA.init(this);
Thread.setDefaultUncaughtExceptionHandler(sUncaughtExceptionHandler);
}
private UncaughtExceptionHandler sUncaughtExceptionHandler = new UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread thread, Throwable ex) {
Log.i(LogTag, "uncaughtException: ");
dummyMethod();
Thread.getDefaultUncaughtExceptionHandler().uncaughtException(
thread, ex);
}
};
}
ACRA 设置自己的 UncaughtExceptioHandler 来执行错误报告,然后委托给之前存在的任何 UncaughtExceptionHandler。
因此,如果您希望在 ACRA 完成错误报告后调用 UncaughtExceptionHandler,则需要在调用ACRA.init(this);
之前设置异常处理程序
由于您正在发送 Toast 通知,因此您还需要设置forceCloseDialogAfterToast
因为假设 defaultExceptionHandler 是来自 Android 框架的处理程序,它将显示一个强制关闭对话框,如果还显示 Toast,您不希望显示它。