Android - 从Android应用程序发送电子邮件后的结果

时间:2014-05-27 11:34:35

标签: android email android-intent android-activity onactivityresult

  

可能重复: StartActivityForResults always returns RESULT_CANCELLED for Intent.ACTION_SEND& Show Toast after email send in android?

我想从我的Android应用中发送电子邮件。

我知道您可以使用以下代码执行此操作:

private void sendEmail(){
    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("message/rfc822");
    intent.putExtra(Intent.EXTRA_EMAIL, { "some_email1@gmail.com", "some_email2@gmail.com" });
    intent.putExtra(Intent.EXTRA_SUBJECT, "My Subject");
    intent.putExtra(Intent.EXTRA_TEXT, "My message");
    try{
        startActivity(Intent.createChooser(intent, "Send E-Mail"));
    }
    catch(ActivityNotFoundException ex){
        Toast.makeText(this, "There are no E-mail Clients installed on your Device.", Toast.LENGTH_LONG).show();
    }
}

我想知道的是邮件是否成功发送,或者用户是否已取消邮件(或其他错误)。

我确实尝试过改变:

startActivity(Intent.createChooser(intent, "Send E-Mail"));

startActivityForResult(Intent.createChooser(intent, "Send E-Mail"), 123);

并添加onActivityResult方法:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
    super.onActivityResult(requestCode, resultCode, data);

    // We come back after the starting Email Activity Client
    if(requestCode == 123){
        // Mail is successfully send:
        if(resultCode == Activity.RESULT_OK){
            // Do something
        }
        else
            // Do something else
        }
    }
}

Intent.ACTION_SEND只提供一个0的结果码(等于Activity.RESULT_CANCELED),无论它是否成功。

所以我的问题是:有没有人知道如何解决这个问题,以便在使用电子邮件意图时捕获并使用结果。 或者有人知道一种完全不同的(自定义)方式从Android应用程序中发送电子邮件,这使我能够使用结果吗? (请提供代码示例。)

提前感谢您的回复。

编辑:将问题的第二部分粗体化,以明确这不是一个完整的重复问题..

0 个答案:

没有答案