[Android] Como pegar a Uri da foto do contato

2 respostas
nissivm

Oi gente, já estou consguindo pegar o id da foto do contato com o código abaixo, mas estou tendo dificuldades para, a partir desse id, conseguir o local onde está a foto. Já tentei vários códigos mas sem sucesso, será que alguém poderia me ajudar? Agradeço desde já.

ContentResolver cr = getContentResolver();
Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null); //CURSOR QUE PEGA TODOS OS CONTATOS
		    
//Checa se o cursor responsável por pegar todos os contatos não veio vazio.
if (cur.getCount() > 0) {
		    	
	//A PARTIR DAQUI, PEGA-SE AS INFOS DE 1 CONTATO POR VEZ
	while (cur.moveToNext()) {
		    contato = new Contato();
		    		
		    //ID DO CONTATO DA VEZ
		    String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID));
		    		
		    //NOME DO CONTATO DA VEZ
		    String name = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
		    contato.setNome(name);
		            
		    //PHOTO DO CONTATO DA VEZ
		    String photoId = cur.getString(cur.getColumnIndex(ContactsContract.Contacts.PHOTO_ID));
		    Log.i("contactList", photoId);
		    if(!photoId.equalsIgnoreCase("")) {
		            contato.setImagem(photoId);
		    }

         }
cur.close();
}

2 Respostas

davidtiagoconceicao

O que você quer fazer? Quer acessar o arquivo físico? Quer exibir a foto em sua aplicação?

felipebonezi

Nissi,

Queria lhe alertar para o seguinte, em seu código onde você usa o while(cur.moveToNext()) não está “correto” pois desse modo você pode perder contatos já que você não estipulou que ele deve ir do primeiro ao último contato.

Eu recomendo você fazer uma pequena modificação:

cur.moveToFirst();

while(cur.isAfterLast()) {
   // Faça aqui suas requisições!
   
   cur.moveToNext();
}

cur.close();

Eu sei que não tem nada a ver com o que você perguntou, mas é só um aviso. :slight_smile:

Abraço

Criado 3 de novembro de 2011
Ultima resposta 9 de nov. de 2011
Respostas 2
Participantes 3