Autore Topic: Lavorare con ContactsContract  (Letto 525 volte)

Offline Drizzt

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note 3
Lavorare con ContactsContract
« il: 28 Gennaio 2013, 22:54:11 CET »
0
Salve a tutti.

Sto cercando di fare una determinata cosa (che adesso vi spiego) con i contatti di Android, ma sinceramente l'intero concetto di provider cosi' come lo usa Android mi rimane un po' ostico e, sebbene stia arrivando abbastanza  bene alla soluzione, mi sto ponendo il dubbio se il modo in cui c'arrivo e' il migliore, prestazionalmente parlando.

Per farla breve: voglio ottenere una lista flat di tutti i contatti che hanno almeno un numero di telefono, un'entry per ogni numero, con i DisplayName ennuplicati se il contatto ha enne numeri. Un po' come fare una query di left join su tabelle 1->n
Ipotesi ho tre contatti, A, B e C, A ha due numeri (1 e 2) B ha un solo numero (5) e C non ha numeri. Vorrei ottenere:
A 1
A 2
B 5

In piu', di ogni contatto, mi serve anche un ID univoco da memorizzare. Ho visto in giro che esiste un certo CONTACT_URI che e' quello giusto da memorizzare perche' non cambia mai ed e' quello usato internamente da Android, ma non trovo dove sta.


Ora, il dubbio e' questo:
Usando RawContacts posso accedere alla lista di tutti i contatti presenti.
Per ogni contatto posso usare Contacts.CONTENT_URI per accedere al display name ed alla foto.
Per ogni contatto posso usare Phone.CONTENT_URI per ottenere l'elenco di tutti i suoi numeri.

Quindi di per se il problema sarebbe risolto. Quello che non mi va giu' e' che praticamente devo fare tre richieste per ogni singolo contatto - una per il display name e l'id della foto, una per il blob della foto, una per i numeri di telefono...possibile che non ci sia modo di fare una richiesta diretta che tira su gia' tutti i dati in un colpo solo?


Grazie a tutti per l'eventuale aiuto :-)

Offline Drizzt

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note 3
Re:Lavorare con ContactsContract
« Risposta #1 il: 29 Gennaio 2013, 00:15:38 CET »
0
Ok, per il momento mi rispondo da solo :-D

Lavorando con ContactsContract.CommonDataKinds.Phone.CONTENT_URI si ottiene esattamente quello che cercavo. Unico limite, le colonne che in teoria espone stando alla documentazionein realta' non ci sono tutte, pero' con un po' di pazienza si riesce a gestire la cosa.