2011-02-10 2 views
68

Я хочу знать, как разбирать файл AndroidManifest.xml, чтобы получить номер версии приложения через код. андроида: versionNameПолучить андроид: versionName элемент манифеста в коде

+1

Вы можете получить «versionName» вашего приложения с 'BuildConfig.VERSION_NAME', если вы используете Gradle. См. Ответ здесь: http://stackoverflow.com/a/28352130/293280 –

ответ

144

Нет необходимости разобрать файл AndroidManifest.xml для этого.

Вы можете получить это с помощью:

try 
{ 
    String app_ver = this.getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName; 
} 
catch (NameNotFoundException e) 
{ 
    Log.e(tag, e.getMessage()); 
} 

Используйте это внутри вашего метода onCreate().

+0

Мне нужно сравнить мое приложение android: versionName с приложением в загрузках. мое приложение не находится на рынке Android. Мне нужно сравнить versionName на моем мобильном телефоне с доступным на сайте, чтобы узнать новую версию и показать предупреждение для ее обновления .. как можно получить новый номер версии приложения на веб-сайте – jennifer

+0

@jebbifer: просто создайте запрос «Http Get» из вашего приложения и отправьте это значение в параметры этого запроса. И на вашем сервере вам нужно обработать этот запрос и сравнить значения этой версии приложения. Если это больше, чем клиентское приложение, то в ответ отправьте ему ссылку для загрузки новой версии этого приложения. –

+0

Очень niiiice ++ –

35

В случае, если это полезно кому-либо еще, вы также можете получить доступ к @string ресурсам из AndroidManifest.xml, как вы можете, из других xml-файлов.

Так, например, в AndroidManifest.xml:

android:versionName="@string/app_versionName" 

и в коде:

string versionName = getResources().getString(R.string.app_versionName); 

Таким образом, вам не нужно (раздражает, IMO) попытаться/поймать заявление. Я не уверен, что это одобренный способ делать что-то, но это имеет смысл для меня.

+0

Хорошее решение :) – Janusz

+0

мы можем получить содержание манифеста. –

+1

прохладный раствор! Вместо того, чтобы редактировать строку непосредственно из манифеста, используйте строковое значение и отредактируйте его, тогда ваш код не изменится! Мне нравится! +2: P –

2

До сих пор я использовал ниже фрагмент кода из this статьи и успешно получил версии кода и версии имени из AndroidManifest.xml

/* Get android:versionName */ 
String versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName; 

/* Get android:versionCode */ 
int versionCode = getPackageManager().getPackageInfo(getPackageName(), 0).versionCode; 
+0

Пожалуйста, расширьте свой ответ, так как ответы на ссылки не считаются хорошими на SO. –

8

Если вы используете Android Studio, название версии доступен в классе BuildConfig. Этот класс, сгенерированный во время компиляции:

String versionName = BuildConfig.VERSION_NAME; 

Это самый чистый способ получить название версии.

+1

Должен быть принятый ответ! большое спасибо – Phil

Смежные вопросы