检查是否已调用活动以获取结果


81

是否有可能知道是否已经使用startActivityForResult()或是仅使用来开始某些活动以求结果startActivity()

我需要控制它,如果它要求结果,行为将有所不同。

Answers:


163

当您的活动仅由目标活动中的startActivity()一种getCallingActivity()方法启动时,将返回null

当它被调用时,startActivityForResult()将返回调用活动的名称。

请参阅文档getCallingActivity()

返回调用该活动的活动的名称。这是将数据setResult()发送到的人。您可以使用此信息来验证是否允许接收者接收数据。

注意:如果调用活动不期望结果(即未使用startActivityForResult(Intent, int)包含请求代码的表单),则调用包将为null。

退货

将会收到您答复的活动的ComponentName;如果没有,则为null。


1
如果您使用以下代码启动活动:FLAG_ACTIVITY_NEW_TASK,它不起作用:(((我必须在错误处理程序中从上下文中启动登录活动。)还有其他想法吗?谢谢!
2014年

如果活动以片段开始,则此方法不起作用:fragment.getActivity()。startActivityForResult(intent,requestCode);
Mario Lenci 2015年

@MarioLenci它对我来说正常工作。无论是从活动还是片段开始。
Robyer

@MarioLenci,因为当您处于片段中时,您getActivity().startActivityFor…不必startActivityForResult直接从片段中进行调用。
Martin Marconcini
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.