pasé algún tiempo excavando este tema y mi conclusión es que es imposible sin ciertos cambios en ambos Actividades (X
yY
):
En Activity X
:
- Debe crear uno más
PendingIntent
(P2
), esta vez en el contexto Activity X
, usando X.createPendingResult
. Ahora, enviar datos a través del P2
dará como resultado la llamada al X.onActivityResult
.
- Debería adjuntar
PendingIntent P2
como un extra de PendingIntent P
antes de send
-solo.
En Activity Y
:
- Debe extraer
PendingIntent P2
de su getIntent()
.
- No debe llamar al
setResult
, pero establezca los resultados en algunos campos locales.
- Debe reemplazar
onDestroy
y enviar PendingIntent P2
desde allí.
¿Por qué es así?
Supongo que es algo sobre la seguridad de un tipo. Activity Y
se puede iniciar en una tarea separada (que Activity X
). ¿Tal vez setResult
está destinado a manejar los resultados pasados solo dentro de la misma tarea? Para la definición de la tarea, vea here.
PS. Al igual que con la llamada 'startActivityFotResult', también me gustaría recibir una notificación cuando se cancela Y (en este caso, R es igual a 'RESULT_CANCELED'). – wrygiel