Compartir a través de


Enumerar dispositivos SMS

La plataforma SMS de banda ancha móvil proporciona la capacidad de obtener el primer dispositivo de banda ancha móvil compatible con SMS, o para obtener una lista de todos los dispositivos de banda ancha móvil compatibles con SMS. El código de ejemplo siguiente muestra la creación de instancias de un objeto SMS con el dispositivo SMS predeterminado y con un dispositivo específico.

Nota En las aplicaciones que usan C# o C++ en Windows 8, Windows 8.1 o Windows 10, el primer uso del objeto SmsDevice para llamar a GetDefaultAsync o FromIdAsync debe estar en el subproceso STA. Las llamadas desde un subproceso de MTA pueden dar lugar a un comportamiento indefinido.

Ejemplo de código de JavaScript para usar el dispositivo SMS predeterminado

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

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

Ejemplo de código de JavaScript para enumerar todos los 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);
  }
}

Detección de errores de acceso a dispositivos SMS

Puede detectar si se produjo un error al enumerar el dispositivo SMS porque la aplicación no tiene acceso a SMS. Esto puede ocurrir si el usuario deniega explícitamente el acceso a la aplicación o si los metadatos del dispositivo no han concedido acceso a la aplicación.

Ejemplo de código de JavaScript para detectar errores de acceso a 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.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);
  }
}

Desarrollo de aplicaciones SMS