1

我正在使用 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 );

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

4

1 回答 1

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 );
于 2013-06-21T07:08:04.190 回答