Compartilhar via


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);
  }
}

Desenvolvendo aplicativos SMS