Nesse artigo iremos continuar vendo como ler os contatos de celular utilizando o Sistema Operacional Android, . Agora vamos ver como preencher o telefone de um determinado contato. Vamos criar a classe Telefone.
Se aquele contato possuir telefone o mesmo devera ser preenchido, a classe telefone terá esse objetivo.
package br.com.LerContatos;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.database.Cursor;
import android.provider.ContactsContract;
public class Telefone {
private String _IDContato;
private Context _ctx;
public Telefone(String IDContato, Context Contexto)
{
this._IDContato = IDContato;
this._ctx = Contexto;
}
public List<EntidadeTelefone> getTelefones()
{
Cursor C_Telefones =this._ctx.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + _IDContato, null, null);
int IndexTelefone;
List<EntidadeTelefone> Telefones = new ArrayList<EntidadeTelefone>();
while(C_Telefones.moveToNext())
{
EntidadeTelefone Telefone = new EntidadeTelefone();
IndexTelefone = C_Telefones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
Telefone.setTelefone(C_Telefones.getString(IndexTelefone));
Telefones.add(Telefone);
}
C_Telefones.close();
return Telefones;
}
}
O Metodo getContentResolver().query() é um provedor de conteúdo que expõe seus conteúdos como tabelas, podendo ser acessa-los utilizando cursores, esses provedores de conteúdo expõe um endereço publico que identifica seu conjunto de dados.
Para nosso caso dos contatos ele possui um ID que representa seu contato de forma única podendo buscar dados entre outros provedores de conteúdo como telefones, email e imagens.
No arquivo layout/main.xml, deveremos inserir o controle ListView, veja seu código abaixo.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"/>
<ListView android:id="@+id/ListView01"
android:layout_width="wrap_content" android:layout_height="wrap_content"></ListView>
</LinearLayout>
Na classe que representa a tela e a implementação de um Activity, inserimos o código abaixo.
package br.com.LerContatos;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class LerContatos extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final ListView listaPessoas = (ListView)findViewById(R.id.ListView01);
List<EntidadeContatos> ListaContatos = new ArrayList<EntidadeContatos>();
Contatos Contato = new Contatos(this);
ListaContatos = Contato.getContatos();
// adapter que sera o source para a listview
ArrayAdapter<EntidadeContatos> adapter = new ArrayAdapter<EntidadeContatos>(this,android.R.layout.simple_list_item_1, ListaContatos);
//seta o adapter para o listview
listaPessoas.setAdapter(adapter);
}
}
Após executarmos a aplicação deveremos ter o resultado da imagem abaixo. Veja que tem somente dois contatos cadastrados no emulador.
Espero que tenham gostado e até a próxima.
http://www.nandosilva.com/
http://www.twitter.com/nandinhors