【问题标题】:Get current app's build version - Xamarin.Android获取当前应用的构建版本 - Xamarin.Android
【发布时间】:2017-02-01 05:25:00
【问题描述】:

我需要在我的设置页面中显示应用的构建版本。

那么我如何以编程方式从AndroidManifest.xml 文件中获取versionCodeversionName

或者

有什么方法可以在xamarin.forms 中以编程方式获取构建版本。

【问题讨论】:

    标签: xamarin xamarin.android xamarin.forms


    【解决方案1】:

    版本名称:

    Application.Context.ApplicationContext.PackageManager.GetPackageInfo(Application.Context.ApplicationContext.PackageName, 0).VersionName
    

    版本代码:

    Application.Context.ApplicationContext.PackageManager.GetPackageInfo(Application.Context.ApplicationContext.PackageName, 0).VersionCode
    

    【讨论】:

      【解决方案2】:

      使用依赖服务:

      对于 iOS:

      using Foundation;
      
      [assembly: Xamarin.Forms.Dependency(typeof(Screen_iOS))]
      
      namespace XXX.iOS
      {
          public class Screen_iOS : IScreen
          {
      
              public string Version
              {
                  get
                  {
                      NSObject ver = NSBundle.MainBundle.InfoDictionary["CFBundleShortVersionString"];
                      return ver.ToString();
                  }
              }
      
          }
      }
      

      对于安卓:

      using Xamarin.Forms;
      
      [assembly: Dependency(typeof(ScreenAndroid))]
      
      namespace XXX.Droid
      {
          class ScreenAndroid : Java.Lang.Object, IScreen
          {
      
              public string Version
              {
                  get
                  {
                      var context = Forms.Context;
                      return context.PackageManager.GetPackageInfo(context.PackageName, 0).VersionName;
                  }
              }
      
          }
      }
      

      还有界面:

      interface IScreen
      {
          string Version { get; }
      }
      

      【讨论】:

      • 请注意,只有当我在注册属性中使用完整命名空间时,它才对我有用,在这种情况下是:assembly: Dependency(typeof(XXX.Droid.ScreenAndroid))]
      • Forms.Context 已过时。请改用 Android.App.Application.Context。 stackoverflow.com/questions/47353986/…
      【解决方案3】:

      Xamarin.Essentials 中,您可以使用以下内容:

      Version version = AppInfo.Version;
      

      您可以从那里获取构建版本。

      如果你真的只想要内部版本号,你也可以使用快捷方式:

      string buildNumber = AppInfo.BuildString;
      

      【讨论】:

        【解决方案4】:

        Xamarin.Android,你总是可以尝试:

        public double GetAppVersion()
        {
           var info = AppContext.PackageManager.GetPackageInfo(AppContext.PackageName, 0);
           return info.VersionCode;
        }
        

        然后您将需要使用dependency injection 从您的Xamarin.Forms 项目中调用此方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-22
          • 2022-07-19
          • 2011-04-26
          相关资源
          最近更新 更多