terça-feira, 11 de dezembro de 2012

Content Provider, criando um

 Content Provider é uma interface genérica para acesso a dados no ambiente Android. Somente através do Content Provider é possível compartilhar dados entre aplicações. O acesso a um Content Provider é padronizado, e como sempre, acessar um Content Provider nativo ou um definido por você segue o mesmo formato, sem distinção.
 Acessamos um Content Provider por intermédio da classe cliente ContentResolver.

 Nesse teste, vamos implementar um Content Provider usando o SQLite como repositório de dados. Vamos fazer um Content Provider de localizações geográficas.
 O exemplo é baseado no sample NotePad. Então, toda semelhança não é mera coincidência!

 Como pretendemos acessar o Content Provider em múltiplas threads, estamos testando também o uso de uma trava de leitura-escrita para tornar os métodos de acesso ao Content Provider seguros em relação às threads.
 Devido ao fato de que esse banco de dados pode ficar muito grande, também implementaremos uma forma de acessar os dados usando a clausula "limit" do SQL.

 Vamos seguir os seguintes passos para criar nosso Content Provider:

 1. Criar uma classe contrato. Essa é uma classe com as constantes do Content Provider, como URIs, MIME types, nome das colunas da tabela, etc. Esta classe estabelece o contrato entre o Content Provider e as aplicações clientes.
 MyLocation.class

 2. Definição da base de dados
  Vamos extender a classe SQLiteOpenHelper e implementar os métodos onCreate e onUpgrade.

 3. Criando o Content Provider
  Além de implementar os métodos onCreate, query, insert, delete, update e getType vamos definir também uma instância da classe utilitária UriMatcher. O UriMatcher nos ajudará a manipular as URIs para identificar qual formato estamos tratando.
 Também vamos instanciar um trava ReentrantReadWriteLock. 

 Vejamos o código:

 MyLocationProvider.class

 4. Registrar o Content Provider no Manifest file.



Com a opção android:exported="false" estamos informando que esse Content Provider é privado à aplicação.

 Pronto!
 Estamos com o Content Provider criado, no próximo post veremos como usá-lo.

 Abraços!

Nenhum comentário:

Postar um comentário