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

Har*_*der 13 android

或者我应该在意图中发送一些额外的数据来知道呼叫吗?如果没有预定义的方法,喜欢getIntent并做一些事情吗?

Pan*_*mar 57

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

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

有关更多详细信息,请参阅getCallingActivity.

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

例如: -

if (getCallingActivity() == null) {
    //This Activity was called by startActivity 
} else {
   //This Activity was called by startActivityForResult
}
Run Code Online (Sandbox Code Playgroud)


Lau*_*nt' 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>
Run Code Online (Sandbox Code Playgroud)

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

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