2017-07-17 4 views
0

J'ai une application qui obtient le ContactsContract.Contacts.LOOKUP_KEY d'un contact sur l'appareil et l'enregistre sur l'application Db. Après avoir lu la page this, j'ai pensé que je pouvais utiliser le LOOKUP_KEY pour identifier de manière unique un contact, même lorsqu'un contact est édité (par exemple après avoir édité le nom du contact).Comment identifier de façon unique un contact sur ContactsContract.Contacts table

En fait, j'ai vu que, après avoir modifié un contact, ses changements LOOKUP_KEY, donc je ne peux plus utiliser le LOOKUP_KEY j'ai enregistré sur mon DB d'application.

Ma question est la suivante: existe-t-il un moyen d'identifier de façon unique un contact sur ContactsContract.Contacts à partir du moment où il est créé pour la première fois sur l'appareil jusqu'à ce qu'il soit supprimé de l'appareil?

Merci

Répondre

1

Un LOOKUP_KEY n'est pas destiné à être utilisé seul, il doit plutôt être utilisé avec le _ID_ID d'un contact pour former un complet. Le lookupUri peut ensuite être utilisé pour trouver un contact dans les tables CONTENT_LOOKUP_URI. Le CONTENT_LOOKUP_URI essentiellement recherche d'abord le contact par _ID, si elle ne trouve pas, ou le _ID semble être le mauvais contact, il utilise notes de la partie LOOKUP_KEY pour essayer de retrouver le bon contact pour vous.

De CONTENT_LOOKUP_URI

A contenu: // URI de style pour cette table qui devrait être utilisé pour créer des raccourcis ou autrement créer des liens à long terme aux contacts. Cet URI doit toujours être suivi d'un «/» et de LOOKUP_KEY du contact. Il peut éventuellement aussi avoir un "/" et le dernier ID de contact connu ajouté après cela. Ce format "complet" est une optimisation importante et est fortement recommandé.

Tant que l'ID de ligne du contact reste le même, cet URI est équivalent à CONTENT_URI. Si l'ID de ligne du contact change en conséquence d'une synchronisation ou d'une agrégation, cet URI recherche le contact à l'aide des informations indirectes (ID de synchronisation ou contacts bruts constitutifs).

La clé de recherche doit être ajoutée non codée - elle est stockée dans le formulaire codé , prête à l'emploi dans un URI.

De getLookupUri(long contactId, String lookupKey)

construire une CONTENT_LOOKUP_URI recherche Uri en utilisant la _ID donnée et LOOKUP_KEY.

De LOOKUP_KEY

Une valeur opaque qui contient conseils sur la façon de trouver le contact si son ID de ligne a changé en raison d'une synchronisation ou l'agrégation.

+0

Je vois. Merci mec :) – MDP

1

L'ID de ligne (clé primaire) pour chaque contact appelé _ID.

+0

Merci l'homme :) – MDP