Con este ejemplo, vas a poder navegar a través de una lista de notas, ver los detalles sobre los elementos de esa lista, editarlos y agregar nuevos elementos a la lista. Es un ejemplo en el que se utilizan intent filters (filtros) declarados en un archivo de manifiesto.

En el archivo de manifiesto, la aplicación Notas declara tres actividades, cada una con al menos un intent filtres. También declara un proveedor de contenido (content provider) que administra los datos de la nota. A continuación se puede ver el archivo manifiesto:

<manifestxmlns:android="http://schemas.android.com/apk/res/android"
         
package="com.example.android.notepad">
   
<applicationandroid:icon="@drawable/app_notes"
                 
android:label="@string/app_name">

       
<providerandroid:name="NotePadProvider"
                 
android:authorities="com.google.provider.NotePad"/>

       
<activityandroid:name="NotesList"android:label="@string/title_notes_list">
           
<intent-filter>
               
<actionandroid:name="android.intent.action.MAIN"/>
               
<categoryandroid:name="android.intent.category.LAUNCHER"/>
           
</intent-filter>
           
<intent-filter>
               
<actionandroid:name="android.intent.action.VIEW"/>
               
<actionandroid:name="android.intent.action.EDIT"/>
               
<actionandroid:name="android.intent.action.PICK"/>
               
<categoryandroid:name="android.intent.category.DEFAULT"/>
               
<dataandroid:mimeType="vnd.android.cursor.dir/vnd.google.note"/>
           
</intent-filter>
           
<intent-filter>
               
<actionandroid:name="android.intent.action.GET_CONTENT"/>
               
<categoryandroid:name="android.intent.category.DEFAULT"/>
               
<dataandroid:mimeType="vnd.android.cursor.item/vnd.google.note"/>
           
</intent-filter>
       
</activity>
       
       
<activityandroid:name="NoteEditor"
                 
android:theme="@android:style/Theme.Light"
                 
android:label="@string/title_note">
           
<intent-filterandroid:label="@string/resolve_edit">
               
<actionandroid:name="android.intent.action.VIEW"/>
               
<actionandroid:name="android.intent.action.EDIT"/>
               
<actionandroid:name="com.android.notepad.action.EDIT_NOTE"/>
               
<categoryandroid:name="android.intent.category.DEFAULT"/>
               
<dataandroid:mimeType="vnd.android.cursor.item/vnd.google.note"/>
           
</intent-filter>
           
<intent-filter>
               
<actionandroid:name="android.intent.action.INSERT"/>
               
<categoryandroid:name="android.intent.category.DEFAULT"/>
               
<dataandroid:mimeType="vnd.android.cursor.dir/vnd.google.note"/>
           
</intent-filter>
       
</activity>
       
       
<activityandroid:name="TitleEditor"
                 
android:label="@string/title_edit_title"
                 
android:theme="@android:style/Theme.Dialog">
           
<intent-filterandroid:label="@string/resolve_title">
               
<actionandroid:name="com.android.notepad.action.EDIT_TITLE"/>
               
<categoryandroid:name="android.intent.category.DEFAULT"/>
               
<categoryandroid:name="android.intent.category.ALTERNATIVE"/>
               
<categoryandroid:name="android.intent.category.SELECTED_ALTERNATIVE"/>
               
<dataandroid:mimeType="vnd.android.cursor.item/vnd.google.note"/>
           
</intent-filter>
       
</activity>
       
   
</application>
</manifest>
La primera actividad (activity), NoteList, se distingue de las demás actividades por el hecho de que opera en un directorio de notas, en lugar de en una sola nota. Por lo general serviría como la interfaz de usuario inicial en la aplicación.
A continuación se ponen tres cosas que puede hacer, según lo descrito por sus tres filtros por intención (intent filters):
1.- 
<intent-filter>
   
<actionandroid:name="android.intent.action.MAIN"/>
   
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
Este filtro declara el punto de entrada principal a la aplicación Notas.
2.-
<intent-filter>
   
<actionandroid:name="android.intent.action.VIEW"/>
   
<actionandroid:name="android.intent.action.EDIT"/>
   
<actionandroid:name="android.intent.action.PICK"/>
   
<categoryandroid:name="android.intent.category.DEFAULT"/>
   
<dataandroid:mimeType="vnd.android.cursor.dir/vnd.google.note"/>
</intent-filter>
Este filtro declara las cosas que puede hacer la actividad en un directorio de notas. Permite al usuario ver o editar el directorio (a través de las acciones VIEW y EDIT), o elegir una nota particular desde el directorio (a través de la acción PICK).
 3.-
<intent-filter>
   
<actionandroid:name="android.intent.action.GET_CONTENT"/>
   
<categoryandroid:name="android.intent.category.DEFAULT"/>
   
