Можно ли получить доступ к версии приложения из проекта библиотеки в Android?

У меня есть библиотека Android, которая вызывается из приложения. Я хочу получить доступ к версии приложения из проекта библиотеки. Это вообще возможно?

РЕДАКТИРОВАТЬ: я не контролирую вызывающее приложение. Мне нужен какой-то способ получить версию приложения для вызова из библиотеки.


person bianca    schedule 25.02.2013    source источник


Ответы (2)


Если вы передаете контекстную информацию, вы должны иметь возможность использовать

PacketManager yourPacket = context.getPackageManager();

который дает вам кучу информации.

person DigCamara    schedule 25.02.2013
comment
Это решение работает на уровне приложения, которое имеет контекст. Но у моей библиотеки нет собственной активности. Можно ли получить версию из манифеста Android для такой автономной библиотеки? - person bianca; 26.02.2013
comment
проблема в том, что библиотеки самой по себе не существует. Вам нужно будет встроить в него информацию о версии или использовать контекст приложения, чтобы оно начало поиск информации о связанных пакетах. - person DigCamara; 26.02.2013
comment
вы можете, например, потребовать, чтобы приложение создавало экземпляр вашего класса с его контекстом и использовало указанный контекст для ссылки на его информацию. - person DigCamara; 26.02.2013
comment
На самом деле мне нужно, чтобы версия приложения не зависела от версии библиотеки. Как вы думаете, я должен жестко запрограммировать версию библиотеки в виде константы или что-то в этом роде в коде библиотеки? - person bianca; 26.02.2013
comment
Вы не можете заставить приложение, которое вам звонит, предоставить вам ссылку на контекст? Это был бы лучший способ, на самом деле. - person DigCamara; 26.02.2013
comment
интересно, какой лучший способ в настоящее время для версии библиотеки? Прямо сейчас я использую константу в библиотеке для представления номера версии. Это единственное доступное решение? - person bianca; 26.02.2013
comment
давайте продолжим это обсуждение в чате - person DigCamara; 26.02.2013

Один из возможных вариантов — получить версию приложения из самого приложения, а затем сделать ее доступной «вручную» для библиотеки, сохранив ее в каком-то общем хранилище, таком как файл WORLD_READABLE, или на SD-карте, или что-то в этом роде.

Или, возможно, в зависимости от библиотеки и того, насколько вы можете ее изменить, вы также можете использовать какой-то статический объект для хранения данных для вас.

person FoamyGuy    schedule 25.02.2013