sirve que para intents intent how example android intentfilter

android - que - ¿Qué son exactamente los filtros de intención?



intents android (7)

He leído muchos artículos sobre filtros de intenciones y realmente no puedo entender exactamente lo que hacen.

así que, por favor, si alguien me puede explicar con un ejemplo claro, ¿cuál es exactamente la función de los filtros de intención?

Gracias


intentfilters anuncia las capacidades de un componente y delimita los intentos que puede manejar. un IntentFilter que un determinado Activity, Service o BroadcastReceiver responderá a una combinación de acción, tipo de mimo de datos, esquema, ruta, etc.

La intención es comparar los filtros de intención de intención basados ​​en tres aspectos:

1: - La acción del intento.
2: - Los datos de intención (tanto URI como tipo de datos)
3: - La categoría de intención

acción:
Declara la acción de intención aceptada, en el atributo de nombre. El valor debe ser el valor de cadena literal de una acción, no la constante de clase.

datos:
Declara el tipo de datos aceptados, utilizando uno o más atributos que especifican varios aspectos de la URI de datos (esquema, host, puerto, ruta, etc.) y el tipo MIME.

categoría:
Declara la categoría de intención aceptada, en el atributo de nombre. El valor debe ser el valor de cadena literal de una acción, no la constante de clase.

Por ejemplo, esta actividad maneja acciones "ENVIAR" con datos de texto.

<intent-filter> <action android:name="android.intent.action.SEND"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain"/> </intent-filter>


Creo que está bien documentado here . Resumiendo, cuando (por ejemplo) usted pasa una intención a Context.startActivity, o Context.startService, o la transmite con Context.sendBroadcast, etc.

Respuesta: si la intención es "explícita", es decir, tiene el campo de nombre del componente establecido, entonces se entrega al componente de destino que designa; esto suele ocurrir en la comunicación dentro de una aplicación.

De lo contrario (intención "implícita", como es típico en la comunicación entre aplicaciones), Android debe determinar la mejor actividad o servicio (o conjunto de receptores) por sí solo. ¿Cómo hace Android eso? Ahí es donde entran los filtros, y cito:

Lo hace comparando el contenido del objeto Intent con los filtros de intento, estructuras asociadas con componentes que potencialmente pueden recibir intentos. Los filtros anuncian las capacidades de un componente y delimitan los intentos que puede manejar. Abren el componente a la posibilidad de recibir intentos implícitos del tipo anunciado. Si un componente no tiene filtros de intención, solo puede recibir intentos explícitos. Un componente con filtros puede recibir intentos explícitos e implícitos.

La página web en cuestión continúa con muchos detalles y, al final, un ejemplo completo y simple, y creo que sería redundante copiarlos y pegarlos aquí.


El filtro de intención le indica al sistema Android qué intento o evento deben escuchar los componentes de Android (actividad, servicio, receptor de difusión).


En pocas palabras, los filtros de Intención son una forma de decirle al sistema operativo cómo iniciar / comunicarse con las diferentes actividades / servicios / receptores de difusión en su aplicación. Por ejemplo, si desea que los enlaces que comienzan con http://www.mycompany.com guíen a las personas hacia su aplicación, un filtro de intención es la forma de lograrlo. Una vez que se configura, cada vez que alguien hace clic en un enlace que comienza con eso (en cualquier aplicación), al usuario se le presentará la opción de usar su aplicación para ver esa página. Probablemente has visto esto con las URL de youtube. Del mismo modo, si desea que el enlace ''compartir'' que se ve comúnmente en muchas aplicaciones para enumerar su aplicación, usaría un filtro de intención para hacerlo.

espero que esto ayude...


Los IntentFilters se utilizan para declarar un patrón de atributos de Intención a los que responderá el componente declarante. Puede especificar con un IntentFilter que un Activity, Service o BroadcastReceiver dado responderá a una combinación de acción, tipo de mime de datos, esquema, ruta, etc. Por ejemplo, si registra una Activity con IntentFilter para ACTION_SEND con el tipo de datos " ", se llamará a su actividad cada vez que los usuarios quieran enviar algún texto.


Un filtro de intención le permite al sistema saber qué datos o solicitudes de servicio puede manejar un componente. Un componente puede ser una actividad, un servicio o un receptor de difusión.

Si está escribiendo un visor de imágenes, agregará un filtro de intento (o varios) al manifiesto que describe las imágenes que puede manejar. Si está escribiendo un explorador de archivos, puede empaquetar los detalles de un archivo de imagen en un intento y el sistema filtrará los filtros de intento hasta que encuentre la mejor coincidencia para manejar esa imagen. Lo mismo ocurre con cualquier tipo de datos o servicio que pueda pasar de un componente a otro.


Intent Filters es una forma de indicar al sistema operativo que me permite manejar / proporcionar este tipo de actividades / servicios.

Al agregar el filtro dado a Manifest, el sistema operativo le dice al sistema operativo que también puedo manejar el servicio de SMS y que cada vez que envíe un SMS se mostrará en una lista o también puede usarlo explícitamente como su servicio de SMS.

<intent-filter> <action android:name="android.intent.action.SENDTO" /> <action android:name="com.example.code.SMS_INTENT" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="smsto" /> </intent-filter>

Y para usar este servicio explícitamente llamalo como ...

Intent intent = new Intent("com.example.code.SMS_INTENT", Uri.parse(uri)); intent.putExtra("from", "code"); startActivity(intent);