2011-09-27 18 views

Respuesta

55

Sé que esta pregunta se responde ya, pero tengo una mejor solución ..

Cuando su actividad se inició ed solo por startActivity() un método getCallingActivity() en actividad objetivo devolverá null. Cuando fue llamado por startActivityForResult() devolverá el nombre de la actividad de llamada.

Ver getCallingActivity para más detalles.

Para que pueda verificar en Actividad antes de finalizar la actividad de llamadas. Si el resultado es nulo, se llamó a Activity por startActivity() y si el resultado no es null, se llamó a Activity por startActivityForResult(). Eso es.

ejemplo: -

if (getCallingActivity() == null) { 
    //This Activity was called by startActivity 
} else { 
    //This Activity was called by startActivityForResult 
} 
+0

una solución más limpia que la bandera a través de la intención ... gracias – WarrenFaith

+0

@WarrenFaith Gracias. –

+0

Tenga en cuenta que 'getCallingActivity()' devuelve 'null' si el modo de inicio de actividad de la actividad iniciada es' singleTask' o 'singleInstance', o comenzó con' FLAG_ACTIVITY_NEW_TASK'. – EpicPandaForce

3

puede poner una bandera como "0" y "1", poniéndola en la intención, entonces si es "0" entonces es startActivity o "1" para startActivityForResult ... esto es simple, ¿verdad?

+0

Esto es un poco complicado, ya que maneja más datos de lo que realmente necesita. La respuesta a continuación de @PankajKumar es la más clara posible. – WarrenFaith

6

Creo que debe exponer varias intenciones para la misma actividad en su manifiesto, luego pruebe la intención de la llamada para adaptar su comportamiento.

ejemplo para su actividad filtro de intención en el manifiesto:

<intent-filter> 
    <action android:name="android.intent.action.VIEW" /> 
    <action android:name="android.intent.action.EDIT" /> 
    <action android:name="android.intent.action.PICK" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 

y el código correspondiente en su actividad onCreate:

if (getIntent().getAction().equals(Intent.ACTION_VIEW)) { 
     // do whatever you need to do here 
} else if (getIntent().getAction().equals(Intent.ACTION_PICK)){ 
... 
} 
+0

esto también es un enfoque gud – Harinder

Cuestiones relacionadas