在android中发送邮件后如何返回活动?
一切正常,邮件也正常发送。但发送邮件后我无法返回活动 当前屏幕历史记录为false。我也使用了带有结果代码的开始活动。但无法完成 能否有人指导或提供一些样本代码,这将是真正有用的我在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) {
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:你看到发布的链接了吗?它有一个例子。