o debo enviar algunos datos adicionales en el intento de conocer la llamada? Si no hay un método predefinido, como getIntent
y hacer algo con él?¿Cómo saber si se llama a una actividad usando startActivityForResult o simplemente se llama usando startActivity?
Respuesta
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
}
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?
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
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)){
...
}
esto también es un enfoque gud – Harinder
- 1. Comprobando si se llama a una función usando Mocha
- 2. ¿Se llama a destructor si se emiten SIGINT o SIGSTP?
- 3. ¿Por qué se llama onResume() cuando se inicia una actividad?
- 4. Usando Moq para determinar si un método se llama
- 5. Cómo saber qué función llama a otra
- 6. ¿Se llama a onCreate cuando se crea un objeto Activity?
- 7. onServiceConnected() no se llama
- 8. ¿Qué método de actividad se llama primero?
- 9. ¿Cómo se llama eso?
- 10. ¿Cómo puedo saber si RenderAction llama a mi acción?
- 11. onCreate siempre se llama si navega hacia atrás con intención
- 12. Usando startActivityForResult, ¿cómo obtener requestCode en la actividad secundaria?
- 13. Intento implícito no se llama
- 14. didReceiveAuthenticationChallenge no se llama
- 15. cómo utilizar onActivityResult (..) si la actividad se llama desde un menú
- 16. onPostExecute no se llama
- 17. ¿Cuándo se llama a viewDidLoad?
- 18. View.onDraw() --- ¿cuándo se llama?
- 19. ¿Cuándo se llama a 'drawRect'?
- 20. No se llama al método didReadData GCDAsynSocketDelegate. Usando GCDAsynSocket
- 21. cuando se llama a onSizeChanged()?
- 22. ¿Cuándo se llama a didRegisterForRemoteNotificationsWithDeviceToken?
- 23. ¿Cuándo se llama a initWithCoder?
- 24. ¿Cuándo se llama a ServiceConnection.onServiceDisconnected()?
- 25. onFinishInflate() nunca se llama
- 26. ¿Cómo se llama este personaje?
- 27. fbDidLogin no se llama
- 28. ioctl no se llama si cmd = 2
- 29. Eliminar, ¿cuándo se llama?
- 30. Comprobar si onStop se llama desde la interacción del usuario, o en la pantalla de regulación
una solución más limpia que la bandera a través de la intención ... gracias – WarrenFaith
@WarrenFaith Gracias. –
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