texto que informacion implícito implicito implicita explícito explícita ejemplos android android-activity

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



texto explícito e implicito ejemplos (5)

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


¿Cuándo usar qué?

Intento explícito: cuando sabe qué componente puede manejar su solicitud. Entonces, explícitamente mencionas el nombre del componente en la intención.

Intent i = new Intent(context,DetailActivity.class); // DetailActivity.class is the component name startActivity(i);

Propósito implícito: cuando no sabes qué aplicación puede manejar tu solicitud , mencionas la acción en el intento y le permites al sistema operativo decidir qué aplicación / s es / son adecuadas para tu tarea.

Ejemplo: Reproducir música

Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); intent.setData(file); startActivity(intent);

¿Cómo decide el SO?

Cuando hay una llamada implícita con una intención, el sistema operativo toma la acción y luego coincide con todos los filtros de intención de todas las actividades registradas de todas las aplicaciones usando PackageManager y luego rellena el resultado como una lista. Se llama resolución de intención
Por lo tanto, existe la posibilidad de que no haya ninguna aplicación disponible en su dispositivo que pueda manejar su solicitud. En ese caso, obtendrás Excepción de NullPointer.

Entonces, una forma más segura de llamar a la intención implícita sería este

Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(file); if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); }


  1. Las intenciones explícitas se utilizan para llamar a un componente específico. Cuando sabe qué componente desea iniciar y no desea otorgarle al usuario control libre sobre qué componente usar. Por ejemplo, tiene una aplicación que tiene 2 actividades. Actividad A y actividad B. Desea iniciar la actividad B desde la actividad A. En este caso, defina una actividad de focalización explícita B y luego úsela para llamarla directamente.
  2. Los Intents implícitos se utilizan cuando tiene una idea de lo que quiere hacer, pero no sabe qué componente debe iniciarse. O si desea darle al usuario la opción de elegir entre una lista de componentes para usar. Si estos Intents 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 usa 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 sabe qué tipo de aplicación tiene el usuario para enviar fotos, y también le da al usuario la opción de elegir qué aplicación externa usar si tiene más de una. En este caso, no usaría un intento explícito. En su lugar, debe usar un intento implícito que tenga su acción establecida en ACTION_SEND y sus datos adicionales configurados en el URI de la foto.

Un intento explícito siempre se entrega a su objetivo, sin importar lo que contenga; el filtro no es consultado Pero un intento implícito se entrega a un componente solo si puede pasar a través de uno de los filtros del componente


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 el intento , es un intento explícito.

  • Propósito implícito:

    En este caso, delegamos la tarea de evaluar los componentes registrados (el registro generalmente se realiza usando filtros de intención que cubriremos más adelante) a Android en función de los datos de intención y la acción prevista (como enviar un correo electrónico, capturar una foto, ubicación de un PIN en un mapa, etc.) que pasamos. Entonces, Android activará automáticamente el componente desde la misma aplicación o alguna otra aplicación que pueda manejar el mensaje / trabajo de intención. La idea en este caso es que, digamos que tenemos que fijar una ubicación en un mapa, para eso no tenemos que codificar nuestra propia actividad para manejar eso. En su lugar, simplemente transfiera los datos de ubicación a una aplicación como Google Maps que puede hacer el trabajo en nombre de nuestra aplicación.

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


Por ejemplo:

Llamada de actividad implícita

En el filtro de intención, crea acción para su actividad, de modo que otra aplicación pueda llamar a su actividad a través de 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 Intento implícito es a continuación:

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

Llamada de actividad explícita

Usted hace 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 comprender más acerca de la llamada a la actividad explícita e implícita en Android.

Puede obtener más detalles sobre Android Intent here


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, solo están disponibles para sus paquetes. Los intentos implícitos se refieren a los filtros de intención donde 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, los usuarios eligen qué actividad (generalmente un paquete) utilizar para manejar el intento o si se establece un controlador predeterminado, se inicia.