如何在运行时禁用Crashlytics以响应用户首选项更改?

时间:2014-04-30 19:07:50

标签: android crashlytics

我想在Android应用的设置活动中提供一个设置,允许用户禁用我们对分析软件的使用,包括Crashlytics。但是,在用户访问设置页面之前很久就会调用Crashlytics.start(Context),并且我看不到等效的Crashlytics.stop(Context)函数。是否可以在应用程序启动后停止Crashlytics?

3 个答案:

答案 0 :(得分:3)

我已被告知我目前无法尝试具体案例。但是,通过启用"隐私提示"我可以让用户控制是否向Crashlytics发送数据。在Crashlytics仪表板的应用程序设置部分:

  

Go here选择要添加对话框的应用,然后点击"启用隐私提示"在左上角。

来自:http://support.crashlytics.com/knowledgebase/articles/349914-can-i-toggle-whether-or-not-a-user-needs-to-give-p

答案 1 :(得分:1)

这很容易做到。

  1. 为您的应用设置添加首选项,让用户决定是否要这样做。
  2. 实施UncaughtExceptionHandler并执行此操作
  3. @Override public void uncaughtException(Thread thread, Throwable ex) { SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(MyApplication.getAppContext()); Boolean send = sharedPref.getBoolean(MySettingsActivity.KEY_PREF_SEND_ERROR, true); if (send) { orgHandler.uncaughtException(thread, ex); } else System.exit(0); }

答案 2 :(得分:0)

启动后无法停止Crashlytics,但可以通过覆盖默认的UncaughtExceptionHandler达到所需的行为:

    final Thread.UncaughtExceptionHandler defaultExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
    Fabric.with(this, new Crashlytics());
    final Thread.UncaughtExceptionHandler crashlyticsExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
    Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
        if (isAnalyticsAllowed) {
            crashlyticsExceptionHandler.uncaughtException(t, e);
        } else {
            defaultExceptionHandler.uncaughtException(t, e);
        }
    });