Mam tablicę numerów telefonów i chcę uzyskać odpowiednie nazwy kontaktów z bazy danych kontaktów.Ręczne dodawanie wierszy do kursora
W tablicy numerów telefonów mam również numery, które nie są zapisane wcześniej w bazie danych kontaktów. Na przykład;
- 3333333 -> Tim
- 5555555 -> Jim
- 1111111 -> nieznany
Mam tablica zawierająca numery telefonów pokazano powyżej, a mianowicie 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() zwraca 2 w powyższym scenariuszu. Gdy numer telefonu nie pojawia się na liście kontaktów, kursor staje się pusty i jakoś scalam je, ale nic nie wnosi. Czego chcę jest mieć kursora następująco
telefony Cursor -> {Tim Jim, 1111111}
myślę, że mogę to zrobić, dodając wiersz ręcznie w następujący sposób:
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
Jak mogę to osiągnąć?
Oto PEOPLE_PROJECTION
private static final String[] PEOPLE_PROJECTION = new String[] {
ContactsContract.PhoneLookup._ID,
ContactsContract.PhoneLookup.DISPLAY_NAME,
ContactsContract.PhoneLookup.NUMBER
};
proszę spojrzeć na moje rozwiązanie, i głosuj na niego, jeśli rozwiąże problem =) – elgui
Proszę przejrzeć zaakceptowaną odpowiedź, wydaje się, że jest ona nieprawidłowa, zgodnie z aktualnie dostępnymi funkcjami Androida SDK. –
Cóż, zanim przyjąłem odpowiedź, wydawało mi się rozsądne. Sprawdzę to, gdy mam trochę wolnego czasu. – 0x5f3759df