Я хочу знать, как разбирать файл AndroidManifest.xml, чтобы получить номер версии приложения через код. Android: versionName
Получить элемент андроида: 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;