Automatically SMS OTP reader using Broadcast Receiver in android studio
Automatically SMS OTP reader using Broadcast Receiver in android studio

Hi Guys, Welcome to Proto Coders Point, In this Android Tutorial we will build an android application that will be able in reading incoming message automatically in android to verify otp.


Automatically SMS OTP reader using Broadcast Receiver in android studio

Video Tutorial on How to auto read otp in android using Breadcast Receiver.

At the end of this android tutorial your app will be able the read sms and fetch all the text in that sms and then it will copy the OTP from SMS and paste it in EditText box.

So let’s begin implementation of otp sms reader

Create a new Android Project

Ofcourse you need to create a new android project or open any existing android project

To do so go to File > New > New Project

Give a name as per you need in my case i have names my application as “Auto sms otp reader”

Create a custom background for EditText and a Vector Image

1. edittextbackground.xml

create a new xml file in drawable folder

res > drawable(right click) > New > Drawable resource file

copy paste below xml code

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android=""

    <corners android:radius="5dp"/>
    <solid android:color="#dcdcdc"/>


2. Create a Vector Image

res > drawable (right click) > New > Vector Asset

a dialog box will appear on your screen as shown below

How to create Vector image asset on android studio

Then, Here you can select any kind of image clip Art.

Create a new Java Class names OTPReceiver

package com.example.autosmsotpreader;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.provider.Telephony;
import android.telephony.SmsMessage;
import android.widget.EditText;

public class OTP_Receiver extends BroadcastReceiver {
    private  static EditText editText;

    public void setEditText(EditText editText)

// OnReceive will keep trace when sms is been received in mobile
    public void onReceive(Context context, Intent intent) {
        //message will be holding complete sms that is received
        SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent); 

        for(SmsMessage sms : messages)
            String msg = sms.getMessageBody();
            // here we are spliting the sms using " : " symbol
            String otp = msg.split(": ")[1]; 



eg: sms received is Your OTP is : 4587, Then in above code i have split the complete message string in to 2 parts using “:” this special symbol.

Open AndroidManifest.xml file & add the uses permission

adding uses permission

add this 4 user-permission inside <manifest>  here </manifest> tags

<!-- this are the permission need so that application can read sms -->
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>
    <uses-permission android:name="android.permission.READ_PHONE_NUMBERS"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.WRITE_SMS"/>

Now, Add the following receiver in manifest under <application> tag

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

as shown in the below screenshot

adding permission in android manifest xml

Copy paste the below lines of code in

package com.example.autosmsotpreader;

import android.Manifest;
import android.os.Bundle;
import android.widget.EditText;

import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;

public class MainActivity extends AppCompatActivity {

    EditText otpnumber;
    public void onCreate(@Nullable Bundle savedInstanceState) {
        //we need to ask user permission to auto read sms
        otpnumber = (EditText)findViewById(;

        new OTP_Receiver().setEditText(otpnumber);

    private void requestsmspermission() {
        String smspermission = Manifest.permission.RECEIVE_SMS;
        int grant = ContextCompat.checkSelfPermission(this,smspermission);

        //check if read SMS permission is granted or not
        if(grant!= PackageManager.PERMISSION_GRANTED)
            String[] permission_list = new String[1];



Recommended Android Articles

otp verification in android

textlocal api to send sms/otp verification

android check internet connection continuously

Comments are closed.