gpt4 book ai didi

android - 在 onActivityResult 中检测电子邮件是否已发送

转载 作者:太空狗 更新时间:2023-10-29 15:54:12 24 4
gpt4 key购买 nike

我想在我的 onActivityResult 方法中检测是否有人发送了电子邮件或按下了后退按钮或丢弃了它。我怎样才能做到这一点。

我是这样做的

String[] reciepients = result.toArray(new String[result.size()]);
Intent email = new Intent(android.content.Intent.ACTION_SEND);
email.putExtra(android.content.Intent.EXTRA_EMAIL,reciepients);
email.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
email.putExtra(android.content.Intent.EXTRA_TEXT, emailMessage);
email.setType("text/plain");
email.setType("message/rfc822");
Intent intent = Intent.createChooser(email, "Choose Email Client");
//context.start(Intent.createChooser(email, "Choose Email.."));
((Activity)context).startActivityForResult(intent, FinalVariables.SEND_EMAIL);

onActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);

switch (requestCode) {


case FinalVariables.SEND_EMAIL:
if(resultCode==Activity.RESULT_CANCELED){
showToast("Cancelled");
}
else if(resultCode==Activity.RESULT_OK){
showToast("Success");
}
break;

default:
break;
}

}

但这种方式总是让我取消,因为电子邮件客户端永远不会将 RESULT 设置为 RESULT_OK。

那么我怎样才能满足我的要求。请提出建议。

谢谢

最佳答案

在阅读了有关此问题的工作人员的语气后,我了解到无法确切知道用​​户是按下了“发送”还是只是取消了。

但有一种方法可以至少查明用户是否打开了任何邮件客户端应用程序或从“使用完成操作”对话框中按下。 (在我的例子中,我只想在用户打开邮件客户端时完成 Activity ,而在用户从对话框中按回时什么也不做)。诀窍很简单。

由于对话框是一个 float 窗口,当它显示在 Activity 上时, Activity 中只调用了onPause()方法,但是当用户选择邮件客户端时,它是正在打开 onStop() Activity 方法也被调用。因此,您可以使用 startActivityForResult() 开始 ACTION_SEND :

startActivityForResult(intent, CODE_SEND);

还有一个 bool 标志,您将在 onPause()onStop() 中更改:

public class MainActivity extends Activity {
...

private boolean mailClientOpened = false;

@Override
protected void onResume() {
super.onResume();
mailClientOpened = false;
}

@Override
protected void onStop() {
super.onStop();
mailClientOpened = true;
}

并且在您的 onActivityResult() 中,您可以检查 requestCode 和 bool 值 ma​​ilClientOpened 以了解客户端是否已打开或用户取消了对话框:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == CODE_SEND && mailClientOpened){
finish(); // Or do something else that you need to do when you know that user at least opened the mail client app
}
}

附言我知道这不是问题的确切答案,但我希望这对某人有用。

关于android - 在 onActivityResult 中检测电子邮件是否已发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17102578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com