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

我正在使用附件发送电子邮件的意图,它工作正常,我想要得到这个电子邮件意图结果,我已经使用startActivityforResult() ,但我无法得到电子邮件意图的结果,我们如何使用startActivityforResult()电子邮件意向?

谢谢大家


你不能,这不是API的一部分。 即使没有发送按钮,它也会返回


没有像之前提到的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方法应该在主机活动中被覆盖。


你可以,但它丑陋,不雅。 我会努力解决这个问题。 主要问题:电子邮件发送后,您最终只能在黑屏上看到顶部的应用程序标题。

如果必须的话,我会做一个'点击继续'。

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

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文件的onactivity结果:

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;}
        }
 }
链接地址: http://www.djcxy.com/p/23245.html

上一篇: how can we use startActivityforResult() for Email intent?

下一篇: deleting and creating new child collection in Nhibernate in same session