WP7.1 обратная совместимость - PullRequest
0 голосов
/ 04 января 2012

Я установил Mango SDK на свой компьютер и хочу создать приложение, которое будет работать как на устройствах с Windows Phone OS 7.0, так и на устройствах с Windows Phone OS 7.5.Также мне нужно реализовать многие функции манго в одном приложении.Является ли это возможным ?если да, пожалуйста, скажите мне, как сделать проверку версии, потому что на основе версии нам нужно реализовать функции манго.

Ответы [ 3 ]

6 голосов
/ 04 января 2012

Вам придется поддерживать две разные версии.Вы не можете скомпилировать один XAP, который поддерживает обе версии одновременно.

API Mango доступны только при компиляции с 7.1 SDK.Таким образом, вы не можете выполнять встроенную проверку в коде.

Но это довольно бессмысленно, так как практически не осталось пользователей, которые не обновились до Mango, и все новые телефоны поставляются с Mango.

2 голосов
/ 04 января 2012

Вы можете сделать это, используя класс Type и отражение, хотя этот процесс будет непростым.Создайте приложение для Windows Phone 7.0, а затем создайте класс MangoExtensions, который реализует специфические для манго функции:

http://www.sharpgis.net/post/2011/08/21/Windows-Phone-Adding-Mango-features-to-a-70-WinPhone-App.aspx

bool IsMangoDevice = (Environment.OSVersion.Version >= new Version(7, 1));

if (IsMangoDevice)
{
  Type t = Type.GetType("Microsoft.Phone.Shell.StandardTileData, Microsoft.Phone");

  //get the constructor for the StandardTileData and create a new instance of it
  var newTileData = t.GetConstructor(new Type[] { }).Invoke(null);
  //Get the setter method for the title property
  var setMethod = newTileData.GetType().GetProperty("Title").GetSetMethod();
  //Set the tile title
  setMethod.Invoke(newTileData, new object[] { "This is my new tile" });
  //Get the create method for the shell tiles
  Type shellTileType = Type.GetType("Microsoft.Phone.Shell.ShellTile, Microsoft.Phone");
  var createMethod = shellTileType.GetMethod("Create");
  //Create the tile, with the uri and tile data
  Uri uri = new new Uri("/MainPage.xaml?Test=This_Came_From_A_Secondary_Tile", UriKind.Relative)
  createMethod.Invoke(null, new object[] {  uri, newTileData});
}
2 голосов
/ 04 января 2012

В наши дни все телефоны Windows поставляются с версией манго Wp7.5, также старые устройства получают обновления манго, так что это выглядит бессмысленно, ориентируясь только на несколько работающих телефонов WP7.0.

Но если вам ничего не нужно для доступа к API SDK, то вы можете сделать это раздвоение.

Однако Вы можете найти решение для определения версии ОС в [мой ответ на этот же вопрос здесь.] 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...