Получить элемент андроида: versionName в коде

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

Ответ 1

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

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

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

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

Ответ 2

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

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

android:versionName="@string/app_versionName"

и в коде:

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

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

Ответ 3

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

String versionName = BuildConfig.VERSION_NAME;

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

Ответ 4

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

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

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