Adicionando linhas ao Cursor manualmente
Tenho uma série de números de telefone e desejo obter os nomes de contatos correspondentes no banco de dados de contato
Na matriz de números de telefone, também tenho alguns números que não foram salvos no banco de dados de contatos. Por exemplo
3333333 -> Tim 5555555 -> Jim 1111111 -> desconhecidoTenho a matriz que contém os números de telefone mostrados acima, a saber phoneArr.
int size=phoneArr.size();
if(size>0){
Cursor[] cursors=new Cursor[size];
for(int i=0;i<size;i++){
Uri contactUri1 = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneArr.get(i)));
cursors[i] = getContentResolver().query(contactUri1, PEOPLE_PROJECTION, null, null, " _id asc limit 1");
}
Cursor phones=new MergeCursor(cursors);
phones.getCount () retorna 2 no cenário acima. Quando o número de telefone não aparece na lista de contatos, o cursor fica vazio e, de alguma forma, quando eu os mesclo, não contribui com nada. O que eu quero é ter um cursor da seguinte forma
elefones @Cursor -> {Tim, Jim, 1111111}
Acho que posso fazer isso adicionando a linha manualmente da seguinte maneira:
Uri contactUri1 = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneArr.get(i)));
cursors[i] = getContentResolver().query(contactUri1, PEOPLE_PROJECTION, null, null, " _id asc limit 1");
if(cursors[i].getCount()==0)
// add the phone number manually to the cursor
Como posso conseguir isso?
Aqui está a PEOPLE_PROJECTION
private static final String[] PEOPLE_PROJECTION = new String[] {
ContactsContract.PhoneLookup._ID,
ContactsContract.PhoneLookup.DISPLAY_NAME,
ContactsContract.PhoneLookup.NUMBER
};