2016-09-23 67 views

回答

9

對於版本名稱:

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

對於版本代碼:

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

Xamarin.Android,你總是可以嘗試:

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

,然後你將需要使用dependency injection從您Xamarin.Forms項目調用此方法。

23

與依存性服務:

對於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; } 
} 
+0

注意,它只是爲我工作,當我用在註冊屬性完整的命名空間,這將是在這種情況下: 總成:依賴(typeof(XXX.Droid.ScreenAndroid))] – bergmeister