Xamarin.AndroidとXamarin.iOSを使用して、現在のOSを共有コードセクションに追加する必要があります。 enum、int、stringのいずれであっても、関係ありません。
私はこれを試しました:
System.Environment.OSVersion
これは常にいくつかのカーネルバージョン情報を含む「Unix」です。
Androidたとえば、
Android.OS.Build.VERSION
ただし、Android特定のコードセクションにある必要があります。共通ライブラリの現在のOSを知る方法はありますか?
これを試すこともできますが、おそらく私が見つけた最良のソリューションです。
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)の値を取得してみます。呼び出しの1つは失敗し、もう1つは成功するはずです。そのため、リフレクションを使用する必要があります。これは、実際のランタイムチェック用です。
ただし、アプリは2回コンパイルされるため、コンパイル時にその値を修正できます。
#if MONOTOUCH
var platform = "iOS"
#else
var platform = "Android"
#endif