您可以创建自定义UncaughtExceptionHandler.
>在Application类中,您可以照常启动Crashlytics.
>然后将默认异常处理程序设置为自定义处理程序
UncaughtExceptionHandler customHandler =
new UserAgreementExceptionHandler(Thread.getDefaultUncaughtExceptionHandler());
Thread.setDefaultUncaughtExceptionHandler(customHandler);
在这种情况下,所有未捕获的异常都将传递给您的处理程序.下一个目标是根据您的需求定制它.它看起来像这样:
public class UserAgreementExceptionHandler implements Thread.UncaughtExceptionHandler {
@NonNull
private Thread.UncaughtExceptionHandler defaultHandler;
public UserAgreementExceptionHandler(@NonNull Thread.UncaughtExceptionHandler defaultHandler) {
this.defaultHandler = defaultHandler;
}
@Override
public void uncaughtException(Thread thread, Throwable ex) {
// Show dialog to user, pass callbacks for answers inside
// If user agreed to send the data,
// call the default handler you passed on object creation:
// defaultHandler.uncaughtException(thread, ex);
// Otherwise, don't pass it further
}
}
唯一的问题是如何从它开始一个对话框,它取决于你的应用程序架构.您可以在其中注入一些业务逻辑类,等待使用屏幕上的活动上下文显示对话框.