问题描述
我尝试了Send SMS with more than 160 characters
接受的答案中提到的代码这无法按预期方式运行,并且在显示警报消息中点击“确定”后没有发送任何文本消息。我找不到任何错误,不确定后台会发生什么。我的信誉不足,无法对this进行评论。
void TestButton_Click (object sender,System.EventArgs e)
{
string message = editTextTx.Text;
if (((decimal)message.Length/ 160) == message.Length / 160)
text_i = message.Length / 160;
else
text_i = (message.Length / 160) + 1;
Android.App.AlertDialog.Builder dialog = new Android.App.AlertDialog.Builder(this);
Android.App.AlertDialog alert = dialog.Create();
alert.SetTitle("Warning");
alert.SetMessage("It will need " + text_i.ToString() + " text message(s)");
alert.SetButton("OK",(c,ev) =>
{
var destinationAdd = "**MY NUMBER**";
SmsManager sm = SmsManager.Default;
if (message.Length >= 160)
{
List<string> parts = new List<string>();
//split the message into parts of 160 chars.
var enumerable = Enumerable.Range(0,message.Length / 160).Select(i => message.Substring(i * 160,160));
parts = enumerable.ToList();
sm.SendMultipartTextMessage(destinationAdd,null,parts,null);
}
else
{
sm.SendTextMessage(destinationAdd,message,null);
}
});
alert.Show();
}
它对于一条少于160个字符且包含以下代码的短信非常有用:
try
{
SmsManager.Default.SendTextMessage("**MY NUMBER**","test message",null);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
解决方法
- 将用于将消息分为几部分的字符从160更改为150(不确定为什么它不适用于153-160之间的任何内容)
感谢Jason的帮助
- 在上面的代码中,它缺少最后几个字符,因为如果将字符串分成几个部分,则最后一个部分的字符数可能会更少,而不是恰好为150。更改了代码,并添加了
try
和{{ 1}}语句以获取不同部分的所有字符
catch