安卓crash捕捉异常应用
2015-09-18 11:12
232 查看
安卓crash捕捉异常应用
一、捕捉异常后存入到手机本地
首先,导入crash类库(此类库可从本人资源分享中下载)
第二步,在继承application的类中初始化类库中的CrashHandler,如图中两行代码
并且在manifest文件中加入scard写入权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
第三步,尝试制造异常并捕捉查看
第四步,在手机中查找crash文件,即捕捉后异常错误
第五步、研究该捕捉异常的代码核心解释,如下:
public class CrashHandler implements UncaughtExceptionHandler {
private Thread.UncaughtExceptionHandler mDefaultHandler;
private static CrashHandler INSTANCE = new CrashHandler();
public static CrashHandler getInstance() {
return INSTANCE;
}
public void init(Context context) {
mContext = context;
mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(this);
}
@Override
public void uncaughtException(Thread thread, Throwable ex) {
handleException(ex);
ex.printStackTrace();
// 退出程序
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
// }
}
}
实现接口UncaughtExceptionHandler ,必须重写方法uncaughtException,当捕捉到异常时回调方法uncaughtException,故此,在方法uncaughtException中写处理异常的方法,即写入本地的方法,异常为捕获到并传过来的ex。
init方法中两个及其重要的方法,其意思是,当捕捉到异常线程的handler时,为Thread设置一个系统默认的handler,已完成后面对捕获的handler处理的任务,具体可详见:http://www.cnblogs.com/freeliver54/archive/2011/10/17/2215423.html
http://blog.sina.com.cn/s/blog_793940aa0100vntj.html
二、捕捉异常后发送到邮箱
第一步,同上。
第二步,在继承application的类中初始化类库中的ErrorReportModel,
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
SetMailbox();
// SaveLocal();
}
/**
* 保存crash至手机本地
*/
public void SaveLocal() {
CrashHandler crashHandler = CrashHandler.getInstance();
crashHandler.init(getApplicationContext());
}
/**
*
* 将crash发送到制定邮箱
*/
public void SetMailbox() {
ErrorReportModel errorReportModel = ErrorReportModel
.getErrorReportModel(this);
}
}
并且修改类库中的邮箱帐号(一般为你的QQ邮箱),如图:
<
9d52
span style="font-size:18px;">
打开类sendemailutil类,找到修改邮箱数组toEmails
第三步,制造崩溃。
第四步,邮箱收到崩溃邮件。
三、利用第三方数据统计收集崩溃信息(例如友盟统计分析)
http://www.umeng.com/analytics
一、捕捉异常后存入到手机本地
首先,导入crash类库(此类库可从本人资源分享中下载)
第二步,在继承application的类中初始化类库中的CrashHandler,如图中两行代码
并且在manifest文件中加入scard写入权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
第三步,尝试制造异常并捕捉查看
第四步,在手机中查找crash文件,即捕捉后异常错误
第五步、研究该捕捉异常的代码核心解释,如下:
public class CrashHandler implements UncaughtExceptionHandler {
private Thread.UncaughtExceptionHandler mDefaultHandler;
private static CrashHandler INSTANCE = new CrashHandler();
public static CrashHandler getInstance() {
return INSTANCE;
}
public void init(Context context) {
mContext = context;
mDefaultHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler(this);
}
@Override
public void uncaughtException(Thread thread, Throwable ex) {
handleException(ex);
ex.printStackTrace();
// 退出程序
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
// }
}
}
实现接口UncaughtExceptionHandler ,必须重写方法uncaughtException,当捕捉到异常时回调方法uncaughtException,故此,在方法uncaughtException中写处理异常的方法,即写入本地的方法,异常为捕获到并传过来的ex。
init方法中两个及其重要的方法,其意思是,当捕捉到异常线程的handler时,为Thread设置一个系统默认的handler,已完成后面对捕获的handler处理的任务,具体可详见:http://www.cnblogs.com/freeliver54/archive/2011/10/17/2215423.html
http://blog.sina.com.cn/s/blog_793940aa0100vntj.html
二、捕捉异常后发送到邮箱
第一步,同上。
第二步,在继承application的类中初始化类库中的ErrorReportModel,
public class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
SetMailbox();
// SaveLocal();
}
/**
* 保存crash至手机本地
*/
public void SaveLocal() {
CrashHandler crashHandler = CrashHandler.getInstance();
crashHandler.init(getApplicationContext());
}
/**
*
* 将crash发送到制定邮箱
*/
public void SetMailbox() {
ErrorReportModel errorReportModel = ErrorReportModel
.getErrorReportModel(this);
}
}
并且修改类库中的邮箱帐号(一般为你的QQ邮箱),如图:
<
9d52
span style="font-size:18px;">
打开类sendemailutil类,找到修改邮箱数组toEmails
第三步,制造崩溃。
第四步,邮箱收到崩溃邮件。
三、利用第三方数据统计收集崩溃信息(例如友盟统计分析)
http://www.umeng.com/analytics
相关文章推荐
- js的BOM对象
- 在centos 安装c++ 编译器
- 给生命一个高度
- Failed to load libGL.so error libGL.so: cannot open shared object file: No such file or directory
- IOS动画相关知识
- android中editText弹出软键盘并且根据editText中是否是内容来控制按钮的可用性
- NTP网络时间协议
- Android代码混淆
- WiFi一些功能的配置
- 怎么给一个函数的运行设置超时
- PLSQL设置快捷键
- 组合数学中的项链计数
- javascript经典 面试题及答案
- 找呀志_ContentResolver操作ContentProvider数据
- 使用iScroll时,input等不能输入内容的解决方法(share)
- wpf绑定之格式化日期
- 11种ASP连接数据库的方法
- 【代码】如何在手机等移动平台上浏览器网页中点击链接跳转到QQ聊天界面
- C语言之break和continue
- mysql 卖家数据 查询模板 放在博客里 方便使用