在通用 Windows 应用程序中测试 SDK

Testing for an SDK in Universal Windows App

我正在创建一个通用的 windows 应用程序,它将在桌面和移动设备上使用。移动设备将使用振动 API.

//Vibrate the device
VibrationDevice.GetDefault().Vibrate(TimeSpan.FromMilliseconds(100));

我已经为项目添加了必要的扩展以允许这样做:

UWP 的Windows 移动扩展当然不会出现在桌面计算机上,因此我需要有条件地 测试以检查 SDK 是否可用,以便我可以执行 Vibrate 方法。

本质上,如果应用程序在桌面上运行,我不想执行Vibrate方法,否则我会收到异常:

An exception of type 'System.TypeLoadException' occurred in Encore.Scanner.UI.exe but was not handled in user code

Additional information: Requested Windows Runtime type 'Windows.Phone.Devices.Notification.VibrationDevice' is not registered.

有什么方法可以检查SDK是否可用?像这样:

if (...windows mobile extension is present)
{
    //Vibrate the device.    
    VibrationDevice.GetDefault().Vibrate(TimeSpan.FromMilliseconds(100));
}

我找到了我需要的东西。如果将来有人偶然发现这个问题,下面是我实现这一目标的方法。

if (ApiInformation.IsTypePresent("Windows.Phone.Devices.Notification.VibrationDevice"))
{
    ...