Mostrando postagens com marcador incluir. Mostrar todas as postagens
Mostrando postagens com marcador incluir. Mostrar todas as postagens

sexta-feira, 30 de abril de 2010

Inserindo Contatos no Android

Olá povo,

Segue abaixo um exemplo de como adicionar um registro na agenda de contatos no Android. A partir da versão 2.0 do Android, a agenda armazena as informações em formato mestre/detalhe. Onde o registro mestre contém o id interno do contato, seu nome e sobrenome. Já os detalhes podem ser: endereço, e-mails, telefones, etc. Os telefones por sua vez, podem ser: Mobile, Mobile Work, Home, Work, Fax, etc.

Dessa forma, a inclusão terá que ser feita em uma transação só, ou seja, em batch.


// Lista de operações que serão realizadas em batch
ArrayList<ContentProviderOperation> operation =
new ArrayList<ContentProviderOperation>();

// Armazerá o id interno do contato
// e servirá para inserir os detalhes
int backRefIndex = 0;

// Associa o contato à conta padrão do telefone
operation.add(
ContentProviderOperation.newInsert(
RawContacts.CONTENT_URI).
withValue(RawContacts.ACCOUNT_TYPE, null).
withValue(RawContacts.ACCOUNT_NAME, null).build()
);

// Adiciona o nome do contato e alimenta id
operation.add(
ContentProviderOperation.newInsert(
Data.CONTENT_URI).
withValueBackReference(Data.RAW_CONTACT_ID,
backRefIndex).
withValue(Data.MIMETYPE,
StructuredName.CONTENT_ITEM_TYPE).
withValue(StructuredName.DISPLAY_NAME, "Fulano").
build()
);

// Adiciona um endereço ao contato a partir do id
operation.add(
ContentProviderOperation.newInsert(
Data.CONTENT_URI).
withValueBackReference(Data.RAW_CONTACT_ID,
backRefIndex).
withValue(Data.MIMETYPE,
StructuredPostal.CONTENT_ITEM_TYPE).
withValue(StructuredPostal.FORMATTED_ADDRESS,
"Rua do bolo").
build()
);

// Associa um telefone ao contato do tipo "Home"
operation.add(
ContentProviderOperation.newInsert(
Data.CONTENT_URI).
withValueBackReference(Data.RAW_CONTACT_ID,
backRefIndex).
withValue(Data.MIMETYPE,
Phone.CONTENT_ITEM_TYPE).
withValue(Phone.NUMBER, telefone).
withValue(Phone.TYPE, Phone.TYPE_HOME).
withValue(Phone.LABEL, "88999988").build());

// Aplica o batch de inclusão
getContentResolver().applyBatch(
ContactsContract.AUTHORITY, operation);


Pronto! Abaixo podemos ver o resultado na aplicação de contatos:



4br4ç05,
nglauber