使用Xamarin.Android和Xamarin.iOS,我需要在共享代码部分知道当前的操作系统。无论是枚举、整数还是字符串都可以。
我尝试了这个:
System.Environment.OSVersion
这个通常是带有一些内核版本信息的"Unix"。
例如,Android上有相关信息。
Android.OS.Build.VERSION
但它需要在 Android 特定的代码部分中。有没有办法在公共库中知道当前的操作系统?
使用Xamarin.Android和Xamarin.iOS,我需要在共享代码部分知道当前的操作系统。无论是枚举、整数还是字符串都可以。
我尝试了这个:
System.Environment.OSVersion
这个通常是带有一些内核版本信息的"Unix"。
例如,Android上有相关信息。
Android.OS.Build.VERSION
但它需要在 Android 特定的代码部分中。有没有办法在公共库中知道当前的操作系统?
你也可以尝试这个,这可能是我找到的最好的解决方案:
if(Device.RuntimePlatform == Device.iOS)
{
//iOS stuff
}
else if(Device.RuntimePlatform == Device.Android)
{
}
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;
}
在PCL
中,这种代码并不是一个好的实践,最好使用依赖注入
(此插件使用该方法)来自定义特定平台的行为。
使用反射来尝试检索Monotouch.Version
属性的值(以及MfA的等效项:Android.OS.Build.VERSION)。其中一个调用将失败,另一个应该成功;这就是为什么你必须使用反射。这是实时运行时检查。
但由于您的应用程序被编译了两次,因此可以在编译时修复该值。
#if MONOTOUCH
var platform = "iOS"
#else
var platform = "Android"
#endif