Criando Entidades: Lendo seus Contatos em Android - Parte 1
Nesse artigo aprenderemos como ler os contatos do celular utilizando o Sistema Operacional Android.
Para poder ler os contatos precisamos de permissão do Sistema Operacional e para isso no arquivo AndroidManifest.xml devemos colocar a permissão android.permission.READ_CONTACTS, veja sua implementação completa abaixo.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="br.com.LerContatos" android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".LerContatos"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.READ_CONTACTS">
</uses-permission>
</manifest>
Vamos começar criando duas entidades, contatos e telefones, conforme listagens abaixo.
Entidade Contato
package br.com.LerContatos;
import java.util.List;
public class EntidadeContatos {
private String ID;
private String Nome;
private String Email;
private List<EntidadeTelefone> Telefones;
public String getID() {
return ID;
}
public void setID(String string) {
ID = string;
}
public String getNome() {
return Nome;
}
public void setNome(String nome) {
Nome = nome;
}
public List<EntidadeTelefone> getTelefones() {
return Telefones;
}
public void setTelefones(List<EntidadeTelefone> telefones) {
Telefones = telefones;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}
//Metodo sobreescrito para que não aparece o nome do componente
//na listView
@Override
public String toString() {
// TODO Auto-generated method stub
return Nome + "-" + Telefones.get(0);
}
}
Entidade Telefone
package br.com.LerContatos;
public class EntidadeTelefone {
private String Telefone;
public String getTelefone() {
return Telefone;
}
public void setTelefone(String telefone) {
Telefone = telefone;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "Telefone: " + Telefone;
}
}
Em seguida criaremos a classe Contatos que fará o preenchimento das mesmas.
package br.com.LerContatos;
import android.content.Context;
import android.database.Cursor;
import android.provider.ContactsContract;
import java.util.ArrayList;
import java.util.List;
public class Contatos {
private Context ctx;
public Contatos(Context contexto)
{
this.ctx = contexto;
}
public List<EntidadeContatos> getContatos()
{
Cursor C_Contatos
=this.ctx.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,
null, null, null, ContactsContract.Contacts.DISPLAY_NAME);
//pega os index das colunnas
int IndexID = C_Contatos.getColumnIndex(ContactsContract.Contacts._ID);
int IndexTemTelefone =
C_Contatos.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER);
int IndexName =
C_Contatos.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
List<EntidadeContatos> Contatos = new ArrayList<EntidadeContatos>();
EntidadeContatos Contato;
while(C_Contatos.moveToNext())
{
Contato = new EntidadeContatos();
Contato.setID(C_Contatos.getString(IndexID)); Contato.setNome(C_Contatos.getString(IndexName));
//verifica se o contato tem telefone
if(Integer.parseInt(C_Contatos.getString(IndexTemTelefone))>0)
{
Telefone _Telefone = new Telefone(Contato.getID(), this.ctx);
Contato.setTelefones(_Telefone.getTelefones());
}
Contatos.add(Contato);
}
C_Contatos.close();
return Contatos;
}
}
veja na próxima parte a continuação deste artigo onde vamos ver as outras classes a serem criadas.
http://www.nandosilva.com/
http://www.twitter.com/nandinhors
Artigos relacionados
-
Artigo
-
Artigo
-
Vídeo
-
Artigo
-
DevCast