Thanks Dmitri Will take a look at it :)
Off topic, but I just can't understand why ContentProviders have to follow the relational model!! On Jun 10, 12:51 am, Dmitri Plotnikov <[email protected]> wrote: > Hi Vikram, > > The data structure in the contacts DB has three levels: > - Contact is an aggregate of RawContacts > - RawContact represents a specific contact data set from a particular source > (e.g. Gmail or Exchange) > - Data contains all contact data: emails, phone numbers, birthday, etc one > data element per row. > > When you query the Data table, it is automatically joined with the > corresponding Contact so you can get the aggregate's name and photo ID. > > Specifically, > > - Lookup by email address: you can use either Email.CONTENT_LOOKUP_URI or > Email.CONTENT_FILTER_URI. Use the latter if you want to search by incomplete > email addresses. This is what email programs use for autocompletion. In > either case Email.CONTACT_ID will give you the _ID of the corresponding > aggregated contact. The result will also include the contact name and photo > ID. > > - Phone lookup. Despite its name, PhoneLookup is not what you need. > PhoneLookup is a special table used for caller ID in telephony. Try > Phone.CONTENT_FILTER_URI instead, appending the encoded phone number to that > URI. It behaves just like Email.CONTENT_FILTER_URI. Phone.CONTACT_ID will > give you the contact ID > > - To do a lookup by name use Contacts.CONTENT_FILTER_URI. In this case _ID > is the contact _ID. > > Once you have the ID of the contact you needed, read Data for that Contact > and find rows for phone number, email etc. This bit is a little tricky > because there might be several email addresses or none, and you will need to > handle all those cases. If the user has chosen a default email or phone > number for that contact, the corresponding data row will > have IS_SUPER_PRIMARY=1. > > I hope this helps. > > Cheers, > - Dmitri > > > > On Wed, Jun 9, 2010 at 9:06 AM, Vikram <[email protected]> wrote: > > My application user registers a phone number, name or an email ID with > > my application. Now given one of these, I want to lookup the > > ContactsContract provider and get the others. > > > Given > > 1. the email: I am querying > > ContactsContract.CommonDataKinds.Email.CONTENT_LOOKUP_URI and getting > > {ContactsContract.CommonDataKinds.Email.CONTACT_ID, > > ContactsContract.Data.DISPLAY_NAME, > > ContactsContract.CommonDataKinds.Phone.NUMBER}. This works. > > > 2. given the number, I want to use the PhoneLookup.CONTENT_FILTER_URI. > > I can get the name using DISPLAY_NAME, but I cant get the email, so > > I'll have to use the CONTACT_ID. So in this table, does _ID correspond > > to CONTACT_ID? > > > 3. given the name, I have to use the DATA table, and I can get the > > number. For the email I have to get the CONTACT_ID and read the email > > from where? > > > Is my assumption that CONTACT_ID can get us name, number, email and > > the contact's picture information correct? Do _IDs correspond to > > CONTACT_ID (of course not at all places, but if a record is about a > > user, can I assume that _ID = CONTACT_ID). > > > Is there any better way to do this? I do it only once for the whole > > app's lifetime so I can compromise on efficiency for correctness: the > > phone numbers and name inputs to my app can be malformatted, and I > > want ContactsContract to help me out here. > > > Any suggestions? > > > -- > > 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]<android-developers%2Bunsubs > > [email protected]> > > For more options, visit this group at > >http://groups.google.com/group/android-developers?hl=en -- 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

