Pregunta

Trabajo con I androide dio cuenta de que las intenciones implícitas son buena elección en la mayoría de los casos debido a su flexibilidad de. Pero lo que es acerca de las intenciones explícitas? ¿Cuáles son los beneficios de usarlos? ¿Cuáles son los casos más comunes cuando se trata de una buena práctica de usarlos?

¿Fue útil?

Solución

Intentos implícitos no especifican directamente los componentes de Android que deben ser llamados, sólo se especifica la acción a realizar. A Uri se puede utilizar con la intención implícita para especificar el tipo de datos.

por ejemplo

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

Esto provocará navegador web para abrir una página web. Búsquedas sistema Android para todos los componentes que están registrados para la acción específica y los datos type.If muchos componentes se encuentran a continuación, el usuario puede seleccionar el componente para el uso ..

intentos explícitos se utilizan en la propia aplicación en el que una actividad puede cambiar a otra actividad ... Ejemplo Intent intent = new Intent(this,Target.class); esta causas de conmutación de la actividad a partir del contexto actual para la actividad de destino. Intentos explícitos también se pueden utilizar para pasar los datos a otra actividad, utilizando el método putExtra y recuperados por actividad de destino por métodos getIntent().getExtras().

Espero que esto ayudó.

Otros consejos

Se suelen utilizar las intenciones explícitas para el inicio de las actividades dentro de su propia aplicación. En ese momento usted sabe exactamente lo que la actividad que desea iniciar, así que no hay razón para pasar por el trabajo extra de establecer las intenciones implícitas.

  1. Intentos explícitos se utiliza para llamar a un componente específico. Cuando se sabe qué componente que desea iniciar y no quiere dar el control libre del usuario sobre qué componente de ejemplo use.For, usted tiene una aplicación que tiene 2 actividades. Actividad A y B. Actividad Usted quieren la actividad de lanzamiento B de la actividad A. En este caso se define la orientación de una intención explícita activityB y luego utilizarlo para llamar directamente a él.

  2. Intentos implícitos se usa cuando se tiene una idea de lo que quiere hacer, pero no sé qué componente deberá ser lanzado. O si se quiere dar al usuario la opción de elegir entre una lista de componentes para su uso. Si estos Intentos se envían al sistema Android que busca todos los componentes que están registrados para la acción específica y el tipo de datos. Si sólo se encuentra un componente, Android se inicia el componente directa. Por ejemplo, usted 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. Usted no sabe qué tipo de aplicación, el usuario tiene que se pueden enviar fotos, y también se quiere dar al usuario la opción de elegir qué aplicación externa para usar si tiene más de uno. En este caso, no se utilizaría una intención explícita. En su lugar debe usar una intención implícita de que tiene su conjunto de acciones a ACTION_SEND y sus datos de juego extra a la URI de la foto.

    Una intención explícita siempre se entrega a su destino, sin importar lo que contiene; el filtro no es consultado. Pero la intención implícita se entrega a un componente sólo si puede pasar a través de uno de los filtros del componente

1) Explícito Intención:. Componente de nombre revelador saber así, el nombre especificado en Intención

2) Implícita Intención:. No se ha especificado un componente en Intención

CLAVE: Cuando se conoce y cuando usted no sabe

explícita Intención:

Uso intención explícita cuando se sabe exactamente lo que Activity puede manejar su solicitud.

Ejemplo: Usted tiene una lista de actividades y al hacer clic en un elemento de la lista se abre una actividad de Detalle. En este caso, SABER que los detalles del elemento se pueden mostrar o manejados por DetailActivity.class de su aplicación. Así que para realizar esta acción se crea una Intención especificando explícitamente el nombre de la clase.

Intent showDeatil = new Intent(this,DetaiActivy.class);  
startActivity(showDeatil);

Implícito Intención :

Uso intención implícita cuando no se sabe qué actividad que se solicita / s puede manejar su solicitud.

Ejemplo: Usted tiene un enlace. Al hacer clic en el enlace se debe abrir la página web en un navegador. Usted NO SABE exactamente el que la actividad en la que la aplicación puede manejar su solicitud. Sólo hay una vaga idea de que su página web un enlace por lo que debería abrir una página web en un navegador cuando alguien lo abre. En este caso, sólo especificar la acción y luego OS se encarga del resto.

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);

PRIMA:

¿Cómo decide OS?

