在Android中发送电子邮件后显示Toast?

5
我正在使用以下代码发送邮件:
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_EMAIL, new String[] { "abc@yahoo.com" });
i.putExtra(Intent.EXTRA_CC, new String[] { bcc_string });
i.putExtra(Intent.EXTRA_SUBJECT, "Video Suggest");
i.putExtra(Intent.EXTRA_TEXT, url_link); 

try {
   startActivityForResult(Intent.createChooser(i, "Send Mail..."), 1);
} catch (android.content.ActivityNotFoundException ex) {
   Toast.makeText(AllVideos.this, "There are no email clients installed.", Toast.LENGTH_SHORT)
   .show();
}

在我的onActivityResult中,我正在使用以下代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    // System.out.println("inactivity");
    // Toast.makeText(AllVideos.this, "Mail Send", 10).show();

    System.out.println("inside activity result");

    if (requestCode == 1) {
        if (requestCode == 1 && resultCode == RESULT_OK) {
            Toast.makeText(this, "Mail sent.", Toast.LENGTH_SHORT).show();

        } else if (requestCode == 1 && resultCode == RESULT_CANCELED) {
            Toast.makeText(this, "Mail canceled.", Toast.LENGTH_SHORT)
                    .show();
        } else {
            Toast.makeText(this, "Plz try again.", Toast.LENGTH_SHORT)
                    .show();
        }
    }
}

但每次我发送或丢弃邮件时,都会收到“邮件已取消”的提示。 请帮我解决这个问题。 提前致谢。

1
我认为onActivityResult根本不适用于发送电子邮件。 - Blundell
你无法展示,它不起作用。 - Lalit Poptani
@Blundell - onActivityResult正常工作,我可以发送邮件,但我只想在发送后显示一个toast。 - Shrikant
2个回答

3
根据链接,你无法使用 startActivityForResult() 来启动邮件 Intent,并且 ACTION_SEND 不会有任何输出结果,你始终会得到默认值 RESULT_CANCELED。同时,你也不能通过返回的 Intent 数据来检查它,因为无论是发送还是放弃发送都会返回 null 数据。

我想那就是了,因为我尝试了每一种可能的方法,但每次都得到相同的提示。 - Shrikant

-1

尝试这种方式。

 if (requestCode == 1) 
   {
        if (resultCode == RESULT_OK) 
        {
            Toast.makeText(this, "Mail sent.", Toast.LENGTH_SHORT).show();

        } 
        else if (resultCode == RESULT_CANCELED) 
        {
            Toast.makeText(this, "Mail canceled.", Toast.LENGTH_SHORT)
                    .show();
        } 
        else 
        {
            Toast.makeText(this, "Plz try again.", Toast.LENGTH_SHORT)
                    .show();
        }
  }

尝试了您提供的代码,但仍然出现“邮件已取消”提示。 - Shrikant
我认为没有任何地方指定电子邮件活动和短信活动会返回可以追踪的任何结果,因为我已经在我的应用程序中测试过了。当调用短信活动时,它总是返回零,即使消息已发送或未发送。 - Haresh Chaudhary
这也可能适用于电子邮件,因为它总是返回RESULT_CANCELED。由于Android不知道邮件是否已发送,因此它永远不会返回RESULT_OK。 - Shrikant

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