Tengo una matriz de números de teléfono y deseo obtener los nombres de contacto correspondientes de la base de datos de contactos.Agregar filas al Cursor manualmente
En la matriz de números de teléfono, también tengo algunos números que no se guardan antes en la base de datos de contactos. Por ejemplo;
- 3333333 -> Tim
- 5555555 -> Jim
- 1111111 -> desconocido
He la matriz que contiene los números de teléfono se muestra más arriba, 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() devuelve 2 en la situación anterior. Cuando el número de teléfono no aparece en la lista de contactos, el cursor se vacía y, de alguna manera, cuando los fusiono, no contribuye en nada. Lo que quiero es tener un cursor de la siguiente manera
móviles Cursor -> {Tim, Jim, 1111111}
Creo que puedo hacer esto mediante la adición de la fila manualmente de la siguiente manera:
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
¿Cómo puedo lograr esto?
Aquí es el PEOPLE_PROJECTION
private static final String[] PEOPLE_PROJECTION = new String[] {
ContactsContract.PhoneLookup._ID,
ContactsContract.PhoneLookup.DISPLAY_NAME,
ContactsContract.PhoneLookup.NUMBER
};
por favor eche un vistazo a mi solución, y vota si resuelve el problema =) – elgui
Revisa la respuesta que aceptaste, parece ser incorrecta de acuerdo con las funciones actualmente disponibles del SDK de Android. –
Bueno, cuando acepté la respuesta, me pareció razonable. Lo revisaré cuando tenga algo de tiempo libre. – 0x5f3759df