如何知道执行代码的当前操作系统/平台(Android/iOS)

Ask*_*ein 27 c# xamarin.ios xamarin.android xamarin

使用Xamarin.Android和Xamarin.iOS,我现在需要共享代码部分中的当前操作系统.无论是enum,int还是字符串,都没关系.

我试过这个:

System.Environment.OSVersion
Run Code Online (Sandbox Code Playgroud)

对于某些内核版本信息,它始终是"Unix".

有关于Android的信息,例如

Android.OS.Build.VERSION
Run Code Online (Sandbox Code Playgroud)

但它需要在Android特定代码部分.有没有办法知道公共库中的当前操作系统?

mau*_*are 51

您也可以尝试这个,它可能是我找到的最佳解决方案:

if(Device.RuntimePlatform == Device.iOS)
{
    //iOS stuff
}
else if(Device.RuntimePlatform == Device.Android)
{

}
Run Code Online (Sandbox Code Playgroud)

  • 为了增强这个答案,还可以将 Xamarin.Essentials 与 DeviceInfo API 结合使用。DeviceInfo.Platform 还将返回平台,例如“Android”。 (2认同)

jze*_*ino 5

我正在使用DeviceInfo插件.它支持Android, iOs, Windows Phone Silverlight, Windows Phone RT, Windows Store RT, Windows 10 UWP并且它完美地工作.

它可以PCL像这样使用(你必须将插件添加到平台项目中PCL):

var platform = CrossDeviceInfo.Current.Platform;
    switch(platform){
        case Platform.iOS:
            // iOS
            break;
        case Platform.Android:
            // Android
            break; 
    }
Run Code Online (Sandbox Code Playgroud)

这种代码不是一个好习惯PCL,它更好地使用Dependency Injection(这个插件使用它)来定制平台特定的行为.