Android – Listen For Incoming SMS Messages

后端 未结 9 1600
情话喂你
情话喂你 2020-11-22 07:06

I am trying to create an application for monitoring incoming SMS messages, and launch a program via incoming SMS, also it should read the content from the SMS.

Workf

9条回答
  •  我寻月下人不归
    2020-11-22 07:23

    If someone referring how to do the same feature (reading OTP using received SMS) on Xamarin Android like me :

    1. Add this code to your AndroidManifest.xml file :

      
      
          
      
      
      
      
      
      
    2. Then create your BroadcastReveiver class in your Android Project.

      [BroadcastReceiver(Enabled = true)] [IntentFilter(new[] { "android.provider.Telephony.SMS_RECEIVED" }, Priority = (int)IntentFilterPriority.HighPriority)] 
      public class BroadcastReveiverOTP : BroadcastReceiver {
              public static readonly string INTENT_ACTION = "android.provider.Telephony.SMS_RECEIVED";
      
              protected string message, address = string.Empty;
      
              public override void OnReceive(Context context, Intent intent)
              {
                  if (intent.HasExtra("pdus"))
                  {
                      var smsArray = (Java.Lang.Object[])intent.Extras.Get("pdus");
                      foreach (var item in smsArray)
                      {
                          var sms = SmsMessage.CreateFromPdu((byte[])item);
                          address = sms.OriginatingAddress;
                          if (address.Equals("NotifyDEMO"))
                          {
                              message = sms.MessageBody;
                              string[] pin = message.Split(' ');
                              if (!string.IsNullOrWhiteSpace(pin[0]))
                              { 
                                      // NOTE : Here I'm passing received OTP to Portable Project using MessagingCenter. So I can display the OTP in the relevant entry field.
                                      MessagingCenter.Send(this,MessengerKeys.OnBroadcastReceived, pin[0]);
                              }
                              }
                      }
                  }
              }
      }
      
    3. Register this BroadcastReceiver class in your MainActivity class on Android Project:

      public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity {
      
              // Initialize your class
              private BroadcastReveiverOTP _receiver = new BroadcastReveiverOTP ();
      
              protected override void OnCreate(Bundle bundle) { 
                      base.OnCreate(bundle);
      
                      global::Xamarin.Forms.Forms.Init(this, bundle);
                      LoadApplication(new App());
      
                      // Register your receiver :  RegisterReceiver(_receiver, new IntentFilter("android.provider.Telephony.SMS_RECEIVED"));
      
              }
      }
      

提交回复
热议问题