Skip to main content
SmsDevice class

Supports the operation of a mobile broadband SMS device.

Note  This functionality is only available to mobile operator apps and Windows Store apps given privileged access by mobile network operators, mobile broadband adapter IHV, or OEM. For more information, see Mobile Broadband: Windows Store device apps.

Note  Note that this class and its methods are supported for the maintenance of legacy desktop apps that used it in earlier versions of Windows; and if you do use this class, you must specify the Windows.Devices.Sms.LegacySmsApiContract in your app's manifest. Do not use this class if you are developing new apps for Windows 10. Instead, use the members of this namespace that do not require the Windows.Devices.Sms.LegacySmsApiContract.


var smsDevice = Windows.Devices.Sms.SmsDevice;

public sealed class SmsDevice : ISmsDevice

Public NotInheritable Class SmsDevice
    Implements ISmsDevice

public ref class SmsDevice sealed : ISmsDevice


The SmsDevice class has these types of members:


The SmsDevice class has these events.

SmsDeviceStatusChanged Sets an event handler to be called when the status of the SMS device changes.
SmsMessageReceived Sets an event handler to be called when the device receives a new text message.



The SmsDevice class has these methods. With C#, Visual Basic, and C++, it also inherits methods from the Object class.

CalculateLength Estimates the transmitted message length of the specified text message. The estimate can be useful to clients who want to give an indication of how many messages will be sent on the network to carry the text of the full message.
FromIdAsync Creates an instance of SmsDevice for the device that received the SMS message.
FromNetworkAccountIdAsync Creates an instance of SmsDevice for the specified Mobile Broadband network account ID.
GetDefaultAsync Creates an instance of an SmsDevice object associated with the default SMS device. Because the device might be busy, the operation executes asynchronously. The asynchronous operation object returns immediately.
GetDeviceSelector Retrieves the class selection string that can be used to enumerate SMS devices.
SendMessageAsync Asynchronously sends a message using the SMS device. The method is asynchronous because the send operation might not occur instantaneously. The message operation object is returned immediately.



The SmsDevice class has these properties.

PropertyAccess typeDescription



Returns the phone number associated with the SMS device. The phone number can be used to associate incoming messages with the account and possibly an external storage mechanism such as an account inbox.



Returns the cellular class of the SMS device. The class can be used to determine which encodings are appropriate or which device limitations are in effect.



Returns the SMS device's status, which indicates whether the device is ready, or not. It also indicates what type of problem exists if the device is not ready.



Accesses the on-device message store. The store holds messages until a client can retrieve them. On some devices, for example, the store may correspond to the SIM storage for SMS messages.



Apps that use the Windows.Devices.Sms API to send or receive text messages fail with E_ACCESS_DENIED if the user revokes access.

If access to the SMS device has been given to an app:

  • Calling GetDefaultAsync or FromIdAsync triggers a consent prompt the first time the app is run.
  • The error handlers for the asynchronous methods of GetDefaultAsync and FromIdAsync receive E_ACCESS_DENIED if the user did not grant permission in the consent prompt or if permission is revoked.
  • If the user re-enables access to SMS after revoking it, call GetDefaultAsync or FromIdAsync again to access SMS. For example, the error handler for E_ACCESS_DENIED error could display UI to instruct the user to re-enable SMS using the settings charm and to then tap a button to retry accessing SMS. The code behind the button should call GetDefaultAsync or FromIdAsync before making any other calls.
  • If the app is registering for the SMS background event ( Windows.ApplicationModel.Background.SystemTriggerType.SmsReceived), the app has to first call GetDefaultAsync or FromIdAsync again to access SMS to ensure the app has access. Calling GetDefaultAsync or FromIdAsync from the background task will not trigger a consent prompt. If it is a first time run or if the user did not grant permission or if permission is revoked then it will receive an E_ACCESS_DENIED.

Requirements (Windows 10 device family)

Device family

Desktop, introduced version 10.0.10240.0

API contract

Windows.Devices.sms.LegacysmsApiContract, introduced version 1.0


Windows::Devices::Sms [C++]





Requirements (Windows 8.x and Windows Phone 8.x)

Minimum supported client

Windows 8 [Windows Store apps, desktop apps]

Minimum supported server

Windows Server 2012 [Windows Store apps, desktop apps]

Minimum supported phone

None supported


Windows::Devices::Sms [C++]






[ Deprecated()]
[ DualApiPartition()]
[ Threading(Both)]
[ Version(0x06020000)]

See also