google analytics v3捕获所有异常

时间:2014-01-08 12:49:54

标签: android google-analytics google-analytics-api

我希望捕获所有异常并在Google Analytics中有意义地报告它们。到目前为止我所做的是:

设置<bool name="ga_reportUncaughtExceptions">true</bool>,我想这只适用于easytracker启用的活动:EasyTracker.getInstance(this).activityStart(this);

我希望在应用程序级别捕获所有异常,easyTracker也可以继续使用已定义的活动。

我尝试将此v2解决方案修改为v3,但仍未在google analytics(http://dandar3.blogspot.com/2013/03/google-analytics-easytracker-detailed.html)中看到我的异常

EasyTracker easyTracker = EasyTracker.getInstance(this);

ExceptionReporter exceptionReporter = new ExceptionReporter( 
    easyTracker, // Tracker, may return null if not yet initialized.
    GAServiceManager.getInstance(),                        // GAServiceManager singleton.
    Thread.getDefaultUncaughtExceptionHandler(), this); 

exceptionReporter.setExceptionParser(new AnalyticsExceptionParser());

UncaughtExceptionHandler myHandler =  exceptionReporter;       // Current default uncaught exception handler.

// Make myHandler the new default uncaught exception handler.
Thread.setDefaultUncaughtExceptionHandler(myHandler);

1 个答案:

答案 0 :(得分:1)


1.在Google Analytics中获取异常报告
在全局文件中使用此功能

 public static void sendExceptiontoServer(Context mContext,String title, Exception e){
     try{
         EasyTracker easyTracker = EasyTracker.getInstance(mContext);
         easyTracker.send(MapBuilder.createException(
                 new StandardExceptionParser(mContext, null)
                 .getDescription(title + " : " + Thread.currentThread().getName(), e), false).build());
     }catch(Exception ex){
     }
 }

并在代码中的任何位置调用此函数

      try{ 
}catch(Exception e){ 
 GlobalFile.sendExceptiontoServer(mContext, "error description :", e); 
}

<强> 2。获取崩溃报告
将此代码复制粘贴到Application class的 Oncreate 函数中

 EasyTracker.getInstance(this).set(Fields.SCREEN_NAME, getClass().getSimpleName());

Thread.UncaughtExceptionHandler uncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
if (uncaughtExceptionHandler instanceof ExceptionReporter) {
  ExceptionReporter exceptionReporter = (ExceptionReporter) uncaughtExceptionHandler;
  exceptionReporter.setExceptionParser(new AnalyticsExceptionParser());
}

将AnalyticsExceptionParser类创建为

 public class AnalyticsExceptionParser implements ExceptionParser {
            @Override
            public String getDescription(String thread, Throwable throwable) {
           return String.format("Thread: %s, Exception: %s", thread,Log.getStackTraceString(throwable));
               }
           }