0

ブロードキャスト レシーバー、サービス、および含まれるライブラリなど、アプリを通じてキャッチされていないすべての例外を Google Anlytics にキャッチさせたいと考えています。

デフォルトでは、EasyTrakcer は Activity Uncaught Exception をキャッチすると思います。

そこで、ベース アプリケーション クラスでキャッチされない例外ハンドラを定義し、そこに例外を送信することにしました。これは私のコードです:

import android.app.Application;
import android.util.Log;
import com.google.analytics.tracking.android.GoogleAnalytics;

public class ApplicationMain extends Application implements Thread.UncaughtExceptionHandler
{

    private GoogleAnalytics googleAnalytics;

    public ApplicationMain()
    {
        googleAnalytics = GoogleAnalytics.getInstance(this); // EXCEPTION OCCURS
        googleAnalytics.setDefaultTracker(googleAnalytics.getTracker("UA-300957-15"));
        Thread.setDefaultUncaughtExceptionHandler(this);
    }

    public void uncaughtException(Thread thread, Throwable throwable)
    {
        googleAnalytics.getDefaultTracker().sendException(throwable.getMessage(), throwable, true);
        System.exit(0);
    }
}

問題は、アプリケーション コンテキストを使用して Google アナリティクス インスタンスを取得しようとすると、null ポインター例外が発生することです。

4

1 に答える 1

0

私は問題を理解しました。

コンテキストはアプリケーション コンストラクターでまだ null です。onCreate で呼び出す必要があります。

@Override
public void onCreate ()
{
    googleAnalytics = GoogleAnalytics.getInstance(this);
    googleAnalytics.setDefaultTracker(googleAnalytics.getTracker("UA-300957-15"));
    Thread.setDefaultUncaughtExceptionHandler(this);
}
于 2013-07-02T14:22:22.163 に答える