我使用意向发送带附件的电子邮件,工作正常,我想获得此电子邮件意图结果,我已经使用startActivityforResult()
,但我无法获得电子邮件意图的结果,我们怎么能使用startActivityforResult()
进行电子邮件意图?
全部谢谢
答案 0 :(得分:12)
你不能,这不是API的一部分。即使未发送
,也会在按下发送按钮后返回答案 1 :(得分:0)
之前没有建议的API。但...
但是有一个解决方法。最好的方法是使用startActivityForResult()
而不是startActivity()
来启动电子邮件意图。
然后,您的onActivityResult
方法应如下所示:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == YOUR_REQUEST_CODE){
if (resultCode == RESULT_OK && data != null){
//if data is not null, the user has clicked the send button
//in his email application
}
}
}
请注意,如果您从片段中调用startActivityForResult()
,请始终使用您的活动上下文,例如context.startActivityForResult()
,并在您的主机活动中覆盖onActivityResult
方法。
答案 2 :(得分:-2)
你可以,但它丑陋且不优雅。我会努力平滑这个。 主要问题:发送电子邮件后,您最终会在黑屏上显示除了顶部的应用标题。
如果必须的话,我会做一个'点击进入继续'或者某事。
无论如何:来自主类的第一个片段将报告写入sdcard,然后调用将发送电子邮件的活动。
WriteReportToStorage();
Intent Emailreport = new Intent(bvsactivity.this, Emailreport.class);
startActivityForResult(Emailreport,emailreport_ran);
接下来,在emailreport课程中,我们执行标准电子邮件+附件发送代码:
public class Emailreport extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Intent email = new Intent(android.content.Intent.ACTION_SEND);
email.setType("text/html
");
email.putExtra(android.content.Intent.EXTRA_SUBJECT, "subject");
email.putExtra(android.content.Intent.EXTRA_TEXT, "body");
email.putExtra(android.content.Intent.EXTRA_STREAM, Uri.parse("file:/" + Environment.getExternalStorageDirectory() + "//Report.html"));
startActivity(Intent.createChooser(email, "Email:"));
}
最后,回到你的'main'类,删除sdcard文件的onactivityresult:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Actions based on which menu item we chose.
if (requestCode == emailreport_ran) {boolean deleted = reportfile.delete(); emailreport_ran = 1;}
}
}