Wow! Turns out the query code in ContactsProvider does pretty much what I thought... it uses the Sqlite 'glob' operator, which is like 'like' (but uses '*' as wild-card... which is strange, since phone numbers could conceivably have *'s and #'s in them). Both GLOB and LIKE in Sqlite don't let you start a string with the wildcard character - hence the reversal.
* When a phone number is inserted the "NUMBER_KEY" column is inserted as a stripped and reversed copy of 'NUMBER'. * The query the phone does when you get an incoming call appears based on the "Contacts.Phones.CONTACT_FILTER_URI" - so... Cursor c = resolver.query(Uri.withAppendedPath (Contacts.Phones.CONTENT_FILTER_URL, number)); should get you the same results as the phone gets on an incoming call. As for "so_is"'s comment - yeah, they seem to set the key when a record is created, but never seem to bother updating it. Should be easy enough to verify - create a contact with phone number "X", then edit the phone number to be "Y" - call the number (or have them call you) and see if the contact info appears... if it does - we have more digging to do. On Jun 13, 12:30 pm, Doug <[email protected]> wrote: > I did some experimentation yesterday on just this topic. > > For a start, it was easy enough to just throw a non-specific query at > the People provider and get back the values for the columns I was > interested in. > I don't know why, but I found that the "NUMBER_KEY" column has the > original phone number, unformatted, but ***reversed***. > So, 800-123-4567 (which is what you'd find in NUMBER column) would be > present as "7654321008" in the NUMBER_KEY column. > > My only guess is that someone did some research and found that using > "NUMBER_KEY like '7654321008%' "performed better than "NUMBER_KEY like > '%8001234567' " (in cases where the phone number stored for the > contact has extra digits - i.e. "+1"). (I really don't know - just > trying to rationalize why it could be backwards) > > On Jun 12, 3:28 am, so_is <[email protected]> wrote: > > > I would like to add something. > > > I have recognized that the column "NUMBER_KEY" doesn't get updated at > > all. So I'd like to ask if there is another way to get normalized > > phone numbers? > > > On 12 Jun., 11:25, code_android_festival_way > > > <[email protected]> wrote: > > > Hello. > > > > I am using a PhoneStateListener to determine the incomingNumber for a > > > phone call. What is the right way to get the corresponding contact > > > name? > > > > I have tried: > > > >http://paste.pocoo.org/show/LuRcRJZImQvEgSpE1uzV/ > > > > ( I have also used People.NUMBER_KEY) > > > > But I'm always getting a cursor with the count of zero. (the number is > > > in the phonebook) > > > > Why doesn't that work? > > > > I'm looking forward reading your responses. Thank you very much. > > > > Regards --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---

