Dans mon application, j'essaie de rechercher un contact en utilisant le numéro de téléphone. Le numéro de téléphone avec lequel je cherche est toujours dans le même format ('123456789' par exemple). Mais le code suivant récupère pas tous les contacts que j'attendais. Le problème principal pourrait être le format différent des numéros de téléphone dans mon téléphone: certains contacts sont enregistrés avec '+12 345 6789', l'autre avec ''. Bien que j'aie essayé ContactsContract.PhoneLookup.NORMALIZED_NUMBER, mon code récupère uniquement les contacts enregistrés avec des numéros de téléphone au format '123456789'.Android - Recherche de contacts avec différents formats de nombre
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;
}