45

Xamarin.Android と Xamarin.iOS を使用して、現在の OS を共有コード セクションに含める必要があります。enum、int、string のいずれであっても問題ありません。

私はこれを試しました:

System.Environment.OSVersion

これは常に「Unix」であり、いくつかのカーネルバージョン情報があります。

たとえば、次のようなAndroidに関する情報があります

Android.OS.Build.VERSION

ただし、Android 固有のコード セクションにある必要があります。共通ライブラリで現在の OS を知る方法はありますか?

4

3 に答える 3

110

これを試すこともできます。おそらく私が見つけた最良の解決策です:

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

}
于 2017-06-20T12:24:41.600 に答える
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; 
    }

プラットフォーム固有の動作をカスタマイズするには、この種のコードを使用することをお勧めPCLします(このプラグインはそれを使用します)。Dependency Injection

于 2016-05-18T10:55:36.423 に答える
3

リフレクションを使用して、Monotouch.Versionプロパティの値 (および MfA に相当するもの: Android.OS.Build.VERSION) の取得を試みます。呼び出しの 1 つが失敗し、もう 1 つが成功するはずです。そのため、リフレクションを使用する必要があります。これは、実際のランタイム チェック用です。

ただし、アプリは 2 回コンパイルされるため、コンパイル時にその値を修正できます。

#if MONOTOUCH
    var platform = "iOS"
#else
    var platform = "Android"
#endif
于 2013-09-02T12:30:58.030 に答える