Перечисление устройств SMS
Платформа MOBILE Broadband SMS предоставляет возможность получить первое мобильное широкополосное устройство с поддержкой SMS или получить список всех мобильных широкополосных мобильных устройств с поддержкой SMS. В следующем примере кода показано создание экземпляра объекта SMS на устройстве SMS по умолчанию и с определенным устройством.
Примечание В приложениях, использующих C# или C++ в Windows 8, Windows 8.1 или Windows 10, первое использование объекта SmsDevice для вызова GetDefaultAsync или FromIdAsync должно выполняться в потоке STA. Вызовы из потока MTA могут привести к неопределенному поведению.
Пример кода JavaScript для использования устройства SMS по умолчанию
var smsDevice = new Windows.Devices.Sms.SmsDevice.getDefault();
try
{
var smsDeviceOperation = Windows.Devices.Sms.SmsDevice.getDefaultAsync();
smsDeviceOperation.done(smsDeviceReceived, errorCallback);
}
catch (err)
{
// handle error
}
Пример кода JavaScript для перечисления всех устройств SMS
Windows.Devices.Enumeration.DeviceInformation.findAllAsync(Windows.Devices.Sms.SmsDevice.getDeviceSelector()).then(function (smsdevices)
{
if (smsdevices.length > 0)
{
// for simplicity we choose the first device
var smsDeviceId = smsdevices[0].Id;
var smsDeviceOperation = Windows.Devices.Sms.SmsDevice.fromIdAsync(smsNotificationDetails.deviceId);
smsDeviceOperation.done(function (smsDeviceResult)
{
smsDevice = smsDeviceResult;
}, errorCallback);
}
}
Обнаружение ошибок доступа к устройству SMS
Вы можете определить, произошел ли сбой перечисления sms-устройства, так как у приложения нет доступа к SMS. Это может произойти, если пользователь явно запрещает доступ к приложению или если метаданные устройства не предоставили доступ к приложению.
Пример кода JavaScript для обнаружения ошибок доступа к sms-устройству
Windows.Devices.Enumeration.DeviceInformation.findAllAsync(Windows.Devices.Sms.SmsDevice.getDeviceSelector()).then(function (smsdevices)
{
if (smsdevices.length > 0)
{
// for simplicity we choose the first device
var smsDeviceId = smsdevices[0].Id.slice(startIndex,endIndex + 1);
var smsDeviceOperation = Windows.Devices.Sms.SmsDevice.fromIdAsync(smsNotificationDetails.deviceId);
smsDeviceOperation.done(function (smsDeviceResult)
{
smsDevice = smsDeviceResult;
}, errorCallback);
// detect if SMS access is denied due to user not granting app consent to use SMS or if metadata is missing or invalid.
}
function errorCallback(error)
{
WinJS.log(error.name + " : " + error.description, "sample", "error");
// If the error was caused due to access being denied to this app
// then the HResult is set to E_ACCESSDENIED (0x80007005)
// var hResult = hex(error.number);
}
function hex(nmb)
{
if (nmb >= 0)
{
return nmb.toString(16);
}
else
{
return (nmb + 0x100000000).toString(16);
}
}