编辑:现在已经解决了 - 在此处发布解决方案,以防将来有人需要它,或者任何人都可以提出更好的方法 . 我从清单中删除了intent of stuff,并在我的SmsReceiver类中设置了BroadcastReceiver . 这现在有效 .
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.Util;
using Android.Telephony;
namespace dummyAndroid
{
[BroadcastReceiver(Enabled = true, Label = "SMS Receiver")]
[IntentFilter(new string[] { "android.provider.Telephony.SMS_RECEIVED" })]
public class SmsReceiver : Android.Content.BroadcastReceiver
{
public static readonly string INTENT_ACTION = "android.provider.Telephony.SMS_RECEIVED";
public override void OnReceive(Context context, Intent intent)
{
if (intent.Action == INTENT_ACTION)
{
StringBuilder buffer = new StringBuilder();
Bundle bundle = intent.Extras;
if (bundle != null)
{
Java.Lang.Object[] pdus = (Java.Lang.Object[])bundle.Get("pdus");
SmsMessage[] msgs;
msgs = new SmsMessage[pdus.Length];
for (int i = 0; i < msgs.Length; i++)
{
msgs[i] = SmsMessage.CreateFromPdu((byte[])pdus[i]);
Log.Info("SmsReceiver", "SMS Received from: " + msgs[i].OriginatingAddress);
Log.Info("SmsReceiver", "SMS Data: " + msgs[i].MessageBody.ToString());
}
Log.Info("SmsReceiver", "SMS Received");
}
}
}
}
}
我正在编写一个发送/接收短信的应用程序,并通过SMS Mananger发送工作 .
我现在正试图在Mono for Android中接收短信,并且是Android开发的新手,所以我可能做错了!
我在清单中添加了以下内容
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="auto" package="com.me.dummyAndroid" android:versionCode="1" android:versionName="1">
<uses-sdk android:targetSdkVersion="8" />
<application
android:label="meAndroidSMS"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<receiver android:name=".SmsReceiver">
<intent-filter>
<action android:name=
"android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
</manifest>
然后我创建了一个名为SmsReceiver.cs的新类,其中我似乎是intent中的getExtras函数,根据我读过的在线教程我需要(http://www.techques.com/question/1-3542320/IPhone-Android-SMS-intercept-and-redirection-to-an-application . ) .
namespace dummyAndroid
{
class SmsReceiver
{
public void onReceive(Context context, Intent intent)
{
Bundle bundle = intent.getExtras();
}
}
}
我很欣赏我在Android和MonoDroid上有点过头了但是也许有人可以指出我正确的方向!
1 回答
我在这里有一些工作代码(我不记得来源,但我认为这是与Xamarin有关的人写了这个样本),当收到短信时显示Toast .
AndroidManifest.xml中: