Подтвердить что ты не робот

Как узнать, вызвана ли операция с помощью startActivityForResult или просто вызвана с помощью startActivity?

или я должен отправить некоторые дополнительные данные в Intent, чтобы знать вызов? Если нет предопределенного метода, например getIntent и что-то с ним делать?

4b9b3361

Ответ 1

Я знаю, что на этот вопрос уже дан ответ, но у меня есть лучшее решение.

Когда ваша активность была запущена только с помощью startActivity(), метод getCallingActivity() в целевой активности вернет null. Когда он был вызван startActivityForResult(), он вернет имя вызывающей активности.

Подробнее см. getCallingActivity.

Таким образом, вы можете проверить активность перед тем, как завершить операцию вызова. Если результатом является null, то Activity вызывается startActivity(), и если результат не равен null, то Activity вызывается startActivityForResult(). Это оно.

пример: -

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

Ответ 2

Я думаю, что вы должны разоблачить несколько намерений для одной и той же активности в вашем манифесте, а затем проверить намерение вызова адаптировать ваше поведение.

Пример фильтра фильтра активности в манифесте:

  <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)){
 ...
}

Ответ 3

вы можете поместить флаг как "0" и "1", помещая его в намерение, поэтому, если "0", то его startActivity или "1" для startActivityForResult... это просто, не так ли?