微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Xamarin.Android发送超过160个字符的短信

如何解决使用Xamarin.Android发送超过160个字符的短信

我尝试了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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。