发送电子邮件后返回应用程序

时间:2014-09-11 15:43:19

标签: java android android-intent android-activity

下面的代码是我目前用于列表视图项目的代码,这样当我点击它时,电子邮件编辑器就会启动。但是在发送消息后,它并没有带我回到我的应用程序。如何在发送电子邮件后将其返回到我的应用程序?如果有人有更好的方法,请告诉我。

感谢所有帮助。

if(position == 7) {
Log.i("Send email", "");

String[] TO = {"person@gmail.com"};
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setData(Uri.parse("mailto:person@gmail.com"));
emailIntent.setType("text/plain");


emailIntent.putExtra(Intent.EXTRA_EMAIL, TO);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Your subject");
emailIntent.putExtra(Intent.EXTRA_TEXT, "Email message goes here");

try {
    startActivity(Intent.createChooser(emailIntent, "Send mail..."));
    finish();
    Log.i("Finished sending email...", "");
} catch (android.content.ActivityNotFoundException ex) {
    Toast.makeText(MainActivity.this,
            "There is no email client installed.", Toast.LENGTH_SHORT).show();
}
}

3 个答案:

答案 0 :(得分:3)

您的代码不使用javamail API,而是使用用户设备上安装的电子邮件客户端之一。因此,这将导致用户选择意图的EXTRA_TEXT部分中指定的邮件。从这一部分;

try {
                    startActivity(Intent.createChooser(emailIntent, "Send mail..."));
                    finish();
                    Log.i("Finished sending email...", "");
                } catch (android.content.ActivityNotFoundException ex) {
                    Toast.makeText(MainActivity.this,
                            "There is no email client installed.", Toast.LENGTH_SHORT).show();
                }

只需从代码中删除方法'finish()'即可。这将导致用户在处理邮件后点击后退按钮后返回到您的应用程序。方法finish()使活动结束调用onStop()甚至onDetach()方法,如果用户在他的设备上配置某个选项以获得最低功耗。

答案 1 :(得分:2)

从电子邮件意图开始新活动后,您不应该立即完成活动。请删除finish()调用,这应该可以解决您的问题。发送电子邮件后,电子邮件活动将被销毁,并且应显示您之前的活动。

答案 2 :(得分:1)

您的应用程序退出是因为您在try {...}中调用的finish()方法将在执行代码之后立即停止活动。删除或注释finish()方法来解决这个问题。