我们如何使用startActivityforResult()进行电子邮件意图?

时间:2010-09-23 11:53:00

标签: android android-intent

我使用意向发送带附件的电子邮件,工作正常,我想获得此电子邮件意图结果,我已经使用startActivityforResult(),但我无法获得电子邮件意图的结果,我们怎么能使用startActivityforResult()进行电子邮件意图?

全部谢谢

3 个答案:

答案 0 :(得分:12)

你不能,这不是API的一部分。即使未发送

,也会在按下发送按钮后返回

答案 1 :(得分:0)

之前没有建议的API。但... 但是有一个解决方法。最好的方法是使用startActivityForResult()而不是startActivity()来启动电子邮件意图。 然后,您的onActivityResult方法应如下所示:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   if (requestCode == YOUR_REQUEST_CODE){
    if (resultCode == RESULT_OK && data != null){
       //if data is not null, the user has clicked the send button
       //in his email application
     }

}

}

请注意,如果您从片段中调用startActivityForResult(),请始终使用您的活动上下文,例如context.startActivityForResult(),并在您的主机活动中覆盖onActivityResult方法。

答案 2 :(得分:-2)

你可以,但它丑陋且不优雅。我会努力平滑这个。 主要问题:发送电子邮件后,您最终会在黑屏上显示除了顶部的应用标题。

如果必须的话,我会做一个'点击进入继续'或者某事。

无论如何:来自主类的第一个片段将报告写入sdcard,然后调用将发送电子邮件的活动。

WriteReportToStorage();

Intent Emailreport = new Intent(bvsactivity.this, Emailreport.class);
startActivityForResult(Emailreport,emailreport_ran);

接下来,在emailreport课程中,我们执行标准电子邮件+附件发送代码:

public class Emailreport extends Activity {

@Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

final Intent email = new Intent(android.content.Intent.ACTION_SEND);
        email.setType("text/html

");
            email.putExtra(android.content.Intent.EXTRA_SUBJECT, "subject");
            email.putExtra(android.content.Intent.EXTRA_TEXT, "body");
            email.putExtra(android.content.Intent.EXTRA_STREAM, Uri.parse("file:/" +      Environment.getExternalStorageDirectory() + "//Report.html"));
            startActivity(Intent.createChooser(email, "Email:"));
        }

最后,回到你的'main'类,删除sdcard文件的onactivityresult:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // Actions based on which menu item we chose.
        if (requestCode == emailreport_ran) {boolean deleted = reportfile.delete(); emailreport_ran = 1;}
        }
 }