Hi Richard,

You are exactly right.  If you want a robust persistent reference to a
contact, you now need to use the lookup URI.  Android itself uses lookup
URIs for shortcuts, Quick Contact etc.  The main reason contact ID is
volatile is that Android 2.0 has contact aggregation, both automatic and
manual.  Let's say your app stored a long ID of a contact.  Then the user
goes and manually joins the contact with some other contact. Now we have one
contact where we used to have two - the stored long contact ID points
nowhere.  However, the lookup key is more resilient.  It's a string
concatenating identities of raw contacts.  Using that string, we can still
track down a contact as it is joined with others or separated from them.

There are two options available to you: you can store just the lookup key,
which is a string id of a contact, or you can use both the lookup and the
long id of a contact.  The latter will give you better performance, but
functionally the long id is not required.  I would take this approach: if
you need to bulk-process contacts, maintain both ids.  If your app works
with a single contact per user action - you don't need to bother with the
long id.

I hope this helps,
- Dmitri

On Mon, Nov 2, 2009 at 9:02 AM, jarkman <[email protected]> wrote:

> In the course of moving to the 2.0 cotnact APIs, I've stumbled across
> CONTENT_LOOKUP_URI :
>
>
> http://developer.android.com/reference/android/provider/ContactsContract.Contacts.html#CONTENT_LOOKUP_URI
>
> "As long as the contact's row ID remains the same, this URI is
> equivalent to CONTENT_URI. If the contact's row ID changes as a result
> of a sync or aggregation, this URI will look up the contact using
> indirect information "
>
> Currently, we store contact IDs to identify particular contacts. If I
> read this right, contact IDs will no longer be stable in the world of
> 2.0, and we will need to store a lookup URI (or at least a LOOKUP_KEY
> and a row ID) in order to identify a contact in a stable way.
>
> That would be a substantial change in our code. So, before I rush off
> to do it, I'd love to find out if a contact row ID change is going to
> be a routine thing (say, on every sync), or if it will be a very rare
> thing (say, when two contacts are manually combined into one, or some
> even rarer exception).
>
> Any clues ?
>
> Thanks,
>
> Richard
>
> --
> 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%[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

Reply via email to