共用方式為


列舉SMS裝置

行動寬頻 SMS 平臺可讓您取得第一個支援 SMS 的行動寬頻裝置,或取得所有支援 SMS 的行動寬頻裝置清單。 下列範例程式代碼示範使用預設SMS裝置和特定裝置具現化SMS物件。

注意在 Windows 8、Windows 8.1 或 Windows 10 中使用 C# 或 C++ 的應用程式中,第一次使用 SmsDevice 物件呼叫 GetDefaultAsyncFromIdAsync 應該位於 STA 線程上。 來自 MTA 線程的呼叫可能會導致未定義的行為。

使用預設 SMS 裝置的 JavaScript 程式代碼範例

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

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

列舉所有SMS裝置的JavaScript程式代碼範例

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。 如果使用者明確拒絕對應用程式的存取,或裝置元數據未授與應用程式存取權,就會發生這種情況。

偵測 SMS 裝置存取錯誤的 JavaScript 程式代碼範例

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

開發SMS應用程式