Класс нагрузки на основе версии SDK

Есть ли способ загрузить класс на основе той версии ОС, на которой работает телефон? Например: я сделал приложение, которое требует 1.6+ Android. Есть ли способ загрузить один класс или другой на основе того, на какой ОС работает телефон? Я прошу об этом специально для контактов. База данных была изменена с 1.6 до 2.0, а старая версия не восстанавливает контакты на новом телефоне ОС. Я все равно хотел бы сохранить свое требование 1.6, но в то же время я хотел бы, чтобы телефоны с поддержкой 2.0+ получили доступ к контактной части приложения.

Могу ли я сделать 2 API, как-то упаковать их с помощью приложения и решить «на лету», которые я выбираю для импорта?

Да! Вот пример проекта, иллюстрирующий эту технику.

Шаг №1: Создайте интерфейс или абстрактный класс, описывающий, какие данные вы пытаетесь получить во всех версиях API.

Шаг №2: Создайте конкретные реализации / подклассы интерфейса / абстрактного класса, по одному для каждого уровня API.

Шаг №3: Где-то определите, какой из них вам нужен, и используйте его. В моем примере я делаю это, просматривая значение android.os.Build.SDK в статическом контексте и создавая одноэлемент моего класса «bridge».

Вы можете проверить версию ОС, а затем загрузить нужный класс следующим образом:

 import android.os.Build.VERSION; .... ... if(VERSION.SDK.equals("4")){ //Android 1.6 //Load an instance of your Class for android 1.6 } else { //Load an instance of your Class for android > 1.6 }