Android Android Contacts DB auslesen

Hallo zusammen,

ich habe mir als Einstieg Contact Addressbuch zum Implementieren genommen und bin an einer Stelle stehen geblieben. Einige meiner Kontakte haben ca. 5-10 Telefonnummer. Wie kann ich die Nummer mit der passenden Benennung / Beschriftung holen? In dem Fall ist es doch der PhoneType oder?

Code:
   private List<Contact> getContactDetails(){
        List<Contact> contacts = new ArrayList<>();
        ContentResolver cr = getApplicationContext().getContentResolver();
        Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        if (cur.getCount() > 0) {
            while (cur.moveToNext()) {
                Contact contact = new Contact();
                String id = cur.getString(cur.getColumnIndex(
                        ContactsContract.Contacts._ID));
                String name = cur.getString(cur.getColumnIndex(
                        ContactsContract.Contacts.DISPLAY_NAME));
                if (Integer.parseInt(cur.getString(cur.getColumnIndex(
                        ContactsContract.Contacts.HAS_PHONE_NUMBER))) > 0) {
                    Cursor pCur = cr.query(
                            ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
                            null,
                            ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = ?",
                            new String[]{id}, null);
                    while (pCur.moveToNext()) {
                        int phoneType = pCur.getInt(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));
                        String phoneNumber = pCur.getString(pCur.getColumnIndex(
                                ContactsContract.CommonDataKinds.Phone.NUMBER));
                        switch (phoneType) {
                            case ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE:
                                Log.e(name + "(mobile number)", phoneNumber);
                                break;
                            case ContactsContract.CommonDataKinds.Phone.TYPE_HOME:
                                Log.e(name + "(home number)", phoneNumber);
                                break;
                            case ContactsContract.CommonDataKinds.Phone.TYPE_WORK:
                                Log.e(name + "(work number)", phoneNumber);
                                break;
                            case ContactsContract.CommonDataKinds.Phone.TYPE_OTHER:
                                Log.e(name + "(other number)", phoneNumber);
                                break;
                            default:
                                Log.e(name + "(more other number)", phoneNumber + " , Phone Type:"+phoneType);
                                break;
                        }

                        contact.setName(name);
                        contact.setPhoneNumber(phoneNumber);
// Wie bekommt man die eigentliche Beschriftung der Phonenumber zurück, wenn ich in ein Kontakt beispielsweise 10 Nummer mit einer Beschriftung hinterlegt habe?
contact.setPhoneType("Others");
                        contacts.add(contact);
                    }
                    pCur.close();
                }
            }
        }
        return contacts;
    }
Viele Grüße
lam
 
Bei einer erweiterten Suche habe ich das hier gefunden

Code:
String label     = pCur.getString(pCur.getColumnIndexOrThrow(ContactsContract.CommonDataKinds.Phone.LABEL));
Vielen Dank.

Jetzt ist eher die Frage, welches der vielen ist die Default Nummer?
 
Zuletzt bearbeitet:
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben