Spędziłem trochę czasu kopania ten problem i mój wniosek jest taki, że jest niemożliwe bez pewnych zmian w obu Działalności (X
iY
):
W Activity X
:
- Powinieneś utworzyć jeszcze jeden
PendingIntent
(P2
), tym razem w kontekście Activity X
, używając X.createPendingResult
. Teraz wysyłanie danych przez P2
spowoduje wywołanie X.onActivityResult
.
- Powinieneś dołączyć
PendingIntent P2
jako dodatkową z PendingIntent P
przed send
.
W Activity Y
:
- Należy wyodrębnić
PendingIntent P2
od jego getIntent()
.
- Nie powinieneś dzwonić pod numer
setResult
, ale ustawić wyniki w niektórych lokalnych polach.
- Powinieneś przesłonić
onDestroy
i wysłać tam stamtąd PendingIntent P2
.
Dlaczego tak się dzieje?
Sądzę, że to coś w rodzaju bezpieczeństwa. Activity Y
można uruchomić w oddzielnym zadaniu (niż Activity X
). Być może setResult
jest przeznaczony do obsługi przekazywania wyników tylko w ramach tego samego zadania? Definicję zadania można znaleźć na stronie here.
PS. Podobnie jak w przypadku zwykłego wywołania 'startActivityFotResult', chciałbym również otrzymać powiadomienie, gdy Y zostanie anulowane (R jest równe' RESULT_CANCELED' w tym przypadku). – wrygiel