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?
risposta
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.
Prova questa System.Environment.OSVersion.Version
Sfortunatamente WP8.1 (XAML) non supporta la proprietà OSVersion nella classe Ambiente. –
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
@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. –
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