<dataandroid:mimeType="vnd.android.cursor.item/vnd.google.note"/>
</intent-filter>
Este tercer filtro describe la capacidad de la actividad, para devolver una nota seleccionada por el usuario. La acción GET_CONTENT es similar a la acción PICK). En ambos casos, la actividad devuelve el URI para una nota seleccionada por el usuario.
En la acción PICK, el tipo de datos indica aquel que la actividad podría mostrar al usuario; y en el filtro GET_CONTENT, indica el tipo de datos, que la actividad puede eolver al autor de la llamada.
 
Acción: android.intent.action.MAIN
Inicia la actividad sin datos específicos.
Acción: android.intent.action.MAIN 
Categoría: 
android.intent.category.LAUNCHER
Se inicia la actividad sin datos específicos. Este es el intent utilizado por el programa de inicio para llenar su lista de nivel superior.
Todas las actividades con filtros que coinciden son esta acción y categoría se agregan a la lista
Acción: android.intent.action.VIEW 
Datos: 
content://com.google.provider.NotePad/notes
La actividad solicita mostrar una lista de todas las notas bajo content://com.google.provider.NotePad/notes. Entonces, el usuario puede examinar la lista y obtener información acerca de los artículos que hay en ella.
Acción: android.intent.action.PICK 
Datos: 
content://com.google.provider.NotePad/notes
La actividad solicita mostrar una lista de las notas bajo content://com.google.provider.NotePad/notes. El usuario puede, a continuación, seleccionar una nota de la lista, y la actividad devolverá el URI.
Acción: android.intent.action.GET_CONTENT 
Tipo de datos: 
vnd.android.cursor.item/vnd.google.note
La actividad solicita mostrar un único elemento de los datos de Note Pad.
 
La segunda actividad, NoteEditor, muestra a los usuarios una sola nota de entrada y les permite editarla. Según sus dos filtros (intent filters), puede hacer dos cosas:
 
1.-
<intent-filterandroid:label="@string/resolve_edit">
   
<actionandroid:name="android.intent.action.VIEW"/>
   
<actionandroid:name="android.intent.action.EDIT"/>
   
<actionandroid:name="com.android.notepad.action.EDIT_NOTE"/>
   
<categoryandroid:name="android.intent.category.DEFAULT"/>
   
<dataandroid:mimeType="vnd.android.cursor.item/vnd.google.note"/>
</intent-filter>
La primera (primary), tiene como propósito permitir al usuario interactuar con una sola nota (la categoría EDIT_NOTE, es un sinónimo de EDIT).
 
2.-
<intent-filter>
   
<actionandroid:name="android.intent.action.INSERT"/>
   
<categoryandroid:name="android.intent.category.DEFAULT"/>
   
<dataandroid:mimeType="vnd.android.cursor.dir/vnd.google.note"/>
</intent-filter>
El objetivo secundario de esta actividad es permitir al usuario crear una nueva nota, con INSERT lo hará en un directorio existente de notas.
 
Teniendo en cuenta estas capacidades, se explican los intent a continuación:

Acción: android.intent.action.VIEW
datos:
content://com.google.provider.NotePad/notes/ID

Muestra el contenido de la nota identificada por ID.

Acción: android.intent.action.EDIT
datos:
content://com.google.provider.NotePad/notes/ID

Muestra el contenido de la nota identificada por ID, y permite al usuario editarla. Si el usuario guarda los cambios, la actividad actualiza los datos de la nota en el proveedor de contenido.

Acción: android.intent.action.INSERT 
datos:
content://com.google.provider.NotePad/notes

               Crea una nueva nota vacía en la lista de notas de content://com.google.provider.NotePad/notes, y permite al usuario editarla. Si el usuario guarda la nota, su URI se devuelve al autor de la llamada.
 
La última actividad (TitleEditor), permite al usuario editar el título de una nota:

<intent-filterandroid:label="@string/resolve_title">
   
<actionandroid:name="com.android.notepad.action.EDIT_TITLE"/>
   
<categoryandroid:name="android.intent.category.DEFAULT"/>
   
<categoryandroid:name="android.intent.category.ALTERNATIVE"/>
   
<categoryandroid:name="android.intent.category.SELECTED_ALTERNATIVE"/>
   
<dataandroid:mimeType="vnd.android.cursor.item/vnd.google.note"/>
</intent-filter>
Teniendo en cuenta estas capacidades, el intent siguiente resolerá a la actividad de TitleEditor:

Acción:  com.android.notepad.action.EDIT_TITLE 
datos: content://com.google.provider.NotePad/notes/ID

Llama la actividad para mostrar el título asociado no la nota ID, y permite que el usuario pueda editar el título.

(continúa en una segunda parte....)