【问题标题】:How do I get my application Version如何获取我的应用程序版本
【发布时间】:2011-09-07 14:24:37
【问题描述】:

谁能告诉我如何在 Android 中获取应用程序版本?

【问题讨论】:

标签: android


【解决方案1】:

这个page 有一个关于如何从java 做的提示:

PackageManager manager = context.getPackageManager();
PackageInfo info = manager.getPackageInfo(
    context.getPackageName(), 0);
String version = info.versionName;

另外,this link has official information on how to properly set up your application versioning

【讨论】:

  • 我对如何向用户提供更新版本感到困惑? Android 市场会这样做,否则我们必须向用户提供有关它的信息,请给我有关它的链接文档
  • @nileshbirhade:提出一个单独的堆栈溢出问题。或者先尝试谷歌搜索。这就是我得到这个答案的方式
  • 有人试图编辑问题以添加异常处理,但只是吞下了异常。我不清楚在哪种情况下调用getPackageInfo 会抛出(不知何故您的应用程序没有指定版本?),以及在这种情况下什么是有用的行为。编辑也没有说清楚,所以我拒绝了。
  • @MerlynMorgan-Graham 实际上,你必须使用 try-catch 否则它不会让你编译,它会在编译时给你一个“未处理的异常:NameNotFoundException”
  • @AbAppletic 啊,忘了检查异常(幸运的是我)。然后随意编辑它,只要添加有用的回退行为,并且可能是适当的日志记录而不是静默吞咽异常(就像我链接的博客文章一样)。
【解决方案2】:

我正在使用 Android Studio,我意识到我可以使用一行代码来获得这个。

/*version name*/
BuildConfig.VERSION_NAME

/*version code*/
BuildConfig.VERSION_CODE

已编辑:

如果您使用其他 android 库,请确保从您的应用程序包中导入 BuildConfig。这类似于自动生成的用于识别资源的 R 类。

【讨论】:

    【解决方案3】:
    public int getVersion(Context context) {
            try {
                PackageInfo pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_META_DATA);
                return pInfo.versionCode;
            } catch (NameNotFoundException e) {
                return 0;
            }
        }
    }
    

    更多信息link

    【讨论】:

    【解决方案4】:

    获取申请信息:

    PackageManager manager = this.getPackageManager();
    try {
       PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0);
       String packageName = info.packageName;
       int versionCode = info.versionCode;
       String versionName = info.versionName;
       } catch (NameNotFoundException e) {
       // TODO Auto-generated catch block
       }
    

    【讨论】:

      【解决方案5】:

      我找到的最简单和最好的答案是只导入您的 BuildConfig

      import your.package.BuildConfig;
      

      那么就

      String verName = BuildConfig.VERSION_NAME;
      int verCode = BuildConfig.VERSION_CODE;
      

      【讨论】:

        【解决方案6】:

        如果你使用的是 eclipse,试试这个:

        PackageInfo packageInfo = this.getPackageManager().getPackageInfo(getPackageName(), 0);
        int versionCode = packageInfo.versionCode;
        String version = packageInfo.versionName;
        

        在 Android Studio 中:

        int versionCode = BuildConfig.VERSION_CODE;
        String versionName = BuildConfig.VERSION_NAME;
        

        确保您的模块级 build.gradle 文件中有 mansion 版本代码

        【讨论】:

          【解决方案7】:

          在你(Module : app) gradle 中定义版本名称和版本代码

          defaultConfig {
                  applicationId "com.sing.smart"
                  minSdkVersion 16
                  targetSdkVersion 23
                  versionCode 1
                  versionName "1.1.0"
              }
          

          版本代码

          versionCode 是用于轻松区分应用版本的整数值。

          应用开发者在 Android Market 中发布应用更新时必须增加该值,以便确定用户是否使用旧版本的应用,并提供更新。

          版本名称

          versionName 是一个字符串,其中包含在其他桌面应用程序中看到的常规“发布版本”,例如“1.4.5”或“3.7”。

          versionName 只是一个“人类可读”的版本代码。

          PackageInfo pinfo = getPackageManager().getPackageInfo(getPackageName(), 0);  
          int versionNumber = pinfo.versionCode;  
          String versionName = pinfo.versionName;
          

          【讨论】:

            【解决方案8】:

            如果你需要它来编写脚本(而不是编程),你可以使用这个命令:

             adb shell "pm dump com.example.your.package.name | grep \"versionCode\"" | awk '{print $1}' | awk -F '=' '{print $2}'
            

            【讨论】:

            • 这几乎正是我所需要的,除了你必须安装应用程序才能让它工作。我需要这样的东西,但根本不需要构建应用程序。这是因为在构建发生之前我需要版本号(考虑增加它)
            【解决方案9】:

            int versionCode = BuildConfig.VERSION_CODE;

            String versionName = BuildConfig.VERSION_NAME;

            【讨论】:

              【解决方案10】:

              在 Nativescript(使用 Typescript)上,可以这样做:

              import {Observable} from 'data/observable';
              import * as applicationModule from 'application'
              
              export class AboutViewModel extends Observable {
                  public version: string;
              
                  constructor() {
                      super();
                      let manager = applicationModule.android.context.getPackageManager();
                      let info = manager.getPackageInfo(applicationModule.android.context.getPackageName(), 0);
                      this.version = info.versionName;
                  }
              }
              

              【讨论】:

                【解决方案11】:

                在科特林中:

                fun getAppVersionName(context: Context): String {
                        var appVersionName = ""
                        try {
                            appVersionName =
                                context.packageManager.getPackageInfo(context.packageName, 0).versionName
                        } catch (e: PackageManager.NameNotFoundException) {
                            e.printStackTrace()
                        }
                        return appVersionName
                    }
                
                
                
                fun getAppVersionCode(context: Context): Long {
                        var appVersionCode = 0L
                        try {
                            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
                                appVersionCode =
                                    context.packageManager.getPackageInfo(context.packageName, 0).longVersionCode
                            }
                            else{
                                appVersionCode =
                                    context.packageManager.getPackageInfo(context.packageName, 0).versionCode.toLong()
                            }
                        } catch (e: PackageManager.NameNotFoundException) {
                            e.printStackTrace()
                        }
                        return appVersionCode
                    }
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-01-12
                  • 2019-12-03
                  • 2011-09-25
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-01-26
                  • 1970-01-01
                  相关资源
                  最近更新 更多