Android - Показать список контактов с тем же номером телефона - PullRequest
5 голосов
/ 09 апреля 2010

У меня есть виджет, который будет открывать список контактов по номеру телефона. Я использую Contacts.Intents.SHOW_OR_CREATE_CONTACT Я знаю, что это устарело, но я хочу, чтобы это работало на Android 1.6. У меня есть номер телефона, который можно использовать для поиска. вот код

Intent contViewIntent = new Intent(Contacts.Intents.SHOW_OR_CREATE_CONTACT);
contViewIntent.setData(Uri.fromParts("tel", number, null));

PendingIntent contPendIntent = PendingIntent.getActivity(context, 0, contViewIntent, 0);
views.setOnClickPendingIntent(viewID, contPendIntent);

Если в списке контактов 2 или более контактов с одинаковым номером, откроется список контактов, и пользователь выберет один. Это хорошо работает на 1.6, но на 2.0 и выше он показывает список контактов с номером 1 или 2 в именах, и когда вы выбираете один из них из списка, чтобы просмотреть, вы получаете ошибку.

04-09 19: 12: 47,891: ОШИБКА / CursorWindow (105): неверный запрос для полевого слота 0,6. numRows = 2, numColumns = 6

04-09 19: 12: 47.992: ОШИБКА / AndroidRuntime (105): java.lang.IllegalStateException: получить слот поля из строки 0 col 6 не удалось

как мне заставить это работать на 1.6 и 2.0 выше?

Ответы [ 2 ]

1 голос
/ 29 июня 2010

Android 2.0 имеет полностью новый API для управления контактами (см. ContactsContract). В моем приложении я написал низкоуровневое управление контактами дважды - один раз для 2.0, один раз для 1.6 и ниже (я проверяю через отражение, чтобы увидеть, существует ли класс ContactsContract и переключаюсь на код 2.0+ в этом случае).

0 голосов
/ 09 мая 2010

Я думаю, что вам лучше использовать API поставщика контента Android в сочетании с запросом SQL (найти строку или строки с совпадающим номером телефона):

http://developer.android.com/guide/topics/providers/content-providers.html

Затем можно отобразить экран параметров, предлагающий пользователю выбрать, какой контакт подходит, если запрос возвращает два контакта.

Затем вы можете передать поле _id (уникальное) в приложение контактов, чтобы открыть выбранный контакт (избегая ошибки, которую вы видите).

...