Android Intent.ACTION_是否为startActivityForResult()发送有效的Intent协议?

Android Intent.ACTION_是否为startActivityForResult()发送有效的Intent协议?,android,Android,我希望我的应用程序的用户能够发送电子邮件,然后返回到我的应用程序 我已经实现了这个特性,如下所示 Intent emailIntent = new Intent(Intent.ACTION_SEND); emailIntent.setType("text/plain"); emailIntent.putExtra(Intent.EXTRA_EMAIL , new String[]{"test@gmail.com"}); emailIntent.putExtra(Intent

我希望我的应用程序的用户能够发送电子邮件,然后返回到我的应用程序

我已经实现了这个特性,如下所示

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()文档中的这一部分 “请注意,此方法应仅用于定义为返回结果的意图协议。在其他协议中(如ACTION_MAIN或ACTION_VIEW),您可能无法获得预期的结果。例如,如果您正在启动的活动使用singleTask启动模式,它将不会在您的任务中运行,因此您将立即收到取消结果。“

我从startActivityForResult()中搜索了一个意图协议列表,但没有找到任何协议

有这样的清单吗

是否可以使用Intent.ACTION\u从startActivityForResult()发送?我可以在所有设备上排除相同的行为吗

谢谢

/Mathias

这样做是可以的(您不会得到任何错误)。但是,您将不会在中收到任何相关结果,这就是为什么您只需调用
startActivity()

平台不强制执行任何规则,在这些规则上,意向操作应该或不应该与
startActivityForResult
一起使用。文档只是建议您只应在记录了返回内容的意图的情况下使用此方法

如果您依赖于
onActivityResult()
来确定其他活动何时完成以及活动何时恢复,则这是不正确的。只需使用
onResume()