Enumerar dispositivos SMS
A plataforma de SMS de Banda Larga Móvel fornece a capacidade de obter o primeiro dispositivo de banda larga móvel compatível com SMS ou obter uma lista de todos os dispositivos de banda larga móvel compatíveis com SMS. O código de exemplo a seguir mostra a instanciação de um objeto SMS com o dispositivo SMS padrão e com um dispositivo específico.
Nota Em aplicativos que usam C# ou C++ em Windows 8, Windows 8.1 ou Windows 10, o primeiro uso do objeto SmsDevice para chamar GetDefaultAsync ou FromIdAsync deve estar no thread STA. Chamadas de um thread MTA podem resultar em um comportamento indefinido.
Exemplo de código JavaScript para usar o dispositivo SMS padrão
var smsDevice = new Windows.Devices.Sms.SmsDevice.getDefault();
try
{
var smsDeviceOperation = Windows.Devices.Sms.SmsDevice.getDefaultAsync();
smsDeviceOperation.done(smsDeviceReceived, errorCallback);
}
catch (err)
{
// handle error
}
Exemplo de código JavaScript para enumerar todos os dispositivos 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);
}
}
Detectar erros de acesso ao dispositivo SMS
Você pode detectar se a enumeração do dispositivo SMS falhou porque o aplicativo não tem acesso ao SMS. Isso pode acontecer se o usuário negar explicitamente o acesso ao aplicativo ou se os metadados do dispositivo não tiverem concedido acesso ao aplicativo.
Exemplo de código JavaScript para detectar erros de acesso ao dispositivo 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);
}
}