在onActivityResult中获取邮件发送通知 "Android"

7
我正在通过以下方式启动邮件活动:
//发送邮件
final int SENT_MAIL = 1;
startActivityForResult(Intent.createChooser(i, "发送邮件"), SENT_MAIL);
在 onActivityResult(int req, int res, Intent data) 中,我试图找到电子邮件发送的结果,以确认我的邮件是否已被用户发送或丢弃。但是,我收到了空的 Intent 数据:
即 data = null
在 onActivityResult(int req, int res, Intent data) 参数中,res 始终为 0。
即 res = 0;
请告诉我该怎么办?
谢谢!
1个回答

2
你需要联系所有可能会响应你的Intent(上面没有展示)的开发者,并询问他们是否支持使用startActivityForResult()来处理这样的Intent。很少有应用支持,而且你也很难追踪所有可能的Android电子邮件客户端。即使他们不支持startActivityForResult(),你仍然可以调用该方法,但在onActivityResult()中你将无法获得有意义的结果。
因此,在我看来,你所需求的是不切实际的。

感谢您的回复,但是还有什么解决方法吗??我只想从本机应用程序(在这种情况下..我假设Android手机上的Gmail是本机应用程序)中获得回调。 - Abhinava
@Abhinava: "但是还有没有其他解决方法吗?" 不行。AOSP电子邮件应用程序不使用setResult(),因此无法与startActivityForResult()一起使用。Gmail应用程序是闭源的。您可以为开源电子邮件应用程序贡献补丁,以添加该特定应用程序的此功能。 - CommonsWare
只是为了明确,您是说startActivityForResult不能与使用Gmail的意图一起使用,例如new Intent(Intent.ACTION_SEND).setType("message/rfc822"),因为它每次都会返回RESULT_CANCELLED,无论成功与否?我曾经发誓它以前对我有用,但现在我只得到RESULT_CANCELLED。 - dylan murphy
4
我理解您的意思是,除非活动专门编写支持“startActivityForResult()”的代码,否则您将收到所有此类请求的“RESULT_CANCELED”。作为一般规则,“ACTION_SEND”并不旨在支持“startActivityForResult()”,因为“ACTION_SEND”的文档没有像其他操作(例如“ACTION_PICK”)那样提供有关“结果”的说明。 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接