Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Há duas classes envolvidas em uma ContentProvider
interação:
ContentProvider – Implementa uma API que expõe um conjunto de dados de forma padrão. Os principais métodos são Query, Insert, Update e Delete.
ContentResolver – Um proxy estático que se comunica com um
ContentProvider
para acessar seus dados, de dentro do mesmo aplicativo ou de outro aplicativo.
Um provedor de conteúdo normalmente é apoiado por um banco de dados SQLite, mas a API significa que o código de consumo não precisa saber nada sobre o SQL subjacente. As consultas são feitas por meio de um Uri usando constantes para fazer referência a nomes de coluna (para reduzir as dependências na estrutura de dados subjacente) e um ICursor
é retornado para o código de consumo iterar.
Consumindo um ContentProvider
ContentProviders
expor sua funcionalidade por meio de um Uri registrado no AndroidManifest.xml do aplicativo que publica os dados. Há uma convenção em que o Uri e as colunas de dados expostas devem estar disponíveis como constantes para facilitar a vinculação aos dados. Todos os integrados do Android fornecem classes de ContentProviders
conveniência com constantes que fazem referência à estrutura de dados no Android.Providers
namespace.
Provedores internos
O Android oferece acesso a uma ampla gama de dados do sistema e do usuário usando ContentProviders
:
Navegador – favoritos e histórico do navegador (requer permissão
READ_HISTORY_BOOKMARKS
e/ouWRITE_HISTORY_BOOKMARKS
).CallLog – chamadas recentes feitas ou recebidas com o dispositivo.
Contatos – informações detalhadas da lista de contatos do usuário, incluindo pessoas, telefones, fotos e grupos.
MediaStore – conteúdo do dispositivo do usuário: áudio (álbuns, artistas, gêneros, listas de reprodução), imagens (incluindo miniaturas) e vídeo.
Configurações – configurações e preferências de todo o dispositivo em todo o sistema.
UserDictionary – conteúdo do dicionário definido pelo usuário usado para entrada de texto preditivo.
Correio de voz – histórico de mensagens de correio de voz.
Visão geral das aulas
As classes primárias usadas ao trabalhar com um ContentProvider
são mostradas aqui:
Neste diagrama, o implementa ContentProvider
consultas e registra URIs que outros aplicativos usam para localizar dados. O ContentResolver
atua como um 'proxy' para os ContentProvider
(métodos Query, Insert, Update e Delete). O SQLiteOpenHelper
contém dados usados pelo ContentProvider
, mas não é diretamente exposto ao consumo de aplicativos.
O CursorAdapter
cursor passa o ContentResolver
retornado pelo para exibir em um ListView
arquivo . O UriMatcher
é uma classe auxiliar que analisa URIs ao processar consultas.
O objetivo de cada aula é descrito abaixo:
ContentProvider – Implemente os métodos dessa classe abstrata para expor dados. A API é disponibilizada para outras classes e aplicativos por meio do atributo Uri que é adicionado à definição de classe.
SQLiteOpenHelper – Ajuda a implementar o armazenamento de dados SQLite exposto pelo
ContentProvider
.UriMatcher – Use
UriMatcher
em suaContentProvider
implementação para ajudar a gerenciar o Uris que são usados para consultar o conteúdo.ContentResolver – O código de consumo usa um
ContentResolver
para acessar umaContentProvider
instância. As duas classes juntas cuidam dos problemas de comunicação entre processos, permitindo que os dados sejam facilmente compartilhados entre aplicativos. O consumo de código nunca cria umaContentProvider
classe explícita, em vez disso, os dados são acessados criando um cursor com base em um Uri exposto peloContentProvider
aplicativo.CursorAdapter – Use
CursorAdapter
ouSimpleCursorAdapter
exiba dados acessados por meio de umContentProvider
arquivo .
A ContentProvider
API permite que os consumidores executem uma variedade de operações nos dados, como:
- Consultar dados para retornar listas ou registros individuais.
- Modificar registros individuais.
- Adicionar novos registros.
- Excluir registros.
Este documento contém um exemplo que usa um , fornecido ContentProvider
pelo sistema, bem como um exemplo simples somente leitura que implementa um ContentProvider
arquivo .