¿Cuál es la diferencia entre la llamada de actividad explícita e implícita en android?

¿Cuál es la diferencia entre la llamada de actividad explícita e implícita en android? Si usted explica la respuesta con un ejemplo simple será bueno.

Por ejemplo:

Llamada de actividad implícita

En el filtro de intenciones, crea una acción para su actividad, por lo que otra aplicación puede llamar a su actividad mediante esta acción de la siguiente manera:

<activity android:name=".BrowserActivitiy" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="http"/> </intent-filter> </activity> 

Y la otra manera de llamar Intención implícita está abajo:

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.example.com")); startActivity(intent); 

Actividad explícita llamada

Realiza una llamada que indica exactamente qué clase de actividad:

 Intent intent = new Intent(this, ActivityABC.class); i.putExtra("Value", "This value for ActivityABC"); startActivity(intent); 

Espero que esto te ayude a entender más sobre la llamada de actividad explícita e implícita en android.

Puedes obtener más información sobre Android Intent aquí

  1. Los intentos explícitos se utilizan para llamar a un componente específico. Cuando se sabe qué componente desea iniciar y no desea dar al usuario el control libre sobre qué componente utilizar. Por ejemplo, tiene una aplicación que tiene 2 actividades. Actividad A y actividad B. Desea iniciar la actividad B de la actividad A. En este caso, define una actividad de orientación por intención explícitaB y luego la utiliza para llamarla directamente.
  2. Los intentos implícitos se utilizan cuando se tiene una idea de lo que se desea hacer, pero no se sabe qué componente se debe iniciar. O si desea dar al usuario una opción para elegir entre una lista de componentes a utilizar. Si estos intentos se envían al sistema Android, busca todos los componentes que están registrados para la acción específica y el tipo de datos. Si solo se encuentra un componente, Android inicia el componente directamente. Por ejemplo, tiene una aplicación que utiliza la cámara para tomar fotos. Una de las características de su aplicación es que le da al usuario la posibilidad de enviar las fotos que ha tomado. No sabes qué tipo de aplicación tiene el usuario que puede enviar fotos, y también quieres dar al usuario una opción para elegir qué aplicación externa utilizar si tiene más de una. En este caso, no utilizaría una intención explícita. En su lugar, debe utilizar una intención implícita que tiene su acción establecida en ACTION_SEND y su conjunto de datos extra en el URI de la foto.

Una intención explícita siempre se entrega a su objetivo, no importa lo que contenga; El filtro no es consultado. Sin embargo, una intención implícita se entrega a un componente sólo si puede pasar a través de uno de los filtros del componente

Ver resolución de intenciones aquí

http://developer.android.com/guide/topics/intents/intents-filters.html

Las intenciones explícitas (actividades) se refieren a una clase específica y, en general, sólo están disponibles para sus paquetes. Las intenciones implícitas se refieren a filtros de intenciones en las que las aplicaciones anuncian públicamente que pueden manejar ciertos tipos de datos o pueden proporcionar servicios específicos, por ejemplo, enviar un correo electrónico. Con intenciones implícitas, el usuario elige qué actividad (normalmente un paquete) utilizar para manejar la intención o si se establece un controlador predeterminado, se inicia.

Hay dos tipos de intenciones:

  • Propósito explícito:

    Al crear un objeto Intent cuando especificamos explícitamente y pasamos el nombre del componente de destino directamente en la intención , es una intención explícita.

  • Intención implícita:

    En este caso, delegamos la tarea de evaluar los componentes registrados (el registro se realiza normalmente con filtros de intenciones que cubriremos más adelante) a Android basados ​​en los datos de intención y la acción prevista (como enviar un correo electrónico, capturar una foto, ubicar un pin En un mapa, etc.) que pasamos. Por lo tanto, Android activará automáticamente el componente desde la misma aplicación o alguna otra aplicación que pueda manejar el mensaje / trabajo intencional. La idea en este caso es que, digamos que tenemos que fijar una ubicación en un mapa, para que no tenemos que codificar nuestra propia actividad para manejar eso. En lugar de pasar los datos de ubicación a una aplicación como Google Maps que pueden hacer el trabajo en nombre de nuestra aplicación.

Fuente: http://codetheory.in/android-intents/

El objeto Intent explícito hace referencia específicamente al componente de la aplicación de Android para iniciar, utilizando un nombre de componente de aplicación (Actividad o Servicio, por ejemplo) y tipo de componente. Normalmente necesitará utilizar el objeto Intent explícito para iniciar un componente dentro de su propia aplicación. Esto se debe a que, inherentemente, conoce el nombre de clase de su subclase de Actividad o subclase de servicio que desea iniciar y, por lo tanto, puede utilizar, o código duro, ese nombre de componente en el manifiesto de Android y el código Java.

Un objeto Intent implícito proporciona una descripción del componente que desea iniciar, pero no especifica cuál (nombre) utilizar. Las infraestructuras de intención implícita son más complicadas de configurar correctamente que las intenciones explícitas, ya que hay que configurar un objeto de filtro de intención para especificar exactamente qué sistema operativo Android debe buscar, ya que no se especifica un nombre exacto del componente (clase) En la memoria y el procesamiento). Por ejemplo, si desea mostrar al usuario de la aplicación una ubicación en un mapa, puede utilizar un objeto Intent implícito para solicitar o solicitar que otra aplicación compatible con mapa muestre al usuario de la aplicación esa ubicación específica en el mapa que su aplicación Está haciendo referencia. ¡Los intentos implícitos permiten que las aplicaciones de Android trabajen juntas sin problemas! Es importante tener en cuenta que todos los usuarios de Android instalarán diferentes aplicaciones y, por lo tanto, los distintos dispositivos Android exhibirán invariablemente diferentes combinaciones de aplicaciones Android instaladas. Esto da lugar a diferentes opciones de selección de diálogo emergente. Un buen ejemplo de esto es cuando usted hace clic en una URL y un intento implícito sale para encontrar las aplicaciones que tienen la capacidad de WebKit (navegador API). Aparece un cuadro de diálogo con un navegador interno; Chrome, Firefox, Opera o cualquier otro navegador que haya instalado en ese dispositivo en particular. Esto es lo que se deben utilizar los objetos Intent implícitos para: permitir a los usuarios controlar qué aplicaciones se utilizan con sus aplicaciones. Echemos un vistazo a los objetos IntentFilter a continuación, para comprender mejor cómo los objetos Intent implícitos funcionan ya que necesitan definiciones de IntentFilter adecuadas para trabajar de forma óptima.

  • Android: Error al entregar el resultado ResultInfo {who = null, request = 1, result = -1, data = Intent
  • Actividad inicial y claro historial de actividades
  • ¿Cómo puedo solucionar un error de `android.app.Application no se puede enviar a`
  • ¿Es posible deshabilitar el acceso al diseño del fragmento (vistas) de la actividad de los padres?
  • El servicio se detiene cuando la actividad está cerrada
  • ¿Cómo paso un objeto de una actividad a otra en Android?
  • Cambiar la orientación de la orientación con AsyncTask
  • ¿Cómo mantenerse conectado a un servicio de Android entre múltiples actividades?
  • Simular el asesinato de la actividad en el emulador
  • Activar / desactivar una actividad mediante programación
  • Cómo guardar el estado de actividad en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.