Provedores de conteúdo

Os provedores de conteúdo podem ajudar um aplicativo a gerenciar o acesso aos dados armazenados por conta própria ou por outros apps, além de oferecer uma maneira de compartilhar dados com outros apps. Elas encapsulam os dados e fornecem mecanismos para definir a segurança dos dados. 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. Mais importante ainda, você pode configurar um provedor de conteúdo para permitir que outros aplicativos acessem e modifiquem com segurança os dados do seu app, 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. Se você não planeja compartilhar dados, não é necessário usá-los, mas você pode optar por fazer isso, porque eles fornecem uma abstração que permite fazer modificações na implementação do armazenamento de dados do aplicativo sem afetar outros aplicativos que dependem do acesso aos seus dados.

Nesse cenário, apenas o 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. Esta é a ilustração da migração do armazenamento do provedor de conteúdo.

Várias outras classes dependem da classe ContentProvider:

Se você usar qualquer uma dessas classes, precisará implementar um provedor de conteúdo no seu aplicativo. Ao trabalhar com o framework do adaptador de sincronização, também é possível criar um provedor de conteúdo stub como alternativa. Para saber mais, consulte Criar um provedor de conteúdo stub. Além disso, você precisa do seu próprio provedor de conteúdo nos seguintes casos:

  • Para implementar sugestões de pesquisa personalizadas no seu aplicativo.
  • Para expor os dados do aplicativo a widgets.
  • Para copiar e colar dados ou arquivos complexos do seu aplicativo para outros aplicativos.

O framework 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 app Android.

Um provedor de conteúdo pode ser usado para gerenciar o acesso a várias 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 a Visão geral do armazenamento de dados e arquivos e Projetar 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 optar por restringir o acesso somente a um provedor de conteúdo que esteja dentro do seu aplicativo, conceder permissão geral para acessar dados de outros aplicativos ou configurar permissões diferentes para leitura e gravação de dados. Para mais informações sobre como usar provedores de conteúdo com segurança, consulte as dicas de segurança para armazenamento de dados e as Permissões do provedor de conteúdo.

Você pode usar um provedor de conteúdo para abstrair os detalhes e acessar diferentes fontes de dados no seu aplicativo. Por exemplo, seu app pode armazenar registros estruturados em um banco de dados SQLite, bem como arquivos de vídeo e áudio. Você pode usar um provedor de conteúdo para acessar todos esses dados.

Além disso, objetos CursorLoader dependem de provedores de conteúdo para executar consultas assíncronas e, em seguida, retornar os resultados para a camada de IU no seu app. Para saber mais sobre como usar um CursorLoader para carregar dados em segundo plano, consulte Carregadores.

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

Noções básicas do provedor de conteúdo
Como acessar e atualizar dados usando um provedor de conteúdo.
Criar um provedor de conteúdo
Como projetar e implementar seu próprio provedor de conteúdo.
Visão geral do provedor de agenda
Como acessar o provedor de agenda que faz parte da plataforma Android.
Provedor de contatos
Como acessar o Provedor de contatos que faz parte da plataforma Android.