How Can I Read SMS App in Android?

Android, Android Apps

Have you ever wondered how you can read SMS messages in an Android app? In this tutorial, we will explore the process of reading SMS messages programmatically in Android. Let’s get started!


Before we begin, make sure you have the following:

  • An Android device or emulator with API level 23 or higher
  • Android Studio installed on your machine

Step 1: Add Permissions to Manifest

To read SMS messages, we need to declare the necessary permissions in the Android manifest file. Open your project’s AndroidManifest.xml file and add the following permissions inside the <manifest> tag:

<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.RECEIVE_SMS" />

The first permission allows our app to read SMS messages, while the second permission enables us to receive incoming SMS broadcasts.

Step 2: Create a BroadcastReceiver

We need to create a BroadcastReceiver class that will listen for incoming SMS messages. Create a new Java class called SmsReceiver. Here’s an example implementation:

<span class="hljs-keyword">@Override
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Telephony.Sms.Intents.SMS_RECEIVED_ACTION)) {
        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            Object[] pdus = (Object[]) bundle.get("pdus");
            if (pdus != null) {
                for (Object pdu : pdus) {
                    SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);
                    String messageBody = smsMessage.getMessageBody();
                    String sender = smsMessage.getDisplayOriginatingAddress();
                    // Do something with the SMS message

This BroadcastReceiver listens for the SMS_RECEIVED_ACTION broadcast and retrieves the SMS message body and sender information. You can now perform any necessary actions with the received SMS message.

Step 3: Register the BroadcastReceiver

To start receiving SMS messages, we need to register our SmsReceiver in our AndroidManifest.xml file. Add the following code inside the <application> tag:

<receiver android:name=".SmsReceiver">
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />

This will ensure that our app receives incoming SMS broadcasts.

Step 4: Request Runtime Permission (Optional)

If your app Targets API level 23 or higher, you need to request runtime permissions from the user to read SMS messages. You can use the following code snippet to request permission:

if (ContextCompat.checkSelfPermission(this, Manifest.READ_SMS)
        != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this, new String[]{Manifest.READ_SMS},

Make sure to handle the permission request result in your activity’s onRequestPermissionsResult method.


Congratulations! You have learned how to read SMS messages in an Android app.

By following the steps outlined in this tutorial, you can now retrieve and process incoming SMS messages with ease. Remember to handle permissions properly and consider user privacy when working with sensitive information like SMS messages.

Feel free to explore more advanced features, such as filtering SMS messages based on specific criteria or implementing a user-friendly SMS inbox within your app. The possibilities are endless!

Happy coding!