繁体   English   中英

使用DefaultExceptionHandler通过电子邮件发送崩溃报告

[英]sending crash report via email using DefaultExceptionHandler

背景

我正在尝试捕获所有崩溃并允许用户通过电子邮件发送我自己的自定义错误报告。

这是一个非常临时的解决方案,因为我需要发送应用程序的日志和其他信息。 它不打算发送给最终用户。 只有极少数测试人员。

这个怎么运作

无论如何,我已经创建了一个从java.lang.Thread.UncaughtExceptionHandler扩展的类,它有一个函数uncaughtException()。 我使用Thread.setDefaultUncaughtExceptionHandler()注册它,它真的捕获崩溃。

该函数将一些数据存储在外部存储上,并立即打开电子邮件应用程序(gmail)以发送崩溃报告。

问题

它工作得很好,但出于某种原因,当我关闭电子邮件应用程序时,应用程序本身将重新启动。

我尝试了多种组合:

  • System.exit(0)
  • android.os.Process.killProcess(android.os.Process.myPid());
  • 调用默认的UncaughtExceptionHandler。

没人工作。 它会关闭应用程序,但只要关闭电子邮件应用程序,应用程序就会自动重启

我也无法找到在捕获崩溃时如何处理UI线程上的事情(例如toasts,dialogs,...)。

我尝试过的另一个解决方案是打开一个发送崩溃报告的新活动。 遗憾的是,应用程序甚至没有开始活动。

我尝试过的另一件事是从ACRA库中读取,试图弄清楚他们是如何处理崩溃的。 可悲的是,我不明白那里发生了什么,即使从高层也不知道。

我在这里(在SO上)搜索了一个解决方案并找到了一些帖子,但没有一个对我有用。

这个问题

关闭电子邮件应用程序时,如何避免重新启动应用程序?

在看完你的问题后,我以为我会给崩溃报告一个去。

这是我的结果: https//github.com/slightfoot/android-crash-reporting

它拥有你想要的一切,甚至更多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM