¿Cómo encontrar Intent source en Android?

Posible duplicado:
Android: ¿Cómo obtener el remitente de una Intención?

¿Hay alguna manera en android para encontrar la actividad de origen que desencadena un INTENTO (en la actividad de destino)?

El escenario es que tengo dos actividades A y B. Ambos disparan una intención de llamar a la actividad C. La actividad C muestra información adicional basada en su fuente. P.ej. Si la llamada viene de A, entonces C muestra sólo 2 vistas de texto, mientras que en el caso de intención disparada por B la actividad C muestra 3 vistas de texto (básicamente, más información basada en quién es la persona que llama).

Para establecer esto, necesito saber quién disparó la intención de llamar a C. ¿Cómo hago esto?

Una mejor manera de hacer esto sería utilizar los extras de Intent para pasar parámetros al receptor.

Si nos fijamos en la clase Intent.java, podemos ver sólo los miembros incluidos

private String mAction; private Uri mData; private String mType; private String mPackage; private ComponentName mComponent; private int mFlags; private HashSet<String> mCategories; private Bundle mExtras; 

No creo que ninguno de estos miembros incluyan información del remitente, haciendo la respuesta a la pregunta no. Usted no podría hacer esto para una intención arbitraria.

¿Podría esto considerarse una solución?

Tenga A & B llamada startActivityForResult lugar de startActivity , entonces usted puede llamar a getCallingActivity().getClassName() para recuperar el origen.

Si la aplicación C tiene el permiso GET_TASKS, puede ver cuál fue la tarea más reciente.

 ActivityManager man = (ActivityManager) getSystemService(ACTIVITY_SERVICE); List<ActivityManager.RecentTaskInfo> list = man.getRecentTasks(1, 0); //You might want to check if(list.size() > 0) Intent caller = list.get(0).baseIntent; //look at caller.getComponent() for the package and class 

En mis pruebas, encontré que baseIntent en la parte superior de la pila de tareas recientes era el identificador más fiable. Hay más discusión sobre por qué es posible que no quiera hacer esto en https://stackoverflow.com/a/12376775/1135142

Supongo que si tienes algún control sobre A y B, podrías pedirles que pidan un resultado como ya se mencionó.

  • Android - ¿hay una manera de definir la resolución de vídeo cuando se toma video de la aplicación?
  • ¿Qué resoluciones de aplicaciones para Android son compatibles?
  • ¿Cómo sé cuánto DPI tiene el dispositivo?
  • Cómo escalar mapas de bits en View.Canvas en Android?
  • Tablet carpeta extraíble para la tableta
  • Cómo calcular dp de píxeles en android programaticamente
  • ¿Hay una manera de determinar la altura de la pantalla física de android en cm o pulgadas?
  • Convertir píxeles en dp
  • Diseño para Android - ¿Resolución?
  • Galaxy Tab 10.1 resolución de pantalla utilizable (- la barra de menú)
  • La mayoría de los tamaños de pantalla populares / resoluciones en los teléfonos Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.