Но при отображении моего приложения на 2.x
список контактов не является полным. В некоторых
устройства это показано как пустое, а в
некоторые устройства отображают только некоторые
контакты в устройстве.
Правильно. Старый API контактов осуществляет доступ только к контактам, хранящимся только на устройстве, а не к тем, которые были получены с помощью синхронизации от других поставщиков. Также была ошибка в Android 2.0, из-за которой вы даже не получили локально сохраненные контакты, хотя это было исправлено в Android 2.0.1 IIRC.
Так вот вопрос: как правильно
реализовать список контактов для обоих 2.x
и 1.x версия андроида?
Для незначительных изменений, относящихся к версии (например, вам просто нужно право Uri
), вы можете просто использовать отражение, как показано в этом примере проекта .
Если ваши потребности более сложны, вы можете воспользоваться условной загрузкой классов, создав интерфейс (или абстрактный базовый класс) и две реализации, по одной для каждого уровня API, и использовать только правильную. Это продемонстрировано в этом примере проекта .