Can Android App Read SMS?

Android, Android Apps

Can Android App Read SMS?

If you have ever wondered whether an Android app can read SMS messages on your device, you’ve come to the right place. In this article, we will explore the possibilities of reading SMS messages using an Android app and discuss the considerations and permissions required to do so.

Why Would an App Need to Read SMS Messages?

There can be various reasons why an app might need to read SMS messages. Some common use cases include:

  • Two-Factor Authentication (2FA): Many online services use SMS as a means of verifying user identity. An app that provides 2FA functionality would need to read incoming SMS messages containing verification codes.
  • Call and Message Blocking: Apps that offer call and message blocking features may need access to incoming SMS messages in order to identify and block spam or unwanted messages.
  • Messaging Apps: Messaging apps such as WhatsApp or Telegram require access to incoming SMS messages during the registration process for verification purposes.

The Permission Required

In order for an Android app to read SMS messages, it needs the SMS_READ permission. This permission allows the app to read both incoming and outgoing SMS messages on your device.

To request this permission, you need to declare it in your app’s manifest file using the following line of code:

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

Note that starting from Android 6.0 (Marshmallow), users have more control over granting permissions. The user will be prompted with a permission request when they install or update your app, and they can choose whether or not to grant the SMS_READ permission.

Reading SMS Messages in Code

Once your app has been granted the necessary permission, you can start reading SMS messages programmatically. Here’s a basic example:

// Get the default SMS inbox
Uri inboxUri = Uri.parse("content://sms/inbox");

// Query for all SMS messages in the inbox
Cursor cursor = getContentResolver().query(inboxUri, null, null, null, null);

// Iterate over the cursor to read each message
if (cursor != null && cursor.moveToFirst()) {
    do {
        // Extract relevant information from each message
        String sender = cursor.getString(cursor.getColumnIndex("address"));
        String body = cursor.getColumnIndex("body"));

        // Perform actions with the extracted information
        // ..

    } while (cursor.moveToNext());

// Close the cursor once you are done reading messages
if (cursor != null) {

This code snippet demonstrates how you can retrieve and process SMS messages using the getContentResolver() method and the Uri.parse() method to access the SMS inbox content provider. You can then extract relevant information such as sender and message body for further processing within your app.


In conclusion, Android apps can indeed read SMS messages if they have been granted the necessary permissions. However, it’s important to use this capability responsibly and only request access when absolutely necessary. Users value their privacy and security, so ensure that your app provides clear explanations of why it requires this permission.

The ability to read SMS messages opens up various opportunities for developers to create innovative features in their apps. Whether it’s for 2FA functionality or enhancing communication experiences, understanding how to read SMS messages is a valuable skill for Android app development.