Я не рекомендую использовать сторонние библиотеки для автоматического извлечения OTP из SMS-сообщений. Это можно сделать легко, если у вас есть базовое понимание Broadcast Receiver и как оно работает. Просто попробуйте следующий подход:
Шаг 1) Создайте единый интерфейс, т.е. SmsListner
package com.wnrcorp.reba; public interface SmsListener{ public void messageReceived(String messageText);}
Шаг 2) Создайте единый широковещательный приемник, то есть SmsReceiver
package com.wnrcorp.reba; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsMessage; public class SmsReceiver extends BroadcastReceiver { private static SmsListener mListener; Boolean b; String abcd,xyz; @Override public void onReceive(Context context, Intent intent) { Bundle data = intent.getExtras(); Object[] pdus = (Object[]) data.get("pdus"); for(int i=0;i
Шаг 3) Добавить прослушиватель, т. е. широковещательный приемник в файле манифеста android
и добавить разрешение
Заключительный шаг 4) Активность, в которой вы собираетесь автоматически выбирать otp, когда он получен во входящих. В моем случае я извлекаю otp и устанавливаю в поле edittext.
public class OtpVerificationActivity extends AppCompatActivity { EditText ed; TextView tv; String otp_generated,contactNo,id1; GlobalData gd = new GlobalData(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_otp_verification); ed=(EditText)findViewById(R.id.otp); tv=(TextView) findViewById(R.id.verify_otp); /*This is important because this will be called every time you receive any sms */ SmsReceiver.bindListener(new SmsListener() { @Override public void messageReceived(String messageText) { ed.setText(messageText); } }); tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { InputMethodManager imm= (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),0); } catch(Exception e) {} if (ed.getText().toString().equals(otp_generated)) { Toast.makeText(OtpVerificationActivity.this, "OTP Verified Successfully !", Toast.LENGTH_SHORT).show(); } }); } }
Файл макета для OtpVerificationActivity
Скриншоты для проверки OTP Активность, в которой вы выбираете OTP как сообщения, полученные сообщениями