Enumerare i dispositivi SMS

La piattaforma SMS Mobile Broadband offre la possibilità di ottenere il primo dispositivo mobile mobile con supporto per SMS o di ottenere un elenco di tutti i dispositivi mobili a banda larga con supporto per SMS. Il codice di esempio seguente mostra la creazione di un'istanza di un oggetto SMS con il dispositivo SMS predefinito e con un dispositivo specifico.

Nota Nelle app che usano C# o C++ in Windows 8, Windows 8.1 o Windows 10, il primo uso dell'oggetto SmsDevice per chiamare GetDefaultAsync o FromIdAsync deve trovarsi nel thread STA. Le chiamate da un thread MTA possono comportare un comportamento non definito.

Esempio di codice JavaScript per usare il dispositivo SMS predefinito

var smsDevice = new Windows.Devices.Sms.SmsDevice.getDefault();

try
{
  var smsDeviceOperation = Windows.Devices.Sms.SmsDevice.getDefaultAsync();
  smsDeviceOperation.done(smsDeviceReceived, errorCallback);
}
catch (err)
{
  // handle error
}

Esempio di codice JavaScript per enumerare tutti i dispositivi 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);
  }
}

Rilevare gli errori di accesso ai dispositivi SMS

È possibile rilevare se l'enumerazione del dispositivo SMS non è riuscita perché l'app non ha accesso a SMS. Ciò può verificarsi se l'utente nega esplicitamente l'accesso all'app o se i metadati del dispositivo non hanno concesso l'accesso all'app.

Esempio di codice JavaScript per rilevare gli errori di accesso ai dispositivi 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);
  }
}

Sviluppo di app SMS