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

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

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

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

Когда ваша активность была запущена с помощью startActivity() getCallingActivity() метод 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 } 

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

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

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

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