cómo saber la actividad de llamadas en Android

Tengo una actividad que otras pocas actividades llaman. Por ejemplo: tengo Activity1, Activity2, Activity3. Activity1 llama Activity2 y pasa el parámetro. Activity3 también llama Activity2 y pasa el parámetro.

Ahora, en función de la actividad de llamada, Activity2 realiza alguna tarea. ¿Pero cómo sé qué actividad llama Activity2? ¿Alguien puede ayudarme?

A. Si puedes usar startActivityForResult

Según la respuesta de Zain Ali a continuación: Si puede iniciar la Actividad con startActivityForResult (), entonces puede obtener el nombre de la clase de actividad que llama por this.getCallingActivity (). GetClassName ();

B. Si no puedes usar startActivityForResult

Si no puede usar startActivityForResult (), puede usar el siguiente método: Puede pasar parámetros adicionales en intención, verificar el valor en actividad y actuar en consecuencia.

1) Defina una clase de interfaz o constantes para definir constantes enteras para indicar actividad de llamada

public interface ActivityConstants { public static final int ACTIVITY_1 = 1001; public static final int ACTIVITY_2 = 1002; public static final int ACTIVITY_3 = 1003; } 

2) Agregue parámetros adicionales en la intención al llamar a Activity2.

  Intent act2 = new Intent(context, Activity2.class); act2.putExtra("calling-activity", ActivityConstants.ACTIVITY_1); // or ActivityConstants.ACTIVITY_3 if called form Activity3 startActivity(act2); 

3) Compruebe el valor de este parámetro adicional en Activity2 y actúe en consecuencia.

 int callingActivity = getIntent().getIntExtra("calling-activity", 0); switch (callingActivity) { case ActivityConstants.ACTIVITY_1: // Activity2 is started from Activity1 break; case ActivityConstants.ACTIVITY_3: // Activity2 is started from Activity3 break; } 

Si inicia la actividad con startActivityForResult(Intent, int) , puede obtener la actividad de llamada mediante getCallingActivity().getClassName() .

En su actividad de llamada (FirstActivity):

 Intent i = new Intent(FirstActivity.this, SecondActivity.class); i.putExtra("classFrom", FirstActivity.class.toString()); startActivity(i); 

Y agregue el siguiente código en onCreate de la actividad llamada (SecondActivity):

 Bundle bundle = getIntent().getExtras(); if (bundle.getString("classFrom").equals(FirstActivity.class.toString())) { //Do some task } 

Tenga en cuenta que debe tener cuidado porque el objeto del paquete no puede ser nulo cuando realiza “b.getString (” classFrom “)”.

Podría pasar un parámetro adicional que especifique la Activity llamada.

Uso con éxito: (Actividad) .getLocalClassName ()

Pase cualquier cosa (String / int, etc.) para poner Extra y base en que haga su trabajo como

 Intent intent = new Intent(FirstActivity.this, SecondActivity.class); intent.putExtra("PARENT_ACTIVITY_REF", "ParentActivityIsA"); startActivity(intent); 

Y luego recibir en niño como

 String parentActivityRef = intent.getStringExtra("PARENT_ACTIVITY_REF"); 

entonces

 if (parentActivityRef.equals("ParentActivityIsA"){ // do your work here }else if ...{ // ... }else{ //... } 

Estoy usando esta línea

  if (((((ActivityManager) getSystemService(Context.ACTIVITY_SERVICE)).getRunningTasks(1).get(0).baseActivity)).compareTo(new ComponentName(getPackageName() , AnyActivityWantToCheck.class.getName())) == 0){ // do somthing ..... } 

espero que trabaje contigo