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