Получить Android: элемент манифеста versionName в коде - PullRequest
68 голосов
/ 10 февраля 2011

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

Ответы [ 4 ]

144 голосов
/ 10 февраля 2011

Для этого не нужно разбирать файл AndroidManifest.xml.

Вы можете получить это, используя:

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

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

35 голосов
/ 27 апреля 2012

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

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

android:versionName="@string/app_versionName"

и в коде:

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

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

8 голосов
/ 09 января 2015

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

String versionName = BuildConfig.VERSION_NAME;

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

2 голосов
/ 08 января 2014

Пока что я использовал приведенный ниже фрагмент кода из этой статьи и успешно получил код версии и название версии из AndroidManifest.xml

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

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