可能重复: 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应用程序中发送电子邮件,这使我能够使用结果吗? (请提供代码示例。)
提前感谢您的回复。
编辑:将问题的第二部分粗体化,以明确这不是一个完整的重复问题..