Как использовать API контактов для Android 1.x и 2.x одновременно? - PullRequest
3 голосов
/ 22 февраля 2010

Ми проблема в том, что мне нужно реализовать список контактов в моем приложении для Android 1.5, 1.6 и 2.x.

Я сделал это, используя старый Контакты API, а не ContactsContract из-за обратной совместимости с серией 1.x. Но при отображении моего приложения на 2.x список контактов не полный. На некоторых устройствах он отображается как пустой, а на некоторых устройствах он отображает только некоторые контакты в устройстве.

Я знаю, что при использовании API Contacts для серии 2.x будут отображаться только контакты основной учетной записи, но это не так. Похоже, отображаются только недавно обновленные контакты, но это не так.

Так что вопрос: как правильно реализовать список контактов для версий 2.x и 1.x для Android?

Заранее спасибо

1 Ответ

7 голосов
/ 22 февраля 2010

Но при отображении моего приложения на 2.x список контактов не является полным. В некоторых устройства это показано как пустое, а в некоторые устройства отображают только некоторые контакты в устройстве.

Правильно. Старый API контактов осуществляет доступ только к контактам, хранящимся только на устройстве, а не к тем, которые были получены с помощью синхронизации от других поставщиков. Также была ошибка в Android 2.0, из-за которой вы даже не получили локально сохраненные контакты, хотя это было исправлено в Android 2.0.1 IIRC.

Так вот вопрос: как правильно реализовать список контактов для обоих 2.x и 1.x версия андроида?

Для незначительных изменений, относящихся к версии (например, вам просто нужно право Uri), вы можете просто использовать отражение, как показано в этом примере проекта .

Если ваши потребности более сложны, вы можете воспользоваться условной загрузкой классов, создав интерфейс (или абстрактный базовый класс) и две реализации, по одной для каждого уровня API, и использовать только правильную. Это продемонстрировано в этом примере проекта .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...