Android Send SMS
In this article, we will walk you through the steps to add android send SMS feature to your app.
As an Android developer, you may want to include the ability for users to send SMS messages directly from within your app. Fortunately, Android provides a straightforward way to do this using the SmsManager class.
Sending SMS messages is an essential functionality for many Android applications. SMS messages can be used for a variety of functions, from OTP verification to notifying users of important events.
First, you need to check if the user has granted your app permission to send SMS messages. You can do this by adding the following line to your app’s manifest file:
<uses-permission android:name="android.permission.SEND_SMS" />
Next, you will need to create a new instance of the SmsManager class.
SmsManager Class
To use the SmsManager class in your Android application for sending SMS messages, you need to start by obtaining an instance of the class.
This can be done using the getDefault() method, which returns the default SmsManager instance for the device.
Once you have obtained the SmsManager instance, you can use the sendTextMessage() method to send an SMS message.
This method takes four arguments:
Arguments | Overview |
The destination phone number | This is the phone number of the recipient of the SMS message. |
The sender phone number (optional) | This is the phone number of the sender of the SMS message. This argument is optional, and if it is not specified, the default sender phone number will be used. |
The message to send | This is the actual text message that you want to send. |
A PendingIntent to be invoked when the message is sent | This is an optional argument that allows you to specify a PendingIntent object to be invoked when the SMS message is sent. |
It is important to note that the phone number should be in international format, which includes the country code, followed by the phone number without any spaces or dashes.
Here is an example of how to use the SmsManager class to send an SMS message:
SmsManager smsManager = SmsManager.getDefault(); String phoneNumber = "+1234567890"; String message = "Hello, this is a test message!"; PendingIntent sentIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT"), 0); smsManager.sendTextMessage(phoneNumber, null, message, sentIntent, null);
In above example, we obtain an instance of the SmsManager class using the getDefault() method. We then specify the destination phone number and the message to send. We also create a PendingIntent object that will be invoked when the message is sent.
Finally, we call the sendTextMessage() method with the appropriate arguments.
Here are some common methods provided by the SmsManager class in Android:
Methods | Overview |
getDefault() | Returns the default SmsManager instance for this device. |
sendTextMessage() | This method sends a text SMS message to the specified phone number. |
sendMultimediaMessage() | This method sends a multimedia message (MMS) to the specified phone number. |
divideMessage() | This method divides a long message into shorter fragments that can be sent in multiple SMS messages. |
getDefaultSmsSubscriptionId() | This method returns the default subscription ID for SMS messages on the device. |
getMessagesFromIntent() | This method retrieves SMS messages from an Intent. |
createAppSpecificSmsToken() | This method creates an app-specific token for sending SMS messages. |
isSmsCapable() | This method returns true if the device is capable of sending and receiving SMS messages. |
Android Send Sms Through Intent Class
If you want to send SMS messages from your Android application, you can use the Intent class.
To start, create an Intent with the ACTION_SENDTO action and the “smsto:” data URI to specify the phone number to send the SMS message to. Then, set the “sms_body” extra to specify the message to send.
Here’s an example of how to send an SMS message using the Intent class:
String phoneNumber = "5556"; String message = "Hello, this is a test message!"; Intent smsIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:" + phoneNumber)); smsIntent.putExtra("sms_body", message); startActivity(smsIntent);
The code creates an Intent object that sends an SMS message to a specific phone number.
It specifies the phone number to send the message to and includes the message content using the “sms_body” extra.
The startActivity() method is then called to launch the SMS app on the device and send the message.
Limitations of Using Intent to Send SMS:
When using the Intent class to send SMS messages, one limitation you may encounter is that the user has to manually send the message from the SMS app.
This means that the user can review the message and make changes before sending it, which could be a drawback if you want to send messages programmatically without user intervention.
Additionally, this method requires that the user has a messaging app installed on their device for it to work properly.
In summary, there are multiple tools available for sending SMS messages from an Android app, including the SmsManager class and the Intent class. Each of these tools has its own strengths and limitations, so it’s important to choose the right tool for your specific use case.