Sunteți pe pagina 1din 4

CONTENT PROVIDER Y URI Content Providers manejan el acceso a un conjunto estructurado de datos.

Encapsulan los datos y proporcionan mecanismos para definir la seguridad de los datos. Constituyen la interfaz estndar que conecta los datos de un proceso con el cdigo que se est ejecutando en otro proceso. Si se quiere acceder a las datos de un content provider, se tiene que usar un objeto ContentResolver para comunicarse con el provider como un cliente. El objeto ContentResolver se comunica con el objeto provider, una instancia de una clase que implementa ContentProvider. El objeto provider recibe peticiones de datos de los clientes, ejecuta la operacin solicitada y devuelve los resultados.

El acceso a un Content Provider se realiza siempre mediante un identificador URI. Un identificador URI es una cadena de texto parecida a una direccin Web de Internet . Es decir, si para acceder a Google con el navegador escribimos http://www.google.es, para acceder a un Content Provider utilizamos una direccin similar a content://es.mentor.unidad7.ejemplo/alumnos. Los identificadores URI de los Content Providers se pueden dividir en tres partes: Prefijo content://: indica que dicho recurso debe ser tratado por un Content Provider. Identificador del Content Provider (tambin llamado authority): este campo debe ser nico en cada dispositivo Android; por esto, es una buena prctica definir un authority con el nombre de clase java invertido, por ejemplo, en este ejemplo es es.mentor.ejemplo7.ejemplo. Esquema o Entidad concreta de datos que queremos que comparta el Content Provider. En este caso indicamos simplemente la tabla de alumnos. Un Content Provider puede contener datos de varias entidades distintas en esta ltima parte del URI. Todo esto es importante, ya que ser nuestro Content Provider el encargado de interpretar (parsear) el URI completo para determinar los datos que se le estn solicitando. Por ltimo, apuntamos que, en el URI se puede hacer referencia directamente a un registro concreto de la entidad seleccionada. Esto se hace indicando al final del URI de dicho registro. Por ejemplo, el URI content://es.mentor.unidad7.ejemplo/alumnos/17 hace referencia directa al alumno con _ID = 17.

Para ms informacin http://developer.android.com/reference/java/net/URI.html

API DE CONTACTOS DE ANDROID


Android nos ofrece todo lo necesario para poder trabajar con los datos relativos a los contactos. En Android Eclair 2.0 (API 5), se incorpor una nueva API, ms completa y estructurada para poder manejar e integrar contactos desde mltiples cuentas y orgenes de datos. La nueva API de contactos la encontramos en android.provider.ContactsContract. Se utilizar el mecanismo provider para poder gestionar los datos. En la nueva API, los datos estn establecidos en tres tablas:

contactos (contacts). contactos en bruto (raw contacts) datos (data).

Con esta nueva estructura, el sistema puede almacenar y manejar fcilmente informacin para un contacto especfico desde mltiples orgenes de contactos.

La tabla Data, es una tabla genrica que almacena todos los datos asociados con el contacto en bruto. Cada fila almacena datos de una clase especfica, por ejemplo, nombre, foto, email, direccin, nmeros de telfono y grupo al que pertenece. Cada fila, es etiquetada con un tipo MIME, que es el que identifica el tipo de dato que puede contener. Las columnas son genricas, siendo el tipo de dato determinado por el tipo MIME que especifiquemos. Por ejemplo, si la clase de datos de una fila es Phone.CONTENT_ITEM_TYPE, la primera columna almacenar el nmero de telfono, pero si la clase de datos es Email.CONTENT_ITEM_TYPE entonces la columna almacenar direcciones de mail. En la clase ContactsContract.CommonDataKinds podemos encontrar definiciones para los tipos de datos ms habituales que vamos a poder almacenar en la tabla ContactsContract.Data. Una fila en la tabla RawContacs representa el conjunto de datos (Data) y otra informacin que describe a una persona y todo asociado con un nico origen de contactos. Por ejemplo, una fila contendr los datos asociados con una cuenta personal de Google, otra con una cuenta de Exchange o Facebook friend, etc. Ya slo nos queda el tercer elemento, el Contacto (Contacts). Una fila en la tabla Contacts representa un conjunto de uno o ms contactos en bruto que describen a la misma persona (o entidad).

Cuando aadimos un Raw Contacts, el content provider, se encarga de agregar este dentro de un contacto nico. Si no existe ningn contacto que tenga un contacto en bruto con datos similares al que estamos agregando crear un contacto nuevo, en caso contrario, agregar nuestro contacto bruto al contacto que tiene ya datos similares. Android, tiene una serie de reglas, para establecer si un contacto puede referirse a una misma persona o entidad, teniendo datos ligeramente diferentes. Por ejemplo, podemos tener el contacto "Bob Parr" en dos cuentas, una como compaero de trabajo y la otra como amigo personal. Android, identifica que estamos tratando datos de una misma persona, y lo integra dentro de un mismo contacto. El sistema automticamente agrega los contactos por defecto, pero, si es necesario, puedes controlar en tu aplicacin como debe manejarse la agregacin o incluso desactivarla.

Para ms informacin : http://developer.android.com/guide/topics/providers/contacts-provider.html