En esta última parte de una serie de 4 artículos en los que se ha ido explicando cómo implementar un ContentProvider desde cero, se va a ver cómo registrar dicho proveedor y cómo darle uso.
Registrar el proveedor
Para poder usar el proveedor es necesario registrarlo en el AndroidManifest:
<provider android:name=".SitesProvider" android:authorities="com.elbauldelprogramador.provider.FavSites" />
Añadir registros
String tag = "Insertando registros..."; ContentValues cv = new ContentValues(); Log.d(tag,"Adding a site..."); cv.put(FavSitesProviderMetaData.favSitesTableMEtaData.NAME, "NombreSitio"); cv.put(FavSitesProviderMetaData.favSitesTableMEtaData.DESCRIPCION, "Descripcion"); cv.put(FavSitesProviderMetaData.favSitesTableMEtaData.LONGITUD, paquete.getInt("long")); cv.put(FavSitesProviderMetaData.favSitesTableMEtaData.LATITUD, paquete.getInt("lat")); ContentResolver cr = getContentResolver(); Uri uri = FavSitesProviderMetaData.favSitesTableMEtaData.CONTENT_URI; Log.d(tag,"site insert uri:" + uri); Uri insertedUri = cr.insert(uri, cv); Log.d(tag,"inserted uri:" + insertedUri);
Eliminar registros
ContentResolver cr = getContentResolver(); Uri uri = FavSitesProviderMetaData.favSitesTableMEtaData.CONTENT_URI; Log.d("Deleting site...","site delete uri:" + uri); cr.delete(uri, "_ID=?", new String[]{"5"});
Obtener el número de registros
Para realizar esto, debemos crear un cursor y contar el número de registros de este:
Uri uri = FavSitesProviderMetaData.favSitesTableMEtaData.CONTENT_URI; Cursor cur = managedQuery(uri, null, // projection null, // selection strings null, // selection args array of strings null);// sort order int numeroRegistros = cur.getCount(); cur.close();
Mostrar la lista de sítios
Muestra todo el contenido de la tabla sites de la base de datos.
/** * Función que imprime los resultados por el Log. */ public void logOutput(Context context){ //Salida por LOG. String tag = "Retrieve list of sites."; Uri uri = FavSitesProviderMetaData.favSitesTableMEtaData.CONTENT_URI; Activity a = (Activity) context; Cursor c = a.managedQuery(uri ,null //projection ,null //selection string ,null //selection args array of string ,null); //sort order int iname = c.getColumnIndex( FavSitesProviderMetaData.favSitesTableMEtaData.NAME); int iDesc = c.getColumnIndex( FavSitesProviderMetaData.favSitesTableMEtaData.DESCRIPCION); int iLat = c.getColumnIndex( FavSitesProviderMetaData.favSitesTableMEtaData.LATITUD); int iLong = c.getColumnIndex( FavSitesProviderMetaData.favSitesTableMEtaData.LONGITUD); int iFoto = c.getColumnIndex( FavSitesProviderMetaData.favSitesTableMEtaData.FOTO); //Informamos de los índices Log.d(tag, "name, description, latitude, long, photo: " + iname + iDesc + iLat + iLong + iFoto); //Recorremos las filas basándonos en índices for(c.moveToFirst(); !c.isAfterLast();c.moveToNext()){ //Recoger los valores String id = c.getString(0); String name = c.getString(iname); String desc = c.getString(iDesc); String lat = c.getString(iLat); String lon = c.getString(iLong); String foto = c.getString(iFoto); //informar StringBuffer cbuf = new StringBuffer(id); cbuf.append(",").append(name); cbuf.append(",").append(desc); cbuf.append(",").append(lat); cbuf.append(",").append(lon); cbuf.append(",").append(foto); Log.d(tag, cbuf.toString()); } //Numero de registros int numberOfRecords = c.getCount(); Log.d(tag, "Num of records: " + numberOfRecords); //cerrar el cursor c.close(); }
Espero que este conjunto de cuatro artículos os haya servido de ayuda. En los próximos artículos veremos en profundidad los intents.
Siguiente Tema: Intents – Conceptos básicos
Quizás te interese:
- Programación Android: Implementando un Content Provider (Parte 2) En la anterior entrada de programación Android, hablamos de cómo...
- Programación Android: Implementando un Content Provider (Parte 1) Esta es la primera entrada de un total de 4...
- Programación Android: Implementando un Content Provider (Parte 3) Ya hemos visto como plantear la base de datos para...
- Programación Android: Usando cursores Cosas a saber sobre un cursor Android: Un cursor es...
- Programación Android: Usando la cláusula Where Los proveedores de conteido ofrecen dos formas de pasar una...













