Get otp from message

This commit is contained in:
Nezumi2711
2022-07-13 11:16:10 +07:00
parent bd16f79b85
commit 642c784105
3 changed files with 88 additions and 0 deletions
+11
View File
@@ -7,6 +7,10 @@
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<application <application
android:allowBackup="true" android:allowBackup="true"
@@ -19,6 +23,13 @@
android:theme="@style/Theme.Foodify" android:theme="@style/Theme.Foodify"
tools:replace="android:theme" tools:replace="android:theme"
tools:targetApi="31"> tools:targetApi="31">
<receiver android:name=".OTP_Receiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<activity <activity
android:name=".OrderStatusDetail" android:name=".OrderStatusDetail"
android:exported="false" /> android:exported="false" />
@@ -0,0 +1,55 @@
package com.waterbase.foodify;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.provider.Telephony;
import android.telephony.SmsMessage;
import android.widget.EditText;
import android.widget.Toast;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class OTP_Receiver extends BroadcastReceiver {
private static EditText otp1, otp2, otp3, otp4, otp5, otp6;
public void setEditText(EditText otp1, EditText otp2, EditText otp3, EditText otp4, EditText otp5, EditText otp6){
OTP_Receiver.otp1 = otp1;
OTP_Receiver.otp2 = otp2;
OTP_Receiver.otp3 = otp3;
OTP_Receiver.otp4 = otp4;
OTP_Receiver.otp5 = otp5;
OTP_Receiver.otp6 = otp6;
}
@Override
public void onReceive(Context context, Intent intent) {
SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent);
for(SmsMessage sms: messages){
String message = sms.getMessageBody();
Pattern otpPattern = Pattern.compile("(|^)\\d{6}");
Matcher matcher = otpPattern.matcher(message);
if (matcher.find()){
Double otp = Double.parseDouble(matcher.group(0));
otp6.setText(String.valueOf(otp % 10));
otp = otp / 10;
otp5.setText(String.valueOf(otp % 10));
otp = otp / 10;
otp4.setText(String.valueOf(otp % 10));
otp = otp / 10;
otp3.setText(String.valueOf(otp % 10));
otp = otp / 10;
otp2.setText(String.valueOf(otp % 10));
otp = otp / 10;
otp1.setText(String.valueOf(otp % 10));
}
}
}
}
@@ -1,7 +1,9 @@
package com.waterbase.foodify; package com.waterbase.foodify;
import android.Manifest;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.CountDownTimer; import android.os.CountDownTimer;
import android.text.Editable; import android.text.Editable;
@@ -15,6 +17,8 @@ import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.google.android.gms.tasks.OnCompleteListener; import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task; import com.google.android.gms.tasks.Task;
@@ -86,6 +90,11 @@ public class VerifyPhone extends AppCompatActivity {
}; };
count.start(); count.start();
requestSMSPermission();
new OTP_Receiver().setEditText(inputCode1, inputCode2, inputCode3, inputCode4, inputCode5, inputCode6);
resendCode.setOnClickListener(new View.OnClickListener() { resendCode.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
@@ -297,4 +306,17 @@ public class VerifyPhone extends AppCompatActivity {
} }
}); });
} }
private void requestSMSPermission()
{
String permission = Manifest.permission.RECEIVE_SMS;
int grant = ContextCompat.checkSelfPermission(this, permission);
if(grant != PackageManager.PERMISSION_GRANTED){
String[] permission_list = new String[1];
permission_list[0] = permission;
ActivityCompat.requestPermissions(this, permission_list, 1);
}
}
} }