Hay un término para ello. Se llama Resolución de Intención.
En la resolución Intención.

  • OS lleva a cabo la acción especificada en su intento.

  • va en el PackageManager y mira hacia arriba por todo el domicilio actividades con la acción coincidente todas las aplicaciones instaladas en su dispositivo.

  • muestra la lista de todas las aplicaciones encontradas en una ventana emergente.

Una forma más segura para escribir las intenciones implícitas.

A veces es posible que no habrá ninguna actividad que coincide con la acción. En este caso, obtendrá una NullPointerException. Así que de una manera más preferida es esto

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
if (intent.resolveActivity(getPackageManager()) != null) {
    startActivity(intent);
}

¿Cómo hacer que su aplicación get dentro de esa lista emergente?

digamos Vamos que han escrito algunos Navegador de aplicaciones. Si desea que sus aplicaciones se muestran en la lista emergente cuando alguien abre el enlace. Entonces usted tiene que registrar su actividad con la acción utilizando filtros de archivos Intención AndroidManifest.xml. Como este.

<application
    .....  >

    ......
    <activity android:name=".YourBrowserActivity">
        <action android:name="android.intent.action.VIEW" />       
        <data android:scheme="http" android:host="www.example.com" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
    </activity>
 ..... 


</application>

Referencias
comunes y su lista de intención de Filtros
Más sobre filtros intención y resolución Intención

Docs :

Hay dos tipos de intenciones:

  • intentos explícitos especificar el componente para empezar por su nombre (el nombre de clase completo). Lo general, usarás un intento explícito para iniciar un componente de su propia aplicación, ya que se conoce el nombre de la clase de la actividad o servicio que desea iniciar. Por ejemplo, puede iniciar una nueva actividad en respuesta a una acción del usuario o iniciar un servicio para descargar un archivo en el fondo.
  • las intenciones implícitas no nombre un componente específico, sino que declarar una acción general para llevar a cabo, lo que permite un componente de otra aplicación para manejarlo. Por ejemplo, si desea mostrar al usuario una ubicación en un mapa, puede utilizar una intención implícita a la petición de que otra aplicación capaz muestran una ubicación especificada en un mapa.
  1. implícita la intención - Cuando queremos llamar a los componentes del sistema a través de la intención de realizar una tarea particular y que no se sabe muy bien el nombre de los componentes a utilizar, el sistema Android mostrará la lista de las aplicaciones que desee para realizar la tarea.
  2. explícita intención -. Cuando queremos llamar a la otra actividad con el nombre cualificado completo de la actividad y, por supuesto, sabemos que el nombre de la actividad

Simplemente podemos describir tanto las intenciones como esto ..

Intentos explícitos:. Se utilizan para la comunicación entre dos actividades en una sola aplicación

Por ejemplo: Considere una aplicación que tiene una página de acceso que consta de dos campos (nombre de usuario y contraseña por ejemplo) .Si Ambas cosas son ciertas que nos va a llevar a una página que muestra el campo Nombre de usuario, que entramos en before.In este caso utilizamos las intenciones explícitas porque tenemos que cambiar las actividades y llevar a los datos de una actividad a la otra actividad (campo de nombre de usuario) en la misma aplicación.

Intentos implícitos:. Se utilizan para la comunicación entre dos actividades de las diferentes aplicaciones

Por ejemplo: considere una aplicación de noticias que describe acerca de un accidente en el que está grabado y subido en Facebook el video del accidente. Mientras hace clic en el enlace dado en la aplicación de noticias que nos dirigirá a Facebook .En este caso, la comunicación es entre una actividad en la aplicación de noticias y y una actividad en Facebook app.For ello utilizamos Intentos implícitos.

espero que puedan entender.

Implícito Intención

  • Se detiene la nueva aplicación sin ser especificado que uno a tire hacia arriba.
  • Se especifica sólo la acción a realizar y no se especifica directamente Componentes Android.
  • URI se puede utilizar con Intención implícita para especificar el tipo de datos.

explícita Intención

  • Se coge una aplicación específica y está fijado al escribir el código.
  • Se utiliza en sí misma aplicación en la que una actividad puede cambiar a otra actividad.
  • Se utiliza para pasar datos a otra actividad utilizando puso método extra y recuperado por actividad de destino getIntent ().
  • Se suministra siempre para apuntar filtro ni siquiera se consulta.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top