如何知道是使用startActivityForResult调用活动还是仅使用startActivity调用?

时间:2011-09-27 05:08:26

标签: android

或者我应该在Intent中发送一些额外的数据来知道调用吗?如果没有预定义的方法,比如getIntent并对它做些什么?

3 个答案:

答案 0 :(得分:55)

我知道这个问题已经回答,但我有更好的解决方案..

当您的活动仅以startActivity()开始时,目标活动中的getCallingActivity()方法将返回null。当它被startActivityForResult()调用时,它将返回调用活动的名称。

有关详细信息,请参阅getCallingActivity

因此,您可以在完成呼叫活动之前检查活动。如果result为null,则startActivity()调用Activity,如果result不为null,则startActivityForResult()调用Activity。而已。

示例: -

if (getCallingActivity() == null) {
    //This Activity was called by startActivity 
} else {
   //This Activity was called by startActivityForResult
}

答案 1 :(得分:6)

我认为您应该在清单中为同一个活动公开几个意图,然后测试调用意图以调整您的行为。

清单中活动意图过滤器的示例:

  <intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <action android:name="android.intent.action.EDIT" />
    <action android:name="android.intent.action.PICK" />
    <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>

以及活动onCreate中的相应代码:

if (getIntent().getAction().equals(Intent.ACTION_VIEW)) {
        // do whatever you need to do here
} else if (getIntent().getAction().equals(Intent.ACTION_PICK)){
 ...
}

答案 2 :(得分:3)

你可以放一个像“0”和“1”的标志,把它放在意图中,所以如果“0”那么它的startActivity或“1”表示startActivityForResult ......这很简单,不是吗?