SMS Retriever API — как программно получить SMS-сообщения?

#java #android #android-sms

#java #Android #android-sms

Вопрос:

Я хочу реализовать приемник sms OTP в моем Android-проекте, который полностью написан на Java, а не на kotlin. Пожалуйста, кто-нибудь может мне помочь сделать это на Android, используя язык Java?

Я пробовал код kotlin в моем проекте Android, но мои функциональные возможности пользовательского интерфейса основаны на java-коде, пожалуйста, помогите мне.

Комментарии:

1. Вы имели в виду SMS Retriever? Пожалуйста, прочтите это: developers.google.com/identity/sms-retriever/request

2. да, но я понятия не имею, как реализовать это на чистой Java без какого-либо кода kotlin

3. Ссылка, которой поделился @StanleyKou, полностью написана на java, а не на kotlin

Ответ №1:

Попробуйте использовать это для Java

 public class SmsBroadcastReceiver extends BroadcastReceiver {

    public static final String SMS_BUNDLE = "pdus";

    public void onReceive(Context context, Intent intent) {
        Bundle intentExtras = intent.getExtras();
        if (intentExtras != null) {
            Object[] sms = (Object[]) intentExtras.get(SMS_BUNDLE);
            String smsMessageStr = "";
            for (int i = 0; i < sms.length;   i) {
                SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sms[i]);

                String smsBody = smsMessage.getMessageBody().toString();
                String address = smsMessage.getOriginatingAddress();

                smsMessageStr  = "SMS From: "   address   "n";
                smsMessageStr  = smsBody   "n";
            }
            Toast.makeText(context, smsMessageStr, Toast.LENGTH_SHORT).show();

            //this will update the UI with message
            SmsActivity inst = SmsActivity.instance();
            inst.updateList(smsMessageStr);
        }
    }
}
  

Попробуйте использовать что-то подобное для Kotlin

 class SmsBroadcastReceiver:BroadcastReceiver() {
  fun onReceive(context:Context, intent:Intent) {
    val intentExtras = intent.getExtras()
    if (intentExtras != null)
    {
      val sms = intentExtras.get(SMS_BUNDLE) as Array<Any>
      val smsMessageStr = ""
      for (i in sms.indices)
      {
        val smsMessage = SmsMessage.createFromPdu(sms[i] as ByteArray)
        val smsBody = smsMessage.getMessageBody().toString()
        val address = smsMessage.getOriginatingAddress()
        smsMessageStr  = "SMS From: "   address   "n"
        smsMessageStr  = smsBody   "n"
      }
      Toast.makeText(context, smsMessageStr, Toast.LENGTH_SHORT).show()
      //this will update the UI with message
      val inst = SmsActivity.instance()
      inst.updateList(smsMessageStr)
    }
  }
  companion object {
    val SMS_BUNDLE = "pdus"
  }
}