[英]How can I check sent emails from my Android application? Or intent upon completion (regardless of email sent)?
我想检查电子邮件的完成情况,然后开始另一个活动。
因此,我的问题确实是如何检查i
的完成情况?
EDIT:
还是有一种方法可以在完成时关闭意图(无论发送了什么电子邮件)并检查该事件?
我正在使用:
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL , new String[]{"recipient@example.com"});
i.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
i.putExtra(Intent.EXTRA_TEXT , "body of email");
try {
startActivity(Intent.createChooser(i, "Send mail..."));
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(MyActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}
没有可靠的方法来确定您的电子邮件是否已发送。
从理论上讲,您可以使用startActivityForResult()
,但是根据电子邮件客户端的不同,您将得到不正确的结果。 例如,无论您发送邮件还是取消邮件(至少对我来说),GMail始终返回RESULT_CANCELED
,而如果电子邮件存储在云端硬盘中,Google云端硬盘将以RESULT_OK
正确响应, RESULT_OK
发送RESULT_CANCELED
。
public static final int REQUEST_CODE_MAIL = 1000;
private void startMailIntent(){
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL , new String[]{"recipient@example.com"});
i.putExtra(Intent.EXTRA_SUBJECT, "subject of email");
i.putExtra(Intent.EXTRA_TEXT , "body of email");
try {
startActivityForResult(Intent.createChooser(i, "Send mail..."), REQUEST_CODE_MAIL);
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(MyActivity.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == REQUEST_CODE_MAIL){
if(resultCode == RESULT_OK){
// Mail was sent.
} else if(resultCode == RESULT_CANCELED) {
// Sending was cancelled.
}
}
super.onActivityResult(requestCode, resultCode, data);
}
不幸的是,我认为你不能。 将数据发送到电子邮件客户端不会产生任何回传结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.