Cursos / Informática para Internet / Dispositivos Móveis / Aula

arrow_back Aula 13 - Services, Content Providers e Broadcast Receivers

Content Providers

Um Content Provider é responsável por apresentar informações armazenadas previamente a aplicações. Ele se assimila bastante a um banco de dados relacional por representar os dados como um conjunto de tabelas. Dentre os quatro componentes, o Content Provider é, sem dúvidas, o mais difícil de ser implementado e utilizado e, por esse motivo, cobriremos mais superficialmente esse tópico, já que não temos espaço o bastante para entrar tão a fundo nesse assunto.

Vários Content Providers já existem dentro da plataforma, contendo informações de diversos tipos. Informação de contato, áudio, vídeos, entre outros estão entre os Content Providers já conhecidos do sistema. Um exemplo de um Content Provider é o que é responsável por guardar novas palavras que o usuário adiciona aos dicionários do sistema. Dentro desse Content Provider é possível ao sistema saber quais palavras novas o usuário adiciona ao dicionário, a frequência com que elas são utilizadas e mais outras informações relevantes.

Também é importante ressaltar que é possível ao desenvolvedor criar seus próprios Content Providers, nos quais se armazenam dados de sua aplicação que podem ser compartilhados com outras aplicações e também reusados em outras execuções da aplicação.

Outro ponto importante é que todo Content Provider deve implementar uma interface comum, e é através dessa interface que é possível para os utilizadores dos Content Providers fazer inserções, consultas e alterações de dados nos provedores. Isso tudo acontece através da interface ContentResolver.

Para tornar possível o acesso a um Content Provider, é necessário que o sistema forneça um caminho até ele. Isso acontece através de uma URI especial. Todo Content Provider tem uma URI única capaz de identificá-lo. Todas essas URI começam com content://. Esse formato indica ao sistema que a URI leva até um Content Provider e também é ela que permite as interações com o ContentResolver. Vejamos agora, na Listagem 2, um exemplo de consulta feita a um Content Provider já existente. É importante lembrar que não entraremos em muitos detalhes de como criar ou mesmo editar Content Providers e utilizaremos esse exemplo para dar a ideia de como utilizar um provedor já existente e fundamentar estudos avançados.

Listagem 2 – Exemplo de consulta a um provider.

A Listagem 2 nos mostra a semelhança que as consultas a Content Providers têm em relação a consultas SQL. De fato, os Content Providers se assimilam bastante a um banco de dados. O importante é que, uma vez finalizada a consulta indicada na Listagem 2, a variável mCursor terá um Cursor preenchido com os dados obtidos na busca. Tendo o Cursor com os dados que queremos, podemos utilizar métodos como mCursor.moveToNext() para iterar pelos resultados e então utilizar mCursor.getString(column) para obter as informações que desejamos. Perceba também que uma instância do ContentResolver é buscada e utilizada para fazer a consulta que preenche o Cursor.

Como vemos, um Content Provider é uma maneira eficiente de compartilhar dados entre aplicações. Uma vez que uma aplicação preencha o Content Provider, consultas simples podem ser feitas por qualquer outra aplicação que tenha permissão para acessar o provedor. Esse é o principal propósito de se criar um Content Provider, como vimos em outras oportunidades. A seção Leitura complementar indica um excelente documento sobre o assunto para aprofundar os estudos, caso esse componente seja necessário em sua aplicação.

Versão 5.3 - Todos os Direitos reservados