Android Obter imagem de contato do registro de chamadas
Foi muito fácil obter a imagem do contato ao consultar oPeople.CONTENT_URI
, com um simples
People.loadContactPhoto(activity, ContentUris.withAppendedId(People.CONTENT_URI, contactId)
porque eu conhecia o ID do contato. Agora preciso fazer o mesmo depois de acessar o registro de chamadas. Com
String[] strFields = {
android.provider.CallLog.Calls.CACHED_NAME,
android.provider.CallLog.Calls.NUMBER,
};
String strUriCalls="content://call_log/calls";
Uri UriCalls = Uri.parse(strUriCalls);
Cursor cursorLog = this.getContentResolver().query(UriCalls, strFields, null, null, null);
Eu recebo a lista do registro de chamadas, mas não consigo encontrar nenhuma maneira de vincular isso ao ID de contato necessário para carregar a foto. O aplicativo funciona a partir da API nível 4 +.
Qualquer ajuda é apreciada. Obrigado
A solução, conforme orientado por Cristian abaixo, que funciona para mim é:
private long getContactIdFromNumber(String number) {
String[] projection = new String[]{Contacts.Phones.PERSON_ID};
Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL,Uri.encode(number));
Cursor c = getContentResolver().query(contactUri, projection, null, null, null);
if (c.moveToFirst()) {
long contactId=c.getLong(c.getColumnIndex(Contacts.Phones.PERSON_ID));
return contactId;
}
return -1;
}