2010-08-05 4 views
0

J'ai lu plusieurs questions connexes ici et je ne trouve pas la réponse à cette question: J'ai un appareil Android 2.1 (HTC Incredible). Mon application, cependant, doit être compatible avec les premières (avant SDK 5) appareils, donc je suis en utilisant le format dépréciée d'URI filtre:Recherche Contact à partir du numéro de téléphone - Old vs New URI: Old échoue, New Succeeds?

Uri contactUri = Uri.withAppendedPath(Contacts.Phones.CONTENT_FILTER_URL, Uri.encode(number)); 
Cursor C = context.getContentResolver().query(contactUri , null, null, null, null)); 

Le nombre est de la forme 15555551212. Ceci ne trouve pas le Contact, au moins sur mon appareil. Cependant, le passage à la nouvelle (SDK 5 et versions ultérieures) Format ContactsContract URI

Uri contactUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(number)); 
Cursor C = context.getContentResolver().query(contactUri , null, null, null, null)); 

résultats dans le succès. À l'origine, le numéro correspondant dans le contact était au format +1 555 555 5555, mais je l'ai modifié pour correspondre exactement au numéro d'entrée 15555555555 et l'ancien URI de format échoue toujours. Dans les deux cas, le nouvel URI de format réussit.

Quelqu'un a-t-il une idée de pourquoi c'est le cas? Je suis perplexe!

+0

Est-il possible que le problème soit dû au fait que mes contacts se trouvent dans la zone Téléphone et non dans Google Contacts ? L'ancienne API est-elle limitée à l'accès aux contacts Google? –

Répondre

0

C'était tout. L'ancienne API ne le fera tout simplement pas. Ayant besoin d'être compatible avec les anciens appareils, j'ai utilisé Reflection pour utiliser les nouveaux appels d'API (ContactsContract) sur API> 4.

Questions connexes