2016-11-27 16 views
1

xamarinフォームを使用しています。受信メッセージを読み込み、ブロードキャストレシーバクラスを使用してトーストメッセージを表示しようとしています。続きXamarin Forms androidブロードキャストレシーバを使用して受信テキストメッセージを受信

は私のmanifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android"  android:installLocation="auto"> 
<uses-sdk android:minSdkVersion="22" android:targetSdkVersion="22" /> 
<uses-permission android:name="android.permission.CALL_PHONE" /> 
<uses-permission android:name="android.permission.SEND_SMS" /> 
<uses-permission android:name="android.permission.RECEIVE_SMS" /> 
<uses-permission android:name="android.permission.READ_SMS" /> 
<uses-permission android:name="android.permission.WRITE_SMS" /> 
<application android:label="DemoApp" android:debuggable="true"> 
</application> 
</manifest> 

レシーバクラス

[BroadcastReceiver(Enabled = true, Exported = true,Label = "SMS Receiver")] 
[IntentFilter(new string[] { "android.provider.Telephony.SMS_RECEIVED"}, Priority = Int32.MaxValue)] 
public class SmsReceiver : Android.Content.BroadcastReceiver 
{ 
    public static readonly string INTENT_ACTION = "android.provider.Telephony.SMS_RECEIVED"; 

    public SmsReceiver() 
    { 
    } 

    public override void OnReceive(Context context, Intent intent) 
    { 
     if (intent.Action == INTENT_ACTION) 
     { 
      if (ContextCompat.CheckSelfPermission(context, 
       "android.permission.READ_SMS") != Permission.Denied) 
      { 
       Bundle bundle = intent.Extras; 

       if (bundle != null) 
       { 
        Java.Lang.Object[] pdus = (Java.Lang.Object[])bundle.Get("pdus"); 

        if (pdus.Length == 0) 
        { 
         return; 
        } 

        SmsMessage[] msgs; 
        msgs = new SmsMessage[pdus.Length]; 

        for (int i = 0; i < msgs.Length; i++) 
        { 
         msgs[i] = SmsMessage.CreateFromPdu((byte[])pdus[i], "3gpp"); 

         Log.Info("SmsReceiver", "SMS Received from: " + msgs[i].OriginatingAddress); 
         Log.Info("SmsReceiver", "SMS Data: " + msgs[i].MessageBody.ToString()); 
        } 

        Toast.MakeText(context.ApplicationContext, "SUCCESS", 
        ToastLength.Long).Show(); 

        Log.Info("SmsReceiver", "SMS Received"); 
       } 
      } 
     } 
    } 
} 

しかし、上記のコードではありませんどちらも、ログの猫やトーストのテキストにおける情報ログメッセージが表示されます。 誰か助けてもらえますか

答えて

関連する問題