尝试获取包版本信息以显示在"关于"消息中

use*_*135 21 android

我一直在努力从PackageInfo对象类型获取正在运行的应用程序的versionName.

我构建了一个Parcelable接口,其中包含与PackageInfo对象类型相关的所有字段.该接口方法的主要输入是Parcel对象.

我似乎无法弄清楚如何正确关联这些Parcelable,Parcel和PackageInfo对象.

那里有我可以查看的示例代码吗?似乎不应该那么困难,但似乎是在困扰我.

谢谢爵士乐

Cas*_*ash 42

示例代码:

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


Kim*_*Kha 9

现代方式:

如果您通过Gradle(使用Android Studio)构建Android项目,则有获得版本的最佳快捷方式:

com.yourproject.BuildConfig.VERSION_NAME
Run Code Online (Sandbox Code Playgroud)

它链接到versionName您的build.gradle文件中.

实际上,您可以build.gradle通过这种方式从文件中获取应用程序ID和更多信息.


Jan*_*usz 8

我使用以下代码来获取清单中使用的版本.我写了一个小函数来封装和隐藏这个有点大的块来获得一个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;
}
Run Code Online (Sandbox Code Playgroud)

这将返回选择的int以识别您在市场中的版本(VersionCode).不是VersionName.要了解如何更改代码,请查看Casebash中的代码.


Com*_*are 4

PackageInfoversionName公共数据成员。您不需要执行任何特殊操作即可获取“来自 PackageInfo 对象类型的正在运行的应用程序的版本名称”。如果您有一个PackageInfo名为 的对象info,则可以versionName通过访问info.versionName