0

Je travaille sur une exigence, où j'ai besoin d'identifier tous les contacts de Google enregistrés/synchronisés avec le répertoire de l'appareil Android. Ensuite, je dois récupérer un identifiant de contact unique (identifiant unique de Google) de chaque contact qui sera le même sur d'autres appareils et d'autres plates-formes.Android: Obtenir l'ID de contact unique de google depuis la base de données ContactProvider

J'ai lu la documentation du développeur Android concernant RAW_CONTACT_ID. En outre, j'ai essayé d'obtenir l'identification de contact brute, mais j'obtiens la valeur différente de l'identification de contact brute sur d'autres dispositifs.

Si quelqu'un peut me mettre sur la bonne direction, ce sera vraiment utile.

Si vous avez besoin de plus d'informations, s'il vous plaît demander.

Répondre

0

Essayez d'utiliser ContactsContract.PhoneLookup

Une table qui représente le résultat de la recherche un numéro de téléphone, par exemple pour l'identification de l'appelant. Pour effectuer une recherche, vous devez ajouter le numéro que vous voulez trouver à CONTENT_FILTER_URI. Cette requête est hautement optimisée.

Uri uri = Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI, Uri.encode(phoneNumber)); 
resolver.query(uri, new String[]{PhoneLookup.DISPLAY_NAME,... 

PhoneLookup._ID 

est ce que vous cherchez.

Vous pouvez également essayer la solution fournie dans this post:

public static int getContactIDFromNumber(String contactNumber,Context context) 
{ 
    contactNumber = Uri.encode(contactNumber); 
    int phoneContactID = new Random().nextInt(); 
    Cursor contactLookupCursor = context.getContentResolver().query(Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,contactNumber),new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup._ID}, null, null, null); 
     while(contactLookupCursor.moveToNext()){ 
      phoneContactID = contactLookupCursor.getInt(contactLookupCursor.getColumnIndexOrThrow(PhoneLookup._ID)); 
      } 
     contactLookupCursor.close(); 

    return phoneContactID; 
} 
0

Toutes les _ID valeurs de Contacts Android sont locaux, ils sont généralement progressifs et ne sont pas synchronisées entre les appareils.

Les valeurs susceptibles d'être synchronisées par l'application SyncAdapter (ici SyncAdapter de Google) sont SYNC1, SYNC2, SYNC3, SYNC4. Cependant, notez que ces champs ne sont pas garantis de faire quoi que ce soit, et que le SyncAdapter peut les utiliser à toutes fins utiles, habituellement, l'un d'eux est utilisé comme "identificateur de serveur" dont vous avez juste besoin pour les imprimer, et vérifier manuellement lequel.