2011-09-09 6 views
21

¿Podría alguien explicarme el propósito de las categorías Intent? ¿Cuándo debería hacer mi propio y demás? Lo único que se escribió sobre las categorías Intent en mi libro es que pueden agruparse intenciones ?.¿Cuál es el propósito de las categorías de intención?

+0

offTopic: categorías podemos nombre de la aplicación según las categorías de intención en android –

Respuesta

33

Las categorías son inútiles, se usan para describir un posible objetivo para "implicit intent" en un intent-filter.

Cuando sabe qué clase/actividad desea iniciar y usa startActivity() o startActivityForResult(), se denomina "intención explícita".

He aquí una analogía de cómo funcionan las intenciones implícitas:

imaginar todas las aplicaciones que se sientan en una habitación grande y no hacer nada. Luego, otra aplicación, digamos Dropbox, necesita que alguien abra un archivo PDF . La aplicación de Dropbox va al sistema y dice "Oye, alguien necesita abrir este archivo PDF ..." (Esto envía el intento implícito).

El sistema ahora va a la sala y grita "¿Cuál de ustedes puede mostrar un archivo PDF?". Las aplicaciones que pueden ponerse de pie y el sistema las ven (estas aplicaciones tienen una actividad con una categoría de intento coincidente ).

A continuación se ofrece un cuadro de diálogo, en el que se puede elegir una de las aplicaciones: Complete action using


Si usted desea hacer un poco de tu actividad/BroadcastReceivers/Servicios disponibles fuera de sus aplicaciones límites, puede usar el manifiesto de Android para declarar un "filtro de intención", de modo que se abra cuando el sistema o una aplicación ejecute un "intento implícito" que coincida.

Para ello, (por ejemplo) para la actividad que debe ser abierta desde el lanzador:

<activity android:name=".SomeActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 

Esta escucha el ACTION_MAIN -acción provocada por androides Launcher (CATEGORY_LAUNCHER).

Tiene dos niños-elementos en su "filtro de intención":

  1. El action. Esto especifica qué acción debe escuchar el "filtro de intención" en .
  2. Uno o múltiple category s. Esto especifica cómo se debe llamar a la actividad .

Uno de los category s puede ser (por ejemplo) android.intent.category.DEFAULT, que cuenta la actividad que se puso en marcha normalmente en la pantalla de modo completo. La categoría android.intent.category.TAB, por ejemplo, declara esta actividad como una pestaña en un TabActivity, por lo que solo se puede abrir como una pestaña.

Otro ejemplo sería agregar la categoría android.intent.category.PREFERENCE, que declararía la actividad como su actividad de configuración.


Declarar sus propios category s no es posible ni necesario.

Además, deberá comprender que esos eventos son activados por el Sistema/Otra aplicación y solo puede especificar si y cómo desea reaccionar cuando se activan.

+0

Olvidó mencionar CATEGORY_DEFAULT que es necesario para que coincida con un intento basado en un esquema de datos uri/patrón de host. –

Cuestiones relacionadas