Перевірте, чи активність була викликана як результат


83

Чи можна дізнатися, чи якась діяльність була викликана для результату, використання startActivityForResult()чи лише почала використовувати startActivity()?

Мені потрібно контролювати це, якщо це вимагає результату, поведінка буде іншою.

Відповіді:


166

Коли ваша діяльність була розпочата тільки по методу цільової активності повернеться .startActivity()getCallingActivity()null

Коли він був викликаний, startActivityForResult()він поверне назву виклику діяльності.

Див. Документи для getCallingActivity():

Поверніть ім'я діяльності, яка викликала цю активність. Це те, кому setResult()будуть надіслані дані. Ви можете використовувати цю інформацію, щоб підтвердити, що одержувач має право отримувати дані.

Примітка: якщо виклик не очікує результату (тобто він не використовував startActivityForResult(Intent, int)форму, що містить код запиту), тоді виклик пакету буде нульовим.

Повернення

ComponentName діяльності, яка отримає вашу відповідь, або значення null, якщо ні.


1
Якщо ви починаєте активність з: FLAG_ACTIVITY_NEW_TASK, це не працює :( (мені потрібно було розпочати вхід в систему поза контекстом в обробнику помилок). Будь-які інші ідеї? Дякую!
bentzy

це не працює, якщо діяльність розпочато з фрагмента: fragment.getActivity (). startActivityForResult (intent, requestCode);
Mario Lenci

@MarioLenci Для мене це працює правильно. Незалежно від того, починаю це з діяльності чи фрагмента.
Robyer

@MarioLenci, тому що коли ви знаходитесь у фрагменті, вам не потрібно телефонувати getActivity().startActivityFor…з фрагмента, який вам потрібно зробити startActivityForResultбезпосередньо.
Мартін Маркончіні,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.