Crashlytics和默认异常处理程序

时间:2018-10-10 06:54:11

标签: android exception-handling crashlytics google-fabric crashlytics-android

我正在为我的android项目使用crashlytics,我的要求是在应用程序崩溃时,我想要自己的自定义反馈活动,并且我也想将此记录为crashlytics中的致命异常。我尝试了可接受的答案中的方法: Crashlytics Android SDK - custom UncaughtExceptionHandler,但是异步初始化对我而言并不成功。因此,我尝试同步初始化,例如:

Thread.UncaughtExceptionHandler defaultUncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
    @Override
    public void uncaughtException(Thread thread, Throwable ex) {

      // launch feed back activity
      Intent intent = new Intent();
      intent.setAction("com.project.SEND_LOG");
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
      startActivity(intent);


      defaultUncaughtExceptionHandler.uncaughtException(thread, ex);
    }
  });

但这不会启动反馈活动(尽管执行了用于启动反馈活动的代码),而是显示了android中默认的应用崩溃行为。 有人可以帮我吗?

2 个答案:

答案 0 :(得分:3)

谢谢。 Crashlytics并未正式支持此功能。如果您确实找到了解决方法,则我们无法保证随着更新我们的SDK可以继续解决该问题。

答案 1 :(得分:0)

来自官方代码示例https://fabric.io/kits/android/crashlytics/features

  

确保Fabric.with()行位于所有其他第三方SDK之后   设置了UncaughtExceptionHandler

在您的AndroidManifest中添加元数据

<meta-data
            android:name="firebase_crashlytics_collection_enabled"
            android:value="false" />

首先安装UncaughtExceptionHandlers,然后启动Fabric。

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Set all your UncaughtExceptionHandlers
        Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler());
        // Start your Crashlytics manually
        Fabric.with(this, new Crashlytics());
        ...
    }
}

然后,您可以从crashlytics获取报告,并在自己的UncaughtExceptionHandler中捕获错误。 它可以在我的API27移动版上与crashlytics:2.10.1

一起使用