邮件发送后,默认邮件客户端继续在后台运行

时间:2013-06-17 08:40:18

标签: android email

我正在使用ACTION_SEND从我的应用程序发送邮件。它工作正常,但问题是,因为我使用Intent.FLAG_ACTIVITY_NEW_TASK标志发送邮件,即使邮件发送后,电子邮件客户端仍继续在后台运行。最糟糕的是它仍然显示我的电子邮件作为草稿(尚未发送)。

我使用以下代码从非活动

发送邮件
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("message/rfc822");
    intent.putExtra(Intent.EXTRA_SUBJECT, "Report issue: \""+mIssueTitle+"\"");
    intent.putExtra(Intent.EXTRA_TEXT, mailBody);       
    String[] mailIds = new String[] {getReportingMailId()};
    intent.putExtra(Intent.EXTRA_EMAIL, mailIds);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    App.getContext().startActivity( intent );

如何触发邮件客户端从非活动发送邮件,而邮件客户端永远不会在后台运行

1 个答案:

答案 0 :(得分:0)

好的,终于找到了解决方案。

问题是,我正在使用Application#Context来启动活动。当我们使用Application#Context时,会创建一个新任务(这就是为什么,如果我们不添加此标志然后应用程序崩溃,则在意图中添加标志Intent.FLAG_ACTIVITY_NEW_TASK)。

为了避免创建新任务,我们需要做的就是使用正确的上下文,即使用活动上下文。 (“在存储活动上下文引用的情况下,请小心并避免内存泄漏”)。所以代码如下

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("message/rfc822");
intent.putExtra(Intent.EXTRA_SUBJECT, "Report issue: \""+mIssueTitle+"\"");
intent.putExtra(Intent.EXTRA_TEXT, mailBody);       
String[] mailIds = new String[] {getReportingMailId()};
intent.putExtra(Intent.EXTRA_EMAIL, mailIds);

enclosingActivityContext.startActivity( intent );
相关问题