为了账号安全,请及时绑定邮箱和手机立即绑定

需要处理未处理的异常并发送日志文件

需要处理未处理的异常并发送日志文件

暮色呼如 2019-08-01 02:01:30
需要处理未处理的异常并发送日志文件当我的应用程序创建一个未处理的异常时,而不是简单地终止,我想首先给用户一个发送日志文件的机会。我意识到在得到随机异常后做更多的工作是有风险的,但是,最糟糕的是应用程序已经崩溃,日志文件没有发送。这比我预期的要复杂得多:)工作原理:(1)捕获未知异常,(2)提取日志信息并写入文件。不起作用的是:(3)开始发送电子邮件的活动。最终,我还有另一个活动需要用户的许可。如果我让电子邮件活动正常工作,我不希望给对方带来太大的麻烦。问题的症结在于,未处理的异常在我的Application类中被捕获。因为这不是一个活动,所以如何使用Intent.ACTION_Send启动一个活动并不明显。也就是说,通常启动一个叫做startActivity并使用onActivityResult的活动。这些方法由活动支持,但不受应用程序的支持。对如何做到这一点有什么建议吗?下面是一些代码片段作为开始指南:public class MyApplication extends Application{   defaultUncaughtHandler = Thread.getDefaultUncaughtExceptionHandler();   public void onCreate ()   {     Thread.setDefaultUncaughtExceptionHandler (new Thread.UncaughtExceptionHandler()     {       @Override       public void uncaughtException (Thread thread, Throwable e)       {         handleUncaughtException (thread, e);       }     });   }   private void handleUncaughtException (Thread thread, Throwable e)   {     String fullFileName = extractLogToFile(); // code not shown     // The following shows what I'd like, though it won't work like this.     Intent intent = new Intent (Intent.ACTION_SEND);     intent.setType ("plain/text");     intent.putExtra (Intent.EXTRA_EMAIL, new String[] {"me@mydomain.com"});     intent.putExtra (Intent.EXTRA_SUBJECT, "log file");     intent.putExtra (Intent.EXTRA_STREAM, Uri.parse ("file://" + fullFileName));     startActivityForResult (intent, ACTIVITY_REQUEST_SEND_LOG);   }   public void onActivityResult (int requestCode, int resultCode, Intent data)   {     if (requestCode == ACTIVITY_REQUEST_SEND_LOG)       System.exit(1);   }}
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 548 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信