Android C#: sending SMS from Android service



我使用Xamarin Studio编写的Android服务,我正在尝试自动从此服务发送SMS消息。用于发送我使用以下代码:

SmsManager.Default.SendTextMessage("+7926736XXXX", null, "Simple Service sent you a message", null, null);

因此,SMS没有发送到其他手机,而是留在以红色三角形标记的SMS列表中。我可以稍后将它们寄给他们,没有任何问题。有人可以知道我的错误吗?

尝试这个,

SmsManager sms = SmsManager.getDefault();
PendingIntent sentPI;
String SENT = "SMS_SENT";
sentPI = PendingIntent.getBroadcast(this, 0,new Intent(SENT), 0);
sms.sendTextMessage("+7926736XXXX", null, message, sentPI, null);

或像这样的意图发送

var smsUri = Android.Net.Uri.Parse("smsto:7926736XXXX");
var smsIntent = new Intent (Intent.ActionSendto, smsUri);
smsIntent.PutExtra ("sms_body", "Hello from Xamarin.Android");  
StartActivity (smsIntent);

希望这会有所帮助。

尝试检查已发送和交付意图的SmsResultErrorSmsStatus,以确定您的SMS为什么不起作用。

BroadcastReceiver内部类添加到您的Service

public YourSMSService : Service
{
    const string SentAction = "SentAction";
    const string DeliveredAction = "DeliveredAction";
    SmsReceiver smsReceiver;
    ~~~~
    class SmsReceiver : BroadcastReceiver
    {
        public override void OnReceive(Context context, Intent intent)
        {
            if (intent.Action == SentAction)
            {
                // `Log` it if needed...
                Toast.MakeText(context, $"{(SmsResultError)ResultCode}", ToastLength.Long).Show();
            }
            if (intent.Action == DeliveredAction)
            {
                // `Log` it if needed...
                Toast.MakeText(context, $"{(SmsStatus)ResultCode}", ToastLength.Long).Show();
            }
        }
    }
    ~~~~
}

创建/注册BroadcastReceiver(通常在Service .Actor中完成)

smsReceiver = new SmsReceiver();
RegisterReceiver(smsReceiver, new IntentFilter(SentAction));
RegisterReceiver(smsReceiver, new IntentFilter(DeliveredAction));

电源已将PendingIntent s发送并传递到SendTextMessage

var sentIntent = PendingIntent.GetBroadcast(this, 0, new Intent(SentAction), 0);
var deliveredIntent = PendingIntent.GetBroadcast(this, 0, new Intent(DeliveredAction), 0);
SmsManager.Default.SendTextMessage("1234567890", null, "Simple Service sent you a message", sentIntent, deliveredIntent);

现在,当您在服务中发送SMS时,您将获得状态的Toast消息。

问题已关闭。这是我手机的硬件问题。我连接了我的10个YES中国三星星系副本,并立即开始工作

最新更新