Android 程序崩溃日志邮件获取

版权声明:本文为博主原创文章,未经博主允许不得转载。

在我们开发Android应用程序的时候,BUG的出现是难以避免的,时不时还会出现崩溃的情况,这个时候,我们急需知道造成问题的原因是什么,但是,在没有连接ADT或者AS的情况下,我们很难获取到崩溃的日志,当然,如果你的手机获取到了最高的root权限,可以下载一些软件来得到log,比如:ES文件浏览器等。但是,并不是所有手机都能root,而且如果是在客户在使用,种种情况下,导致我们不能及时和准确的获取到崩溃的原因,从而迅速的解决问题。基于这个原因,下面分享一个很好获取到崩溃时日志的方法

第一步:导入mail.jar

首先我们将下载好的mail.jar导入到项目中去。

第二步:初始化

在Application中进行初始化

// crash记录及上传

CrashHandler.getInstance().init(this);

第三步:开始编码CrashHandler

CrashHandler类主要用于收集错误信息 发送错误报告。

1、由于我们在很多地方都会使用到CrashHandler的对象,所以单例模式最好不过了。

/** 获取CrashHandler实例 ,单例模式 */

public static CrashHandler getInstance() {

if(INSTANCE==null) {

INSTANCE=newCrashHandler();

}

return INSTANCE;

}


2、初始化初始化,注册Context对象, 获取系统默认的UncaughtException处理器, 设置该CrashHandler为程序的默认处理器

public void init(Context ctx) {

mContext= ctx;

mDefaultHandler= Thread.getDefaultUncaughtExceptionHandler();

Thread.setDefaultUncaughtExceptionHandler(this);


3、CrashHandler需要继承UncaughtExceptionHandler接口,用于收集数据。

public class CrashHandler implements UncaughtExceptionHandler

实现UncaughtExceptionHandler的回调接口uncaughtException;

图1

自定义错误处理,收集错误信息 发送错误报告等操作均在此完成. 开发者可以根据自己的情况来自定义异常处理逻辑

图2

collectCrashDeviceInfo是收集程序崩溃的设备信息的方法;restart()是崩溃后重新启动应用的方法;saveCrashInfoToFile是保存错误信息到SD卡中,然后发送日志到你的邮箱中。

图3
图4

后续由于截图问题。没有截图完全,但是主要demo已经截完= =;

做到这里。就只差发邮件这一步了。

第四步:发邮件

这里新建了一个工具类EmailUtil用于操作发送邮件。

主要用到2个方法。不过在此之前需要注册网易邮箱,因为我使用的是smtp163服务器。

由于下面的篇幅比较大,又比较重要,所以直接po了上来就没截图了。原谅新手不会用简书。。。

public static void SendEmail(String host,finalString address, String from,finalString password, String to, String port, String subject, String content)throwsException {

Multipart multiPart;

String finalString ="";

Properties props = System.getProperties();

props.put("mail.smtp.starttls.enable","true");

props.put("mail.smtp.host", host);

props.put("mail.smtp.user", address);

props.put("mail.smtp.password", password);

props.put("mail.smtp.port", port);

props.put("mail.smtp.auth","true");

Log.i("Check","done pops");

Session session = Session.getDefaultInstance(props,newAuthenticator() {

protectedjavax.mail.PasswordAuthentication getPasswordAuthentication() {

//此处必须做验证,才能发送邮件

returnnewjavax.mail.PasswordAuthentication(address,

password);

}

});

DataHandler handler =newDataHandler(newByteArrayDataSource(finalString.getBytes(),"text/plain"));

MimeMessage message =newMimeMessage(session);

message.setFrom(newInternetAddress(from));

message.setDataHandler(handler);

Log.i("Check","done sessions");

multiPart =newMimeMultipart();

InternetAddress toAddress;

toAddress =newInternetAddress(to);

message.addRecipient(Message.RecipientType.TO, toAddress);

Log.i("Check","added recipient");

message.setSubject(subject);

message.setContent(multiPart);

message.setText(content);

Log.i("check","transport");

Transport transport = session.getTransport("smtp");

Log.i("check","connecting");

transport.connect(host, address, password);

Log.i("check","wana send");

transport.sendMessage(message, message.getAllRecipients());

transport.close();

Log.i("check","sent");

}

到此,整个功能就完成了。其实很简单的,主要是采集崩溃信息和保存以及发送邮件。写的不好,但是能够满足需求,希望大家能够在其中获益,我也会继续。









最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容