将
创建/注册
电源已将
我使用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);
希望这会有所帮助。
尝试检查已发送和交付意图的SmsResultError
和SmsStatus
,以确定您的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中国三星星系副本,并立即开始工作