🚀 5.1 Como funciona um Content Provider

O ContentProvider expõe dados para outras aplicações em uma estrutura tabular, semelhante a um banco de dados relacional. Cada linha representa um registro e cada coluna uma propriedade desse registro.

Anatomia de uma URI de Conteúdo

A comunicação com um provedor é feita através de URIs únicas. Elas seguem um padrão rígido que identifica o “dono” do dado e o que está sendo solicitado:

content://br.com.casadocodigo.boaviagem.provider/viagem/1

  1. Scheme (content://): Indica que a URI aponta para um provedor de conteúdo.
  2. Authority (br.com.casadocodigo...): O nome simbólico único do provedor (geralmente o pacote do app).
  3. Path (viagem): Indica a tabela ou coleção de dados solicitada.
  4. ID (1): (Opcional) Indica um registro específico dentro da coleção.

O Fluxo de Comunicação

Para acessar os dados, sua Activity utiliza um ContentResolver. Ele atua como um roteador: você entrega uma URI e ele encontra o provedor correspondente no sistema.

// Obtendo o resolver
var resolver = getContentResolver();
 
// Executando uma consulta (Query)
var cursor = resolver.query(
    Viagem.CONTENT_URI, 
    projection, 
    selection, 
    selectionArgs, 
    sortOrder
);

IMPORTANT

MIME Types: Cada URI deve retornar um tipo MIME específico. O Android utiliza padrões como vnd.android.cursor.dir para listas e vnd.android.cursor.item para registros únicos. Isso permite que o sistema saiba como tratar o dado retornado.

TIP

No Java 17, o uso de var torna o código de manipulação de URIs e Resolvers muito mais limpo, focando no que realmente importa: o acesso ao dado.


⬅️ Capítulo Anterior | Próximo Capítulo ➡️