2016-04-01 12 views
1

は、私は私がどんな問題を抱えていないSMSを送信しようとしたとき、私のスマートフォン(アンドロイド)からのメッセージを送受信するためのコードを書き始めたが、私はSMSを受信しようとしたとき、私はXamarin C#メッセージを読む|オーバーライドエラー

を言うエラーが出ます

MainActivity.OnReceive(コンテキスト、インテント):

using System; 
using System.Text; 
using Android.App; 
using Android.Content; 
using Android.Widget; 
using Android.OS; 
using Android.Telephony; 
using Android.Util; 
using Environment = System.Environment; 
using Android.Provider; 

namespace Mensajes 
{ 


[Activity(Label = "Mensajes", MainLauncher = true, Icon = "@drawable/icon")] 
[BroadcastReceiver(Enabled = true, Label = "SMS Receiver")] 
[IntentFilter(new[] { "android.provider.Telephony.SMS_RECEIVED" })] 

public class MainActivity : Activity 
{ 
    private const string Tag = "SMSBroadcastReceiver"; 
    private const string IntentAction = "android.provider.Telephony.SMS_RECEIVED"; 
    AutoCompleteTextView edittext; 
    TextView textView; 

    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 
     SetContentView(Resource.Layout.Main); 
     Button button2 = FindViewById<Button>(Resource.Id.button1); 
     edittext = FindViewById<AutoCompleteTextView>(Resource.Id.MyTextEdit); 
     textView = FindViewById<TextView>(Resource.Id.MyTextView); 
     button2.Click += delegate { EnviaMensaje(); }; 
    } 

    protected override void OnReceive(Context context, Intent intent) 
    { 
     Log.Info(Tag, "Intent received: " + intent.Action); 
     if (intent.Action != IntentAction) return; 
     SmsMessage[] messages = Telephony.Sms.Intents.GetMessagesFromIntent(intent); 

     var sb = new StringBuilder(); 
     for (var i = 0; i < messages.Length; i++) 
     { 
      sb.Append(string.Format("SMS From: {0}{1}Body: {2}{1}", messages[i].OriginatingAddress, 
       Environment.NewLine, messages[i].MessageBody)); 
     } 
    } 

    private void EnviaMensaje() 
    { 
     SmsManager.Default.SendTextMessage("123456789", null, 
     edittext.Text, null, null); 
    } 
    } 
} 

のAndroidManifest.xml:

0オーバーライド

コードに見つかりません適切な方法

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="Mensajes.Mensajes" android:versionCode="1" android:versionName="1.0"> 
     <uses-sdk android:minSdkVersion="16" /> 
     <uses-permission android:name="android.permission.SEND_SMS" /> 
     <uses-permission android:name="android.permission.READ_SMS" /> 
     <uses-permission android:name="android.permission.RECEIVE_SMS" /> 
     <application android:label="Mensajes"></application> 
</manifest> 
+1

マニフェストXMLの内容を入力できますか? –

+0

はい、前に置いていないのは申し訳ありません –

答えて

2

OnReceiveActivityの方法ではないためです。そして、あなたはそれを無効にすることはできません。コードをBroadcastReceiverから継承するクラスに移動する必要があります。

[BroadcastReceiver(Enabled = true, Label = "SMS Receiver")] 
[IntentFilter(new[] { "android.provider.Telephony.SMS_RECEIVED" })] 
public class IncomingSms : BroadcastReceiver 
{ 
    public override void OnReceive(Context context, Intent intent) 
    { 
     Log.Info(Tag, "Intent received: " + intent.Action); 
     if (intent.Action != "android.provider.Telephony.SMS_RECEIVED") return; 
     SmsMessage[] messages = Telephony.Sms.Intents.GetMessagesFromIntent(intent); 

     var sb = new StringBuilder(); 
     for (var i = 0; i < messages.Length; i++) 
     { 
      sb.Append(string.Format("SMS From: {0}{1}Body: {2}{1}", messages[i].OriginatingAddress, 
       Environment.NewLine, messages[i].MessageBody)); 
     } 
    } 
}