Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

Proveedores de contenido

Los proveedores de contenido pueden ayudar a una aplicación a gestionar el acceso a los datos que esa u otras aplicaciones almacenan y proporcionar una forma de compartir datos con otras aplicaciones. Encapsulan los datos y proporcionan mecanismos para definir su seguridad. Los proveedores de contenido son la interfaz estándar que conecta datos en un proceso con código que se ejecuta en otro proceso. La implementación de un proveedor de contenido tiene muchas ventajas. Lo más importante es que puedes configurar un proveedor de contenido para permitir que otras aplicaciones accedan de forma segura a los datos de tu aplicación y los modifiquen, tal y como se ilustra en la figura 1.

Diagrama general de cómo los proveedores de contenido gestionan el acceso al almacenamiento.

Figura 1. Diagrama general de cómo los proveedores de contenido gestionan el acceso al almacenamiento

Usa proveedores de contenido si tienes pensado compartir datos. Si no tienes intenciones de compartir datos, puedes usarlos porque proporcionan una buena abstracción, pero no es necesario que lo hagas. Esta abstracción te permite realizar modificaciones en la implementación de almacenamiento de datos de tu aplicación sin afectar a otras que dependen del acceso a tus datos. En esta situación, solo tu proveedor de contenido se ve afectado, y no las aplicaciones que acceden a él. Por ejemplo, puedes cambiar una base de datos SQLite por almacenamiento alternativo, como se ilustra en la figura 2.

Ilustración de la migración del almacenamiento del proveedor de contenido.

Figura 2. Ilustración de la migración del almacenamiento del proveedor de contenido

Varias clases dependen de la clase ContentProvider:

Si usas cualquiera de estas clases, también necesitas implementar un proveedor de contenido en tu aplicación. Ten en cuenta que, al trabajar con el marco de trabajo del adaptador de sincronización, también puedes crear un proveedor de contenido auxiliar como alternativa. Para obtener más información sobre este tema, consulta Cómo crear un proveedor de contenido auxiliar. Además, necesitarás tu propio proveedor de contenido en los siguientes casos:

  • Deseas implementar sugerencias de búsqueda personalizadas en tu aplicación.
  • Necesitas utilizar un proveedor de contenido para exponer los datos de tu aplicación a los widgets.
  • Quieres copiar y pegar datos o archivos complejos de tu aplicación en otras aplicaciones.

El marco de trabajo de Android incluye proveedores de contenido que administran datos como video, audio, imágenes e información de contacto personal. Puedes ver algunos de ellos en la documentación de referencia del paquete android.provider . Con algunas restricciones, cualquier aplicación de Android puede acceder a esos proveedores.

Un proveedor de contenido puede utilizarse para gestionar el acceso a una variedad de fuentes de almacenamiento de datos, incluidos los datos estructurados, como una base de datos relacional SQLite, o los datos no estructurados, como los archivos de imagen. Para obtener más información sobre los tipos de almacenamiento disponibles en Android, consulta Opciones de almacenamiento, además de Cómo diseñar almacenamientos de datos.

Ventajas de los proveedores de contenido

Los proveedores de contenido ofrecen un control detallado sobre los permisos de acceso a los datos. Puedes optar por restringir el acceso a un proveedor de contenido únicamente desde tu aplicación, conceder un permiso general para acceder a los datos de otras aplicaciones o configurar diferentes permisos de lectura y escritura de datos. Para obtener más información sobre el uso seguro de los proveedores de contenido, consulta Sugerencias de seguridad para almacenar datos, así como Permisos de los proveedores de contenido.

Puedes utilizar un proveedor de contenido a fin de abstraer los detalles necesarios para acceder a diferentes fuentes de datos en tu aplicación. Por ejemplo, tu aplicación puede almacenar registros estructurados en una base de datos SQLite, así como archivos de video y audio. Puedes utilizar un proveedor de contenido para acceder a todos estos datos si implementas este patrón de desarrollo en tu aplicación.

También ten en cuenta que los objetos CursorLoader dependen de los proveedores de contenido para ejecutar consultas asíncronas y luego mostrar los resultados a la capa de IU de tu aplicación. Si quieres obtener más información sobre el uso de un CursorLoader para cargar datos en segundo plano, consulta Cómo ejecutar una consulta con un CursorLoader.

Los siguientes temas describen más detalladamente los proveedores de contenido:

Conceptos básicos sobre los proveedores de contenido
Cómo acceder a datos y actualizarlos utilizando un proveedor de contenido existente.
Cómo crear un proveedor de contenido
Cómo diseñar e implementar tu propio proveedor de contenido.
Proveedor de calendario
Cómo acceder al proveedor de calendario que forma parte de la plataforma Android.
Proveedor de contactos
Cómo acceder al proveedor de contactos que forma parte de la plataforma Android.

Para ver un ejemplo de código relacionado con esta página, consulta el sitio web Aplicación de ejemplo del adaptador de sincronización básica.