jake talledo
jake talledo

Reputation: 610

How to use or implement Broadcast Receiver in Xamarin.Form

How to use Broadcast Reciever in Xamarin.Form reference to this forum http://forums.xamarin.com/discussion/7070/how-to-prevent-sms-going-to-inbox

the class

  public class SmsReceiver : BroadcastReceiver
  {

    public static readonly string IntentAction = "android.provider.Telephony.SMS_RECEIVED";

    public override void OnReceive(Context context, Intent intent)
    {
        InvokeAbortBroadcast();
        try
        {
            if (intent.Action != IntentAction) return;

            var bundle = intent.Extras;

            if (bundle == null) return;

            var pdus = bundle.Get("pdus");
            var castedPdus = JNIEnv.GetArray<Java.Lang.Object>(pdus.Handle);

            var msgs = new SmsMessage[castedPdus.Length];

            var sb = new StringBuilder();
            String sender = null;
            for (var i = 0; i < msgs.Length; i++)
            {
                var bytes = new byte[JNIEnv.GetArrayLength(castedPdus[i].Handle)];
                JNIEnv.CopyArray(castedPdus[i].Handle, bytes);

                msgs[i] = SmsMessage.CreateFromPdu(bytes);
                if (sender == null) sender = msgs[i].OriginatingAddress;
                sb.Append(string.Format("SMS From: {0}{1}Body: {2}{1}", msgs[i].OriginatingAddress,
                                        System.Environment.NewLine, msgs[i].MessageBody));
            }


            if (sender != null && sender.EndsWith("09068100820"))
            {

                // Process our sms...
                //        SMS.updateMessageBox("\nFrom: " + msg.getOriginatingAddress() + "\n" +
                //"Message: " + msg.getMessageBody() + "\n");
                /*((SMS) context).delete();*/
                Toast.MakeText(context, "IsOrderedBroadcast :" + IsOrderedBroadcast.ToString() + "\n" + sb.ToString(), ToastLength.Long).Show();
            }
            else
            {
                ClearAbortBroadcast();
            }

        }
        catch (Exception ex)
        {
            Toast.MakeText(context, ex.Message, ToastLength.Long).Show();
        }
    }
}

How to implement this class in Xamarin.Form and get the incoming SMS, Thanks in advance and Good Day :D

Upvotes: 2

Views: 978

Answers (1)

arsena
arsena

Reputation: 1975

From Android 4.4, You can't do any kind of operation on SMS except just reading it if your app isn't the default SMS app.

If your app is default sms app and you want to block sender or whatever then put your SmsReceiver in Android Project and register it in Application class.

I don't think you need to do anything in Forms Project.

Upvotes: 1

Related Questions