2015-11-21 19 views
5

Ho bisogno di controllare la versione del sistema operativo (WP 8.1 o W10) nel mio codice dell'applicazione WP8.1. Quale modo migliore per farlo? Può essere una riflessione o qualche API speciale per questo scopo?Come rilevare che l'app WP8.1 è stata avviata su Windows 10 Mobile?

+0

WP8.1 probabilmente non sarà in grado di installare l'app W10. Se crei un'app con diverse configurazioni per piattaforme, potresti utilizzare le direttive del preprocessore? – Romasz

+0

@Romasz Ho provato la mia app WP8.1 su emulatore WM10, funziona. E alcuni utenti già installano la mia app sui loro dispositivi W10. Non voglio creare configurazioni di build diverse prima di creare una versione UWP speciale in futuro. Voglio controllare la versione nel codice. –

+0

Ok, quindi è solo necessario verificare se WP8.1 gira su W10. Per prima cosa ho pensato a [questa OSVERSIONE] (https://msdn.microsoft.com/en-us/library/windows/apps/windows.security.exchangeactivesyncprovisioning.easclientdeviceinformation.operatingsystem), ma come ho provato restituisce 'WindowsPhone 'per entrambi i sistemi operativi. – Romasz

risposta

4

non ho trovato altro modo per fare questo, quindi ecco il mio approccio.

La seguente proprietà IsWindows10 rileva se un'applicazione Windows 8.1 o Windows Phone 8.1 è in esecuzione su un dispositivo Windows 10 (incluso Windows 10 Mobile).

#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 

Come funziona?

In Windows 8.1 la classe Package ha una proprietà DisplayName, che Windows Phone 8.1 non ha. In Windows Phone 8.1 la classe DisplayInformation ha una proprietà RawPixelsPerViewPixel, di cui Windows 8.1 non dispone. Windows 10 (incluso il cellulare) ha entrambe le proprietà. È così che possiamo rilevare su quale sistema operativo è in esecuzione l'app.

Problemi correlati