在android中发送邮件后如何返回活动?

在android中发送邮件后如何返回活动?,android,email,android-activity,start-activity,Android,Email,Android Activity,Start Activity,一切正常,邮件也正常发送。但发送邮件后我无法返回活动 当前屏幕历史记录为false。我也使用了带有结果代码的开始活动。但无法完成 能否有人指导或提供一些样本代码,这将是真正有用的我 bookByMail.setOnClickListener(new View.OnClickListener() {// sending mail details @Override public void onClick(View v) {

一切正常,邮件也正常发送。但发送邮件后我无法返回活动

当前屏幕历史记录为false。我也使用了带有结果代码的开始活动。但无法完成

能否有人指导或提供一些样本代码,这将是真正有用的我

bookByMail.setOnClickListener(new View.OnClickListener() {// sending mail details
                @Override
                public void onClick(View v) {                   
                    String mailId ="deepakmeccse26@gmail.com";
                      String sms = messageSummary.getText().toString();
                      String subject="Bottle Order";
                      Intent email = new Intent();
                      email.putExtra(Intent.EXTRA_EMAIL,new String[]{"bbbb@gmail.com","aaa@gmail.com"});
                      email.putExtra(Intent.EXTRA_CC, new String[]{"xxxx@gmail.com"});
                      email.putExtra(Intent.EXTRA_BCC, new String[]{"xxx@gmail.com"});
                      email.putExtra(Intent.EXTRA_SUBJECT, subject);
                      email.putExtra(Intent.EXTRA_TEXT, sms);           
                      email.setType("sms/rfc822");   
                      //email.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);                
                     startActivity(Intent.createChooser(email, "Choose an Email client :"));                                      
                                }                                           
            });         
    dialog.show();
    }   
        });
        }

使用而不是
startActivity()
。在
意图
操作完成后,这将返回到开始的
活动
。有关示例,请参阅文章。

在这种情况下,您应该使用
startActivityForResult()
方法

此方法启动一个新活动并等待生成的结果代码 当新活动退出时来自新活动

您需要进行一些更改,如:

bookByMail.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {                   
        String mailId ="deepakmeccse26@gmail.com";
        String sms = messageSummary.getText().toString();
        String subject="Bottle Order";
        Intent email = new Intent();
        email.putExtra(Intent.EXTRA_EMAIL,new String[]{"bbbb@gmail.com","aaa@gmail.com"});
        email.putExtra(Intent.EXTRA_CC, new String[]{"xxxx@gmail.com"});
        email.putExtra(Intent.EXTRA_BCC, new String[]{"xxx@gmail.com"});
        email.putExtra(Intent.EXTRA_SUBJECT, subject);
        email.putExtra(Intent.EXTRA_TEXT, sms);           
        email.setType("sms/rfc822");   
        startActivityForResult(Intent.createChooser(email, "Choose an Email client :"), 800);                                      
    }                                           
});         
并通过重写ActivityResult()方法等待响应:

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == 800) {
        //Called when returning from your email intent
    }
}

在我的测试中,下面的代码启动一个电子邮件客户端并开始编写电子邮件。当我单击“发送”或“放弃”时,我将自动返回到执行代码以启动电子邮件客户端的活动。请注意,代码使用的是
startActivity()
,而不是
startActivityForResult()

使用此代码不起作用的是返回到使用Up导航启动电子邮件客户端的活动(单击操作栏左侧的箭头)。使用
startActivityForResult()
而不是
startActivity()
没有任何区别

public void onClickSendEmail(View unused) {
    String body = "App Version Code: " + BuildConfig.VERSION_CODE;
    body += "\nApp Version Name: " + BuildConfig.VERSION_NAME;
    body += "\nOS API Level: " + android.os.Build.VERSION.SDK_INT;
    body += "\nDevice: " + android.os.Build.DEVICE;
    body += "\nModel: " + android.os.Build.MODEL;
    body += "\nProduct: " + android.os.Build.PRODUCT;

    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("plain/text");
    intent.putExtra(Intent.EXTRA_EMAIL, new String[] { getString(R.string.roamfree_email_addess) });
    String userId = "fakeid";
    intent.putExtra(Intent.EXTRA_SUBJECT, "RoamFree Feedback: User Id " + userId);
    intent.putExtra(Intent.EXTRA_TEXT, body);
    startActivity(Intent.createChooser(intent, "Choose Email Client:"));
}

创建方法时的内部活动

    btn_save.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String isim = innerName.getText().toString();
            String yurtIsmi = innerYurtName.getText().toString();
            String telNo = innerTelNo.getText().toString();
            String message = " ";
            String messageTitle = isim + " Hello ";
            String messageBody = isim + " " + yurtIsmi + "\n" + " " + ulke_sehir + "\n" + " " + telNo + "\n" + " " + message;
            try {
                Intent i = new Intent(Intent.ACTION_SEND);
                i.setType("message/rfc822");
                i.putExtra(Intent.EXTRA_EMAIL, new String[]{"samir@gmail.com"});
                i.putExtra(Intent.EXTRA_SUBJECT, messageTitle);
                i.putExtra(Intent.EXTRA_TEXT, messageBody);
                // startActivity(Intent.createChooser(i, "Send mail..."));
                startActivityForResult(Intent.createChooser(i, "Choose an Email client :"),0);
            } catch (android.content.ActivityNotFoundException ex) {
                Toast.makeText(KayitAct.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
            }
        }
    });
在同一活动内接收结果

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    String sam = "";
    if (requestCode  == 0) { // Activity.RESULT_OK
        Toast.makeText(KayitAct.this, "Kayıt Talebiniz Tarfımıza İletildi \nEn Kısa Sürede Dönüş Yapılacaktır", Toast.LENGTH_LONG).show();
        Intent intentGoToMenu = new Intent(KayitAct.this, LoginActivity.class);
        startActivity(intentGoToMenu);
        overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
        finish();
    }

}

将您的意图发送到其他应用程序后,您无法返回到您的应用程序。。使用smtpok自己创建发送电子邮件的代码,并尝试让您知道。谢谢。您看到我的答案了吗?你在哪里找到这个?我也用过这个,你能提供StartActivityForResult()的示例代码吗?我也在搜索它。@Deepak:你看到发布的链接了吗?它有一个例子。