2010-08-05 4 views
0

Я читал здесь несколько вопросов и не могу найти ответ на этот вопрос: у меня есть устройство Android 2.1 (HTC Incredible). Мое приложение, однако, должно быть совместимо с ранними (5 до SDK) устройств, поэтому я использую устаревший формат фильтр URI:Поиск Контакт с телефона - Старый против Нового URI: Старый не удается, Новые успехи?

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

номер имеет вида 15555551212. Это не удается найти Свяжитесь, по крайней мере, на моем устройстве. Однако, переходя к новому (SDK 5 и выше) формат ContactsContract URI

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

приводит к успеху. Первоначально соответствующее число в контакте было в формате +1 555 555 5555, но я изменил его, чтобы точно соответствовать номеру ввода 15555555555, и URI старого формата все еще не работает. В обоих случаях URI нового формата преуспевает.

Есть ли у кого-нибудь мысли, почему это так? Я в тупике!

+0

Возможно ли, что проблема связана с тем, что мои контакты находятся в области «Телефон», а не в контактах Google ? Доступен ли старый API для доступа к контактам Google? –

ответ

0

Именно так. Старый API просто не будет. Чтобы быть совместимым со старыми устройствами, я использовал Reflection to laod и использовал новые вызовы API (ContactsContract) в API> 4.