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

Я пытался получить versionName для запущенного приложения из типа объекта PackageInfo.

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

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

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

Спасибо Джаз

Ответы [ 5 ]

41 голосов
/ 31 мая 2010

Пример кода:

try {
    PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
    return packageInfo.versionName;
} catch (NameNotFoundException e) {
    //Handle exception
}
9 голосов
/ 01 сентября 2015

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

Если вы строите свой проект Android с помощью Gradle (с Android Studio), есть лучший способ получить версию:

com.yourproject.BuildConfig.VERSION_NAME

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

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

8 голосов
/ 31 мая 2010

Я использую следующий код, чтобы получить версию, использованную в манифесте. Я написал небольшую функцию для инкапсуляции и скрытия этого довольно большого куска, необходимого только для получения 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.

3 голосов
/ 10 апреля 2010

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

0 голосов
/ 11 апреля 2012

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

String version = new PackageInfo().versionName;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...