检测操作系统版本- Windows Phone 7还是Windows Phone 8?

10

我有一个针对Windows Phone 7的应用程序。我在Windows 8桌面上使用Visual Studio 2012创建了该应用程序。我正在尝试在Windows Phone 8设备上使用该应用程序,并进行了一些更改。如何以编程方式检测设备是Windows Phone 7还是Windows Phone 8?

4个回答

10

就像您在任何其他使用C#的平台上一样:Environment.OSVersion


Environment.OSVersion 给我的是 "Microsoft Windows NT 8.0.9903.0",这是 Windows 8 操作系统还是 Windows Phone 8 设备? - sharmila
5
如果你的应用程序是为Windows PHONE编写的,那么它将不能安装到Windows 8操作系统中。 - Riho
它可能像我的项目一样是PCL。 - Viacheslav Smityukh

5
你可以使用这个工具包来检查手机的版本: 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);

感谢原作者。


只要桌面Windows发布内部版本号为8,这段代码就是错误的。 - kza

2

您不需要这样做。

无论是 Windows Phone 7 应用程序还是 Windows Phone 8 应用程序,它都可以在 Windows Phone 7 和 Windows Phone 8 设备上运行。

在 Windows Phone 8 上运行的 Windows Phone 7 应用程序不应该能够执行任何 Windows Phone 7 设备无法执行的操作。


1
不要检查你正在运行的平台,而是逐个检查每个功能。就像现代化的 Modernizr 检查功能一样。 - Pierre-Alain Vigeant
1
不是真的。FM收音机API在WP7中可用,但在WP8中不可用。平台识别是不可避免的。 - Lokeshwer
我不同意:我需要链接到有关如何更改键盘语言的在线文档。WP7有一个特定的页面,WP8有另一个页面。 - Clément
好的,“你不应该那样做”这种说法我不太同意。在WP7上,MediaHistoryItem.ImageStream的最大大小为16384,在WP8上为76800。你会如何检查这个特性呢? - Alex Sorokoletov
1
@Alex - 在这种情况下,您应该检查MediaHistoryItem.MaxImageSize属性,而不是检查操作系统。 - Justin Niessner
显示剩余4条评论

0

这篇文章也有一些不错的策略。

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

这不仅仅是关于运行时的问题,例如,您的代码可能在wp7上以一种方式运行,在wp8上则取决于API的可用性而有所不同。在这种情况下,使用#define可能是最好的选择,因为您真正关心的不是您正在运行的设备类型,而是您构建的SDK。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接