2015-11-21 10 views
5

Ich muss die Betriebssystemversion (WP 8.1 oder W10) in meinem Code der WP8.1-Anwendung überprüfen. Welchen besseren Weg, dies zu tun? Kann Reflexion oder eine spezielle API für diesen Zweck sein?Wie erkennt man, dass die WP8.1-Anwendung unter Windows 10 Mobile gestartet wurde?

+0

WP8.1 wird wahrscheinlich nicht in der Lage sein, die W10 App zu installieren. Wenn Sie eine App mit verschiedenen Konfigurationen für Plattformen erstellen, können Sie möglicherweise Präprozessordirektiven verwenden? – Romasz

+0

@Romasz Ich habe die WP8.1 App auf WM10 Emulator getestet, es funktioniert. Und einige Nutzer installieren meine App bereits auf ihren W10-Geräten. Ich möchte vor dem Erstellen einer speziellen UWP-Version in Zukunft keine anderen Build-Konfigurationen erstellen. Ich möchte die Version im Code überprüfen. –

+0

Ok, Sie müssen nur überprüfen, ob WP8.1 auf W10 läuft. Zuerst dachte ich über [diese OSversion] nach (https://msdn.microsoft.com/en-us/library/windows/apps/windows.security.exchangeactivesyncprovisioning.easclientdeviceinformation.operatingsystem), aber wie ich es getestet habe, gibt es WindowsPhone zurück 'für beide Betriebssysteme. – Romasz

Antwort

4

ich keinen anderen Weg gefunden, dies zu tun, so ist hier mein Ansatz ist.

Die folgende Eigenschaft IsWindows10 erkennt, ob eine Windows 8.1- oder Windows Phone 8.1-App auf einem Windows 10-Gerät (einschließlich Windows 10 Mobile) ausgeführt wird.

#region IsWindows10 

    static bool? _isWindows10; 
    public static bool IsWindows10 => (_isWindows10 ?? (_isWindows10 = getIsWindows10Sync())).Value; 

    static bool getIsWindows10Sync() 
    { 
     bool hasWindows81Property = typeof(Windows.ApplicationModel.Package).GetRuntimeProperty("DisplayName") != null; 
     bool hasWindowsPhone81Property = typeof(Windows.Graphics.Display.DisplayInformation).GetRuntimeProperty("RawPixelsPerViewPixel") != null; 

     bool isWindows10 = hasWindows81Property && hasWindowsPhone81Property; 
     return isWindows10; 
    } 
#endregion 

Wie funktioniert es?

In Windows 8.1 hat die Package Klasse eine DisplayName Eigenschaft, die Windows Phone 8.1 nicht hat. In Windows Phone 8.1 hat die DisplayInformation Klasse eine RawPixelsPerViewPixel Eigenschaft, die Windows 8.1 nicht hat. Windows 10 (einschließlich Mobile) verfügt über beide Eigenschaften. So können wir feststellen, auf welchem ​​Betriebssystem die App läuft.