Попытка получить информацию о версии пакета для отображения в сообщении «О программе»

Я боролся с получением versionName для запущенного приложения из типа ObjectInfo PackageInfo.

Я построил Parcelable Interface со всеми полями, связанными с типом объекта PackageInfo. Первичный ввод для этого интерфейса – объект Parcel.

Я не могу понять, как правильно связать объекты Parcelable, Parcel и PackageInfo.

Есть ли какой-нибудь образец кода, на который я могу смотреть? Похоже, это не должно быть так сложно, но, похоже, меня это устраивает.

Благодаря Джазу

Solutions Collecting From Web of "Попытка получить информацию о версии пакета для отображения в сообщении «О программе»"

Образец кода:

try { PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0); return packageInfo.versionName; } catch (NameNotFoundException e) { //Handle exception } 

Я использую следующий код, чтобы получить версию, используемую в манифесте. Я написал небольшую функцию, чтобы инкапсулировать и скрыть этот несколько большой кусок, необходимый, чтобы просто получить int.

 private int getVersion() { int version = -1; try { PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_META_DATA); version = pInfo.versionCode; } catch (NameNotFoundException e1) { Log.e(this.getClass().getSimpleName(), "Name not found", e1); } return version; } 

Это вернет выбранный int для определения вашей версии на рынке (VersionCode). Не имя VersionName. Чтобы посмотреть, как изменить код для этого, посмотрите код из Casebash.

Современный способ:

Если вы создадите свой Android-проект Gradle (с Android Studio), есть лучший ярлык для получения версии:

 com.yourproject.BuildConfig.VERSION_NAME 

Он связан с build.gradle файле build.gradle .

Фактически вы можете получить идентификатор приложения и дополнительную информацию из файла build.gradle .

PackageInfo является публичным пользователем данных. Вам не нужно ничего делать, чтобы получить «имя версии для запущенного приложения из типа объекта PackageInfo». Если у вас есть объект PackageInfo именем info , вы info.versionName доступ к имени info.versionName через info.versionName .

Также есть ярлык:

String version = new PackageInfo().versionName;