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?
Viele Grüße
lam
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