微不足道:获取在Android发送的电子邮件的确认

在开始一个电子邮件的意图之后,我怎么能得到电子邮件已经发送的确认,或者是否有错误返回到被调用的活动?

Intent emailIntent = new Intent(Intent.ACTION_SEND); emailIntent.setType("png/image"); String subject = "Email Subject"; String body = "Message Body"; emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject); emailIntent.putExtra(Intent.EXTRA_TEXT, body); emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/" + IMAGE_FILENAME)); startActivity(Intent.createChooser(emailIntent, "Send email...")); //Here I need to do something on a successfully sent email 

也许开始activityForResult? 但是,如果有什么结果我应该期待吗?

Solutions Collecting From Web of "微不足道:获取在Android发送的电子邮件的确认"

这真的取决于你的Intent发起的应用程序。 这可能是Gmail应用程序,也可能是电子邮件应用程序,也可能是任何第三方应用程序。 正因为如此,没有100%可靠的方法来确定用户是否真的按下发送或不。

您唯一可以做的就是检查Gmail和电子邮件应用程序是否通过startActivityForResult调用并返回任何相关的内容。 但要小心,这是不可靠的,因为再次,可能有第三方应用程序。 而且,由于这些应用程序没有公开指定它们返回的内容,所以在某些时候可能会改变它,而没有任何通知。

你不能从电子邮件意图中得到任何有用的结果码。 一旦发送开始或发送被取消,onActivityResult总是返回0。

另外,如果您附加文件,则在读取这些文件之前调用onActivityResult。

你不可以做这个。

ACTION_SEND没有任何输出,因此总是得到默认值RESULT_CANCELED。

你也不能用Intent数据来检查它,因为它始终为空邮件发送或放弃。

查看我的问题和回复: 从Android发送的电子邮件中获取收件人数量