我们如何使用startActivityforResult()作为电子邮件意图?
我正在使用附件发送电子邮件的意图,它工作正常,我想要得到这个电子邮件意图结果,我已经使用startActivityforResult()
,但我无法得到电子邮件意图的结果,我们如何使用startActivityforResult()
电子邮件意向?
谢谢大家
你不能,这不是API的一部分。 即使没有发送按钮,它也会返回
没有像之前提到的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
方法应该在主机活动中被覆盖。
你可以,但它丑陋,不雅。 我会努力解决这个问题。 主要问题:电子邮件发送后,您最终只能在黑屏上看到顶部的应用程序标题。
如果必须的话,我会做一个'点击继续'。
无论如何:主类的第一个片段将报告写入SD卡,然后调用将发送电子邮件的活动。
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文件的onactivity结果:
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;}
}
}
链接地址: http://www.djcxy.com/p/23245.html
上一篇: how can we use startActivityforResult() for Email intent?
下一篇: deleting and creating new child collection in Nhibernate in same session