From 642c7841052bcd659531c0726884cefd7d5fafb6 Mon Sep 17 00:00:00 2001 From: Nezumi2711 <73208452+Nezumi2711@users.noreply.github.com> Date: Wed, 13 Jul 2022 11:16:10 +0700 Subject: [PATCH] Get otp from message --- Foodify/app/src/main/AndroidManifest.xml | 11 ++++ .../com/waterbase/foodify/OTP_Receiver.java | 55 +++++++++++++++++++ .../com/waterbase/foodify/VerifyPhone.java | 22 ++++++++ 3 files changed, 88 insertions(+) create mode 100644 Foodify/app/src/main/java/com/waterbase/foodify/OTP_Receiver.java diff --git a/Foodify/app/src/main/AndroidManifest.xml b/Foodify/app/src/main/AndroidManifest.xml index 4b1b3dd..93f0c18 100644 --- a/Foodify/app/src/main/AndroidManifest.xml +++ b/Foodify/app/src/main/AndroidManifest.xml @@ -7,6 +7,10 @@ + + + + + + + + + + + diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/OTP_Receiver.java b/Foodify/app/src/main/java/com/waterbase/foodify/OTP_Receiver.java new file mode 100644 index 0000000..a638596 --- /dev/null +++ b/Foodify/app/src/main/java/com/waterbase/foodify/OTP_Receiver.java @@ -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)); + + } + } + } + +} diff --git a/Foodify/app/src/main/java/com/waterbase/foodify/VerifyPhone.java b/Foodify/app/src/main/java/com/waterbase/foodify/VerifyPhone.java index f0f1ad3..d021536 100644 --- a/Foodify/app/src/main/java/com/waterbase/foodify/VerifyPhone.java +++ b/Foodify/app/src/main/java/com/waterbase/foodify/VerifyPhone.java @@ -1,7 +1,9 @@ package com.waterbase.foodify; +import android.Manifest; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.os.Bundle; import android.os.CountDownTimer; import android.text.Editable; @@ -15,6 +17,8 @@ import android.widget.Toast; import androidx.annotation.NonNull; 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.Task; @@ -86,6 +90,11 @@ public class VerifyPhone extends AppCompatActivity { }; count.start(); + requestSMSPermission(); + new OTP_Receiver().setEditText(inputCode1, inputCode2, inputCode3, inputCode4, inputCode5, inputCode6); + + + resendCode.setOnClickListener(new View.OnClickListener() { @Override 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); + } + } } \ No newline at end of file