From 534af8c62c567d7f4c3a6e44e0f8e9462df15935 Mon Sep 17 00:00:00 2001 From: Guillaume Beraudo Date: Wed, 5 Oct 2011 10:22:23 +0200 Subject: [PATCH] Fix contact lookup from number (old + new). --- .../linphone/ContactPickerActivityNew.java | 19 +++++++++++++++++-- .../linphone/ContactPickerActivityOld.java | 8 ++++---- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/org/linphone/ContactPickerActivityNew.java b/src/org/linphone/ContactPickerActivityNew.java index 8aff6361b..3154e7345 100644 --- a/src/org/linphone/ContactPickerActivityNew.java +++ b/src/org/linphone/ContactPickerActivityNew.java @@ -31,6 +31,7 @@ import android.net.Uri; import android.provider.ContactsContract; import android.provider.ContactsContract.Contacts; import android.provider.ContactsContract.PhoneLookup; +import android.telephony.PhoneNumberUtils; import android.text.TextUtils; @@ -266,9 +267,23 @@ public class ContactPickerActivityNew extends AbstractContactPickerActivity { } // Finally using phone number + String normalizedNumber = PhoneNumberUtils.getStrippedReversed(username); Uri lookupUri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(username)); - projection = new String[]{PhoneLookup._ID}; + projection = new String[]{PhoneLookup._ID, PhoneLookup.NUMBER}; c = resolver.query(lookupUri, projection, null, null, null); - return retrievePhotoUri(resolver, c, PhoneLookup._ID); + while (c.moveToNext()) { + long id = c.getLong(c.getColumnIndex(PhoneLookup._ID)); + String enteredNumber = c.getString(c.getColumnIndex(PhoneLookup.NUMBER)); + if (!normalizedNumber.equals(PhoneNumberUtils.getStrippedReversed(enteredNumber))) { + continue; + } + Uri picture = retrievePhotoUri(resolver, id); + if (picture != null) { + c.close(); + return picture; + } + } + c.close(); + return null; } } diff --git a/src/org/linphone/ContactPickerActivityOld.java b/src/org/linphone/ContactPickerActivityOld.java index 1d8eeae46..8581c20d6 100644 --- a/src/org/linphone/ContactPickerActivityOld.java +++ b/src/org/linphone/ContactPickerActivityOld.java @@ -28,6 +28,7 @@ import android.os.Bundle; import android.provider.Contacts; import android.provider.Contacts.People; import android.provider.Contacts.Photos; +import android.telephony.PhoneNumberUtils; @SuppressWarnings("deprecation") public class ContactPickerActivityOld extends Activity { @@ -118,11 +119,10 @@ public class ContactPickerActivityOld extends Activity { } public static Uri findUriPictureOfContact(ContentResolver resolver, String username, String domain) { - // A direct qery on the number column doesn't work as the number is stored - // with hyphens inside it. - Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, Uri.encode("0952636505")); + String normalizedNumber = PhoneNumberUtils.getStrippedReversed(username); String[] projection = {Contacts.Phones.PERSON_ID}; - Cursor c = resolver.query(contactUri, projection, null, null, null); + String selection = Contacts.Phones.NUMBER_KEY + "=" + normalizedNumber; + Cursor c = resolver.query(Contacts.Phones.CONTENT_URI, projection, selection, null, null); return retrievePhotoUriAndCloseC(resolver, c, Contacts.Phones.PERSON_ID); }