我正在使用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 );
如何触发邮件客户端从非活动发送邮件,而邮件客户端永远不会在后台运行
答案 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 );