Загрузить класс на основе версии SDK - PullRequest
4 голосов
/ 07 июня 2010

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

Так я могу сделать 2 API, каким-то образом упаковать их вместе с приложением и на лету решить, какой из них выбрать для импорта?

Ответы [ 2 ]

7 голосов
/ 07 июня 2010

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

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

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

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

3 голосов
/ 07 июня 2010

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

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...