【问题标题】:Trivial: Get confirmation of email sent in android琐碎:获取在 android 中发送的电子邮件的确认
【发布时间】:2011-07-25 04:20:15
【问题描述】:

在启动电子邮件意图后,我如何才能确认电子邮件已发送或返回到调用它的活动中出现错误?

        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?但是如果有的话,我应该期待什么结果?

【问题讨论】:

    标签: java android email android-intent


    【解决方案1】:

    你不能这样做。

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

    你也不能用返回的 Intent 数据来检查它,因为无论是邮件发送还是丢弃,它总是为空。

    【讨论】:

      【解决方案2】:

      您无法从电子邮件意图中获得任何有用的结果代码。一旦发送开始或发送被取消,onActivityResult 总是返回 0。

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

      【讨论】:

        【解决方案3】:

        这实际上取决于您的Intent 启动的应用程序。它可以是 Gmail 应用程序,也可以是电子邮件应用程序,也可以是任何第三方应用程序。因此,没有 100% 可靠的方法来确定用户是否实际按下了 Send

        您唯一能做的就是检查 Gmail 和电子邮件应用程序在通过 startActivityForResult 调用时是否返回任何相关内容并依赖它。但请注意,这是不可靠的,因为可能还有第三方应用程序。此外,由于这些应用程序没有公开指定它们返回的内容,因此它们可能会在某些时候更改它,恕不另行通知。

        【讨论】:

        • 当时好像没有办法得到resultCode,谢谢你的帮助。
        • 当您按下取消时,Gmail 应用也会为 resultCode 返回 RESULT_OK :/
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-04-04
        • 1970-01-01
        • 2016-09-22
        • 2012-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多