我希望捕获所有异常并在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);
答案 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));
}
}