Определить версию ОС - Windows Phone 7 или Windows Phone 8?

У меня есть приложение для Windows Phone 7. Я создал визуальную студию 2012 на рабочем столе Windows 8. Я пытаюсь использовать приложение на устройстве Windows Phone 8 с некоторыми изменениями. Как я могу программно определить, является ли устройство Windows Phone 7 или Windows Phone 8?


person sharmila    schedule 09.11.2012    source источник


Ответы (4)


Как и на любой другой платформе с C#: Environment.OSVersion

person Factor Mystic    schedule 09.11.2012
comment
Environment.OSVersion дает мне Microsoft Windows NT 8.0.9903.0, является ли это устройством Windows 8 OS или Windows phone 8? - person sharmila; 09.11.2012
comment
Если ваше приложение написано для Windows PHONE, то оно не будет установлено в ОС Windows 8. - person Riho; 09.11.2012
comment
Это может быть PCL, как мой проект - person Viacheslav Smityukh; 16.01.2014

Вы можете использовать этот набор инструментов для проверки версии телефона: http://mangopollo.codeplex.com/

bool IsWP8() : возвращает, если приложение работает на телефоне с Windows Phone 8.

РЕДАКТИРОВАТЬ: Если вы не хотите использовать весь набор инструментов, вот как он его проверяет:

public static bool IsWP8 { get { return Environment.OSVersion.Version >= TargetedVersion; } }

    private static Version TargetedVersion = new Version(8, 0);

Кредиты оригинальному автору.

person robertk    schedule 09.11.2012
comment
Этот код неверен, как только настольная Windows выпущена с внутренним номером версии 8. - person kza; 18.10.2013

Вам это не нужно.

Либо это приложение для Windows Phone 7, которое будет работать как на устройствах с Windows Phone 7, так и на устройствах с Windows Phone 8, либо это приложение для Windows Phone 8.

Приложение Windows Phone 7, работающее на Windows Phone 8, не должно делать ничего, чего не должно делать устройство Windows Phone 7.

person Justin Niessner    schedule 09.11.2012
comment
Точнее, вместо того, чтобы проверять, на какой платформе вы работаете, проверяйте каждую функцию по отдельности. Подобно тому, как modernizr проверяет функции. - person Pierre-Alain Vigeant; 09.11.2012
comment
Не подскажете, как это сделать программно? - person sharmila; 09.11.2012
comment
На самом деле я создал это приложение, используя vs2012, установленный в настольной ОС Windows 8. приложение работает в эмуляторе. Я хочу определить, работает ли приложение под Windows phone 7 или Windows phone 8 - person sharmila; 09.11.2012
comment
Не совсем. API FM-радио доступен в WP7, но не в WP8. Идентификация платформы неизбежна - person Lokeshwer; 17.11.2012
comment
@sharmila — дополнительная информация о том, какой язык используется. WP8 поддерживает языки, которых нет в WP7. - person Security Hound; 16.01.2013
comment
Я не согласен: мне нужна ссылка на онлайн-документацию о том, как изменить язык клавиатуры. Есть отдельная страница для WP7 и еще одна для WP8. - person Clément; 14.09.2013
comment
Ну не согласен с тобой не стоит этого делать. MediaHistoryItem.ImageStream имеет максимальный размер 16384 на WP7 и 76800 на WP8. Как бы вы проверили эту функцию? - person Alex Sorokoletov; 09.12.2013
comment
@Alex - В этом случае вы должны проверить свойство MediaHistoryItem.MaxImageSize, а не проверять ОС. - person Justin Niessner; 09.12.2013
comment
@JustinNiessner Спасибо, я пропустил это свойство. Проверю, когда вернусь к ПК - person Alex Sorokoletov; 09.12.2013

В этой статье также есть несколько хороших стратегий.

http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh202996(v=vs.105).aspx

Это касается не только времени выполнения, например, ваш код может работать одним способом на wp7 и другим на wp8 в зависимости от доступности API. В этом случае #define может быть лучшим способом, потому что вам действительно все равно, на каком устройстве вы работаете, а для какого SDK вы были собраны.

person purplecabbage    schedule 29.04.2013