Ho una serie di numeri di telefono e desidero ottenere i nomi dei contatti corrispondenti dal database dei contatti.Aggiunta manuale di righe al cursore
Nella serie di numeri di telefono, ho anche alcuni numeri che non sono stati salvati prima nel database dei contatti. Per esempio;
- 3333333 -> Tim
- 5555555 -> Jim
- 1111111 -> sconosciuto
ho la matrice contenente i numeri di telefono sopra indicato, vale a dire 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() restituisce 2 nello scenario precedente. Quando il numero di telefono non appare nella lista dei contatti, il cursore diventa vuoto e in qualche modo quando li unisco non contribuisce affatto. Quello che voglio è quello di avere un cursore come segue
telefoni cursore -> {Tim, Jim, 1111111}
penso di poter fare questo aggiungendo manualmente la riga come segue:
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
Come posso ottenere questo?
Ecco la PEOPLE_PROJECTION
private static final String[] PEOPLE_PROJECTION = new String[] {
ContactsContract.PhoneLookup._ID,
ContactsContract.PhoneLookup.DISPLAY_NAME,
ContactsContract.PhoneLookup.NUMBER
};
per favore dai un'occhiata alla mia soluzione, e vota se risolve il problema =) – elgui
Rivedi la risposta che hai accettato, sembra essere sbagliato in base alle funzionalità attualmente disponibili dell'SDK di Android. –
Bene, quando ho accettato la risposta, mi sembrava ragionevole. Lo esaminerò quando avrò un po 'di tempo libero. – 0x5f3759df