Контакты AndroidСоздание и сборка в нескольких версиях SDK - PullRequest
4 голосов
/ 12 января 2010

Мне нужно, чтобы мое приложение работало на всех версиях Android, но API Контактов изменился в 2.0.

В SDK 1.6 и более ранних версиях я использую android.provider.Contacts для запроса базы данных контактов, но это не работает в 2.0

Вместо этого для 2.0 я использую android.provider.ContactsContract. Это создает проблему: когда у меня есть код для ContactsContract, мое приложение не будет собираться для 1.6 и более ранних версий.

Нужно ли иметь две отдельные версии моего приложения (одну для <= 1.6 и одну для 2.0 и более поздних) или есть способ избежать этого? </p>

1 Ответ

8 голосов
/ 12 января 2010

Вы можете поддерживать обе версии на Android, используя Java Reflection. Забавно, ответ на ваш вопрос можно найти в недавнем вопросе об отражении, используемом для решения именно этой проблемы :

Uri baseUri = Contacts.Phones.CONTENT_FILTER_URL;
try {
    Class<?> c = Class.forName("android.provider.ContactsContract$PhoneLookup");
    baseUri = (Uri) c.getField("CONTENT_FILTER_URI").get(baseUri);
} 
    catch (Exception e) {
}
...