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