我希望我的应用的用户能够发送电子邮件然后返回我的应用。
我已实现此功能,如下所示
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setType("text/plain");
emailIntent.putExtra(Intent.EXTRA_EMAIL , new String[]{"test@gmail.com"});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Message subject");
emailIntent.putExtra(Intent.EXTRA_TEXT , "Message text");
try {
startActivityForResult(Intent.createChooser(emailIntent, "Send mail..."), 42);
} catch (android.content.ActivityNotFoundException ex) {
Toast toast = Toast.makeText(getApplicationContext(), "There are no email clients installed.", Toast.LENGTH_SHORT);
toast.show();
}
我已经测试了HTC Sensation上的实现,它运行正常,至少在选择Gmail应用时。
我的问题是startActivityForResult()文档中的这一节 “请注意,此方法只应与定义为返回结果的Intent协议一起使用。在其他协议(例如ACTION_MAIN或ACTION_VIEW)中,您可能无法获得预期的结果。例如,如果您要启动的活动使用singleTask启动模式,它不会在您的任务中运行,因此您将立即收到取消结果。“
我搜索了一个意图协议列表,这些协议旨在从startActivityForResult()中使用,但还没有找到任何协议。
有这样的清单吗?
从startActivityForResult()使用Intent.ACTION_SEND可以吗?我可以在所有设备上使用相同的行为吗?
由于
/的Mathias
答案 0 :(得分:1)
这样做是可以的(你不会得到任何错误)。但是,您不会在onActivityResult
中收到任何相关结果,这就是您应该致电startActivity()
的原因。
平台不会对startActivityForResult
应该或不应该使用哪些意图操作强制执行任何规则。文档只是建议你应该只使用这种方法和记录的意图返回一些内容。
如果您依靠onActivityResult()
来确定其他活动何时结束并且您的活动已恢复,那就不正确了。只需使用onResume()
代替。