Xamarin C#读取消息|覆盖错误

Xamarin C#读取消息|覆盖错误,c#,android,xamarin,sms,xamarin.android,C#,Android,Xamarin,Sms,Xamarin.android,当我尝试发送短消息时,我开始编写一个代码来发送和接收来自智能手机(Android)的消息,我没有遇到任何问题,但当我尝试接收短消息时,我收到一个错误,上面写着 MainActivity.OnReceive(上下文、意图):找不到合适的方法 凌驾 守则: using System; using System.Text; using Android.App; using Android.Content; using Android.Widget; using Android.OS; using An

当我尝试发送短消息时,我开始编写一个代码来发送和接收来自智能手机(Android)的消息,我没有遇到任何问题,但当我尝试接收短消息时,我收到一个错误,上面写着

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);
    }
  }
} 
使用系统;
使用系统文本;
使用Android.App;
使用Android.Content;
使用Android.Widget;
使用Android.OS;
使用Android.Telephony;
使用Android.Util;
使用环境=系统环境;
使用Android.Provider;
名称空间量纲
{
[活动(Label=“Mensajes”,MainLauncher=true,Icon=“@drawable/Icon”)]
[BroadcastReceiver(Enabled=true,Label=“SMS接收器”)]
[IntentFilter(新[]{“android.provider.Telephony.SMS_RECEIVED”}]
公共课活动:活动
{  
private const string Tag=“SMSBroadcastReceiver”;
private const string IntentAction=“android.provider.Telephony.SMS_RECEIVED”;
自动完成文本视图编辑文本;
文本视图文本视图;
创建时受保护的覆盖无效(捆绑包)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
Button button2=FindViewById(Resource.Id.button1);
edittext=FindViewById(Resource.Id.MyTextEdit);
textView=findviewbyd(Resource.Id.MyTextView);
按钮2.单击+=委托{EnviaMensaje();};
}
受保护的覆盖void OnReceive(上下文、意图)
{
日志信息(标签“接收到的意图:“+Intent.Action”);
if(intent.Action!=IntentAction)返回;
SmsMessage[]messages=Telephony.Sms.Intents.GetMessagesFromIntent(intent);
var sb=新的StringBuilder();
对于(var i=0;i
AndroidManifest.xml:

<?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>

这是因为
OnReceive
不是
活动的一种方法。这意味着你不能覆盖它。您必须将代码移动到继承自
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));
        }
    }
}
[BroadcastReceiver(Enabled=true,Label=“SMS接收器”)]
[IntentFilter(新[]{“android.provider.Telephony.SMS_RECEIVED”}]
公共类收入SMS:BroadcastReceiver
{
公共覆盖void OnReceive(上下文、意图)
{
日志信息(标签“接收到的意图:“+Intent.Action”);
if(intent.Action!=“android.provider.Telephony.SMS_RECEIVED”)返回;
SmsMessage[]messages=Telephony.Sms.Intents.GetMessagesFromIntent(intent);
var sb=新的StringBuilder();
对于(var i=0;i
您能提供清单xml的内容吗?是的,很抱歉之前没有提供