0

Я ищу до контакта с номером телефона, как описано hereпоиска Android телефон (PhoneLookup.CONTENT_FILTER_URI) возвращает тот же контакт несколько раз

Uri lookupUri = Uri.withAppendedPath(ContactsContract.PhoneLookup.CONTENT_FILTER_URI, Uri.encode(givenNumber)); 

final Account availableAccounts[] = AccountManager.get(context).getAccountsByType(Constants.ACCOUNT_TYPE); 
Uri rawContactUri = ContactsContract.RawContacts.CONTENT_URI; 

Cursor phoneContact = context.getContentResolver().query(
    lookupUri 
    , null //new String[]{ContactsContract.PhoneLookup._ID, ContactsContract.PhoneLookup.DISPLAY_NAME} 
    ,null,null, null); 

DatabaseUtils.dumpCursor(phoneContact); 

while (phoneContact.moveToNext()) { 
    long contactID = phoneContact.getLong(phoneContact.getColumnIndex(ContactsContract.PhoneLookup._ID));    
} 
phoneContact.close(); 

Проекция устанавливается в нуль для целей отладки. Я получаю тот же контакт несколько раз, как можно видеть в результате DatabaseUtils.dumpCursor(phoneContact);:

>>>>> Dumping cursor [email protected] 
0 { 
number=+00001122334 
photo_uri=content://com.android.contacts/display_photo/6 
send_to_voicemail=0 
lookup=32i415560988b4aed0e.32i636352790bf3a3a6.3789r869-2D4531433931.3746i15 
display_name=John Doe 
last_time_contacted=1425383680707 
has_phone_number=1 
in_visible_group=1 
photo_file_id=6 
label=null 
starred=0 
normalized_number=+00001122334 
photo_thumb_uri=content://com.android.contacts/contacts/212/photo 
photo_id=1427 
in_default_directory=1 
custom_ringtone=null 
_id=212 
type=2 
times_contacted=44 
} 
1 { 
number=0001122334 
photo_uri=content://com.android.contacts/display_photo/6 
send_to_voicemail=0 
lookup=32i415560988b4aed0e.32i636352790bf3a3a6.3789r869-2D4531433931.3746i15 
display_name=John Doe 
last_time_contacted=1425383680707 
has_phone_number=1 
in_visible_group=1 
photo_file_id=6 
label=null 
starred=0 
normalized_number=+27001122334 
photo_thumb_uri=content://com.android.contacts/contacts/212/photo 
photo_id=1427 
in_default_directory=1 
custom_ringtone=null 
_id=212 
type=2 
times_contacted=44 
} 
2 { 
number=0001122334 
photo_uri=content://com.android.contacts/display_photo/6 
send_to_voicemail=0 
lookup=32i415560988b4aed0e.32i636352790bf3a3a6.3789r869-2D4531433931.3746i15 
display_name=John Doe 
last_time_contacted=1425383680707 
has_phone_number=1 
in_visible_group=1 
photo_file_id=6 
label=null 
starred=0 
normalized_number=+27001122334 
photo_thumb_uri=content://com.android.contacts/contacts/212/photo 
photo_id=1427 
in_default_directory=1 
custom_ringtone=null 
_id=212 
type=2 
times_contacted=44 
} 
<<<<< 

Примечание: я заменил номер телефона по соображениям конфиденциальности. Единственное различие между контактами заключается в том, что 1-й номер имеет номер в международном формате (+00), а остальное - в локальном формате.

Если кто-то может пролить свет на это поведение, вопрос, идентичный моему, но с меньшей детализацией - here, но он также не отвечает. Подобные вопросы состоят из людей, не проверяющих mime_types, для example

Спасибо.

ответ

0

См. Ответ здесь: https://stackoverflow.com/a/30249338/819355.

В принципе, вы можете использовать CommonDataKinds.Phone.CONTENT_FILTER_URI вместо PhoneLookup.CONTENT_FILTER_URI, чтобы получить отдельные результаты.

Смежные вопросы