Skip to content

Commit

Permalink
auto read sms/otp steps added.
Browse files Browse the repository at this point in the history
  • Loading branch information
RohitWoxi committed Dec 31, 2016
1 parent 7f8a3b5 commit 8da6320
Show file tree
Hide file tree
Showing 6 changed files with 55 additions and 10 deletions.
26 changes: 26 additions & 0 deletions AutoReadSmsOtp/AutoReadSmsOtp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
* Steps:
* 1. Add Permissions to manifest
* * <uses-permission android:name="android.permission.READ_SMS" />
* * <uses-permission android:name="android.permission.RECEIVE_SMS" />
* <p>
* 2. Register our broadcast listener in manifest
* * <receiver
* * android:name=".SmsReceiver"
* * android:permission="android.permission.BROADCAST_SMS">
* * <intent-filter>
* * <action android:name="android.provider.Telephony.SMS_RECEIVED" />
* * </intent-filter>
* * </receiver>
* <p>
* 3. Add two classes to your project.
* * SmsListener.class
* * SmsReceiver.class
** <p>
*
* 4. In your MainActivity.class or activity where you want to receive sms/otp, add the existing code
* * (You can find the code in MainActivity.class file i.e. same file)
* *
*
* Note: In SmsReceiver.class there is a constant which is used to distinguish all sms senders from our sender
* Change this constant according to your project
* * private static final String SMS_SENDER_NAME = "12345";
4 changes: 2 additions & 2 deletions AutoReadSmsOtp/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ dependencies {
// androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
// exclude group: 'com.android.support', module: 'support-annotations'
// })
compile 'com.android.support:appcompat-v7:25.1.0'
compile 'com.android.support:design:25.1.0'
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:design:25.0.0'
// testCompile 'junit:junit:4.12'
}
3 changes: 3 additions & 0 deletions AutoReadSmsOtp/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.rohitss.autoreadsmsotp">

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

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@
import android.view.View;
import android.widget.Toast;

/**
* This is the Activity class where we want to receive the sms/otp.
* Created by rohitss.
*/
public class MainActivity extends AppCompatActivity {
private static final int READ_SMS_PERMISSION_CODE = 101;
private Context mContext;
Expand All @@ -27,12 +31,17 @@ protected void onCreate(Bundle savedInstanceState) {
mContext = MainActivity.this;
//Request Permission for SMS
if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED) {
//Permission is not allowed so request permission.
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_SMS}, READ_SMS_PERMISSION_CODE);
} else {
//Permission is allowed so proceed.
autoReadSmsOtp();
}
}

/**
* This is the function where we can read received SMS.
*/
private void autoReadSmsOtp() {
SmsReceiver.isAutoReadOtp = true;
SmsReceiver.bindListener(new SmsListener() {
Expand All @@ -46,23 +55,28 @@ public void messageReceived(String messageText) {
@Override
protected void onResume() {
super.onResume();
//Enable our broadcast receiver.
ComponentName receiver = new ComponentName(mContext, SmsReceiver.class);
PackageManager pm = mContext.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
pm.setComponentEnabledSetting(receiver, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
}

@Override
protected void onPause() {
super.onPause();
//Disable our broadcast receiver.
ComponentName receiver = new ComponentName(mContext, SmsReceiver.class);
PackageManager pm = mContext.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
pm.setComponentEnabledSetting(receiver, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}

/**
* This function is used check if permission is allowed or not.
*
* @param requestCode requestCode
* @param permissions permissions
* @param grantResults grantResults
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (grantResults.length > 0) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package com.rohitss.autoreadsmsotp;

/**
* Created by JayYogeshwar on 19-12-2016.
* This is the Interface to listen to received sms.
* Created by rohitss.
*/
public interface SmsListener {
void messageReceived(String strMessageBody);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,11 @@
import android.telephony.SmsMessage;

/**
* This class is used to Auto Read SMS Received
* This class is used to Auto Read SMS Received.
* Created by Rohit.
*/
public class SmsReceiver extends BroadcastReceiver {
//TODO: Change this constant according to your project "SMS_SENDER_NAME"
private static final String SMS_SENDER_NAME = "12345";
private static SmsListener mListener;
public static boolean isAutoReadOtp = false;
Expand Down

0 comments on commit 8da6320

Please sign in to comment.