2016-07-20 2 views
2

Как использовать Broadcast Ресивер в Xamarin.Form ссылки на этот форум http://forums.xamarin.com/discussion/7070/how-to-prevent-sms-going-to-inboxКак использовать или реализовать вещательный приемник в Xamarin.Form

класс

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(); 
     } 
    } 
} 

Как реализовать этот класс в Xamarin.Form и получать входящие SMS, Спасибо заранее и Добрый день: D

ответ

1

От Android 4.4, Вы не можете делать какие-либо операции с SMS, кроме как читать его, если ваше приложение не является стандартным SMS-приложением.

Если ваше приложение по умолчанию является смс-приложением, и вы хотите заблокировать отправителя или что-то другое, тогда положите SmsReceiver в Android Project и зарегистрируйте его в классе Application.

Я не думаю, что вам нужно что-либо сделать в Forms Project.

+0

моей целью является API 23 или Android 6.0 –

+0

Тогда вы не сможете это сделать, если вы не сделаете свое приложение по умолчанию для SMS. – arsena

+0

Вы имеете в виду это http://www.trishtech.com/wp/wp-content/uploads/2014/12/default-sms-app-android-0.jpg –

 Смежные вопросы

  • Нет связанных вопросов^_^