In meiner Anwendung versuche ich einen Kontakt mit der Telefonnummer zu suchen. Die Telefonnummer, mit der ich suche, hat immer das gleiche Format (zum Beispiel '123456789'). Aber der folgende Code ruft nicht alle Kontakte ab, die ich erwartet habe. Das Hauptproblem könnte das unterschiedliche Format von Telefonnummern in meinem Telefon sein: einige Kontakte werden mit '+12 345 6789', die anderen mit '' gespeichert. Obwohl ich ContactsContract.PhoneLookup.NORMALIZED_NUMBER versucht habe, ruft mein Code nur die Kontakte ab, die mit den Telefonnummern im '123456789'-Format gespeichert wurden.Android - Suche Kontakte mit verschiedenen Formaten der Nummer
private String getContactDetails(Context context, String number) {
String[] projection = new String[] {
ContactsContract.PhoneLookup.DISPLAY_NAME,
ContactsContract.PhoneLookup._ID,
ContactsContract.PhoneLookup.LOOKUP_KEY};
int len = number.length();
Uri contactUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number.substring(len-7)));
String selection = null;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
selection = ContactsContract.PhoneLookup.NORMALIZED_NUMBER + " LIKE %" + number.substring(len-7) + "%";
}
Cursor cursor = context.getContentResolver().query(contactUri, projection, selection, null, null);
String name = null;
if(cursor != null) {
if (cursor.moveToFirst()) {
name = cursor.getString(cursor.getColumnIndex(ContactsContract.PhoneLookup.DISPLAY_NAME));
}
cursor.close();
}
return name;
}