或者我应该在Intent中发送一些额外的数据来知道调用吗?如果没有预定义的方法,比如getIntent
并对它做些什么?
答案 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 ......这很简单,不是吗?