L'obtention d'identification de Contact à partir d'Android Contacts de la base de données ne fonctionne pas comme prévu

J'ai le code suivant.

        int phoneContactID = new Random().nextInt();

    Cursor contactLookupCursor =  context.getContentResolver().query( Uri.withAppendedPath(PhoneLookup.CONTENT_FILTER_URI,Uri.encode(contactNumber)), new String[] {PhoneLookup.DISPLAY_NAME, PhoneLookup._ID},null,null,null);     

    try 
    {
        contactLookupCursor.moveToFirst();
        while(contactLookupCursor.moveToNext())
        {
            phoneContactID = contactLookupCursor.getInt(contactLookupCursor.getColumnIndexOrThrow(PhoneLookup._ID));
         }
    } 
    finally 
    {
        contactLookupCursor.close();
    }       

Le problème dans le code ci-dessus, c'est que même si je donne un numéro existant dans l'émulateur contacts, ce n'est pas le retour des résultats. J'ai été le tester une heure de retour et ça marchait très bien, et maintenant quand je l'ai testé à nouveau, ce n'est pas de retourner quoi que ce soit. Je ne suis pas sûr si quelque chose est incorrect avec le code. Ce que j'essaie de faire est d'obtenir un ID qui correspond à un seul avec plusieurs numéros. Par exemple, dire qu'il y a un nom de contact appelé "a" et d'Une a deux chiffres. Essentiellement le contact ID pour Un devrait être de 1 quel que soit le nombre de qui je me réfère à l'. Est mon hypothèse est correcte ?

Mise à JOUR : j'ai fait des tests un peu plus. Disons que si un nombre est stocké sans le code pays dans la base de données de contacts comme 222-222-2222. Une recherche à l'aide du code ci-dessous renvoie contact id seulement quand je passe la 2222222222 ou 222-222-2222. Et si le même numéro est stocké comme 12222222222 un contact valide id est reçu que si j'nombre de recherche est 12222222222.

        String[] projection = new String[] {ContactsContract.CommonDataKinds.Phone._ID,ContactsContract.CommonDataKinds.Phone.CONTACT_ID};
    Uri contactUri = Uri.withAppendedPath(ContactsContract.CommonDataKinds.Phone.CONTENT_FILTER_URI, Uri.encode(contactNumber));
    Cursor c = context.getContentResolver().query(contactUri, projection, null, null, null);
    if (c.moveToFirst()) {
        phoneContactID = c.getInt(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.CONTACT_ID));
    }

Je ne suis pas sûr si je fais quelque chose de mal ici. Toute aide serait appréciée.

OriginalL'auteur vikramjb | 2011-09-09