2010-06-07 4 views
4

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

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

ответ

7

Да! Here is a sample project, иллюстрирующий технику.

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

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

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

+0

Ups! Этот ответ больше, чем мой! Кредиты идут вам –

+0

Спасибо, что решили! – Bostjan

3

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

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 
} 
Смежные вопросы