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

Provedores de conteúdo

Os provedores de conteúdo podem ajudar um aplicativo a gerenciar o acesso aos próprios dados armazenados ou aos de outros aplicativos, além facilitar o compartilhamento dessas informações. Eles encapsulam os dados e fornecem mecanismos para definir a segurança deles. Os provedores de conteúdo são a interface padrão que conecta dados em um processo com código em execução em outro processo. Há muitos benefícios na implementação de provedores de conteúdo. O mais importante é que você pode configurar um provedor de conteúdo para permitir que outros aplicativos acessem e modifiquem com segurança os dados do seu aplicativo, conforme ilustrado na figura 1.

Este é o diagrama de visão geral de como os provedores de conteúdo gerenciam o acesso ao armazenamento.

Figura 1. Diagrama de visão geral de como os provedores de conteúdo gerenciam o acesso ao armazenamento.

Use os provedores de conteúdo para compartilhar dados. Mesmo que essa não seja sua intenção, ainda será possível usá-los, já que eles oferecem uma boa abstração. Essa abstração permite que você faça modificações na implementação do armazenamento de dados do seu aplicativo sem afetar outros aplicativos existentes que dependem do acesso a essas informações. Neste cenário, somente seu provedor de conteúdo é afetado, e não os aplicativos que o acessam. Por exemplo, você pode trocar um banco de dados SQLite por um armazenamento alternativo, conforme ilustrado na figura 2.

Esta é a ilustração da migração do armazenamento do provedor de conteúdo.

Figura 2. Ilustração da migração do armazenamento do provedor de conteúdo.

Um número de outra classe depende da classe ContentProvider:

Se você estiver usando alguma dessas classes, também precisará implementar um provedor de conteúdo no seu aplicativo. Ao trabalhar com a biblioteca do adaptador de sincronização, você também poderá criar o esboço de um provedor de conteúdo como uma alternativa. Para saber mais sobre este tópico, consulte Como criar o esboço de um provedor de conteúdo. Além disso, você precisa do seu próprio provedor de conteúdo nos seguintes casos:

  • Você quer implementar sugestões de pesquisa personalizadas no seu aplicativo.
  • Você precisa usar um provedor de conteúdo para expor os dados do seu aplicativo para widgets.
  • Você quer copiar e colar dados ou arquivos complexos do seu aplicativo para outros.

A biblioteca do Android inclui provedores de conteúdo que gerenciam dados como áudio, vídeo, imagens e dados de contato pessoais. Alguns deles estão listados na documentação de referência do pacote android.provider . Com algumas restrições, esses provedores podem ser acessados por qualquer aplicativo Android.

Um provedor de conteúdo pode ser usado para gerenciar o acesso a diversas fontes de armazenamento de dados, incluindo dados estruturados, como um banco de dados relacional SQLite, ou dados não estruturados, como arquivos de imagem. Para saber mais sobre os tipos de armazenamento disponíveis no Android, consulte Opções de armazenamento e Como criar um armazenamento de dados.

Benefícios dos provedores de conteúdo

Os provedores de conteúdo oferecem controle granular sobre as permissões usadas para acessar dados. Você pode restringir o acesso exclusivo a um provedor de conteúdo dentro do seu aplicativo, conceder permissão geral para acessar dados de outros aplicativos ou configurar permissões diferentes para ler e gravar dados. Para saber mais sobre como usar provedores de conteúdo com segurança, consulte Dicas de segurança para o armazenamento de dados e Permissões do provedor de conteúdo.

Você pode usar um provedor de conteúdo para ver os detalhes e acessar diferentes fontes de dados no seu aplicativo. Por exemplo, seu aplicativo pode armazenar registros estruturados em um banco de dados SQLite, bem como arquivos de vídeo e áudio. Você poderá usar um provedor de conteúdo para acessar todos esses dados, caso implemente esse padrão de desenvolvimento no seu aplicativo.

Além disso, os objetos CursorLoader dependem dos provedores de conteúdo para executar consultas assíncronas e, em seguida, retornar os resultados para a camada de IU no seu aplicativo. Para ver mais informações sobre como usar um CursorLoader para carregar dados em segundo plano, consulte Como gerar uma consulta com um CursorLoader.

Os tópicos a seguir descrevem provedores de conteúdo em mais detalhes:

Fundamentos do provedor de conteúdo
Veja como acessar e atualizar dados usando um provedor de conteúdo existente.
Como criar um provedor de conteúdo
Como projetar e implementar seu próprio provedor de conteúdo.
Provedor de agenda
Veja como acessar o provedor de agenda que é parte da plataforma Android.
Provedor de contatos
Veja como acessar o provedor de contatos que faz parte da plataforma Android.

Para ver um exemplo de código relacionado a esta página, consulte o aplicativo de exemplo do adaptador básico de sincronização.