Изпратете SMS с повече от 160 знака

Имам малък проблем с изпращането на sms с повече от 150 знака.

Намерих този код, но не знам как да пренапиша към xamarin android от android.

Код:

SmsManager sm = SmsManager.getDefault();
ArrayList<String> parts =sm.divideMessage(LONG_TEXT);
int numParts = parts.size();
ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>();
for (int i = 0; i < numParts; i++) {
sentIntents.add(PendingIntent.getBroadcast(getContext(), 0, mSendIntent, 0));
deliveryIntents.add(PendingIntent.getBroadcast(getContext(), 0, mDeliveryIntent, 0));
sm.sendMultiPartTextMessage(mDestAddr,null, parts, sentIntents, deliveryIntents)

Това е моят код:

SmsManager smsManager = SmsManager.Default;
            IList<string> parts = smsManager.DivideMessage(responseModel.message);
            var sent = PendingIntent.GetBroadcast(Application.Context, 0, new Intent("SMS_SENT"), 0);
            SmsManager.Default.SendMultipartTextMessage(responseModel.receipent, null, parts, sent, null);

Благодаря за помощта.


person coldzero    schedule 18.01.2017    source източник


Отговори (1)


Можете да разделите низа на части с определена дължина и да използвате SendMultipartTextMessage, за да изпратите дългия текст. Например:

var content = "**HERE GOES SMS CONTENT**";
var destinationAdd = "**HERE GOES DESTINATION PHONE NUMBER**";

SmsManager sm = SmsManager.Default;
if (content.Length >= 150)
{
    List<string> parts = new List<string>();
    //split the string into chunks of 20 chars.
    var enumerable = Enumerable.Range(0, content.Length / 20).Select(i => content.Substring(i * 20, 20));
    parts = enumerable.ToList();
    sm.SendMultipartTextMessage(destinationAdd, null, parts, null, null);
}
else
{
    sm.SendTextMessage(destinationAdd, null, content, null, null);
}
person Grace Feng    schedule 20.01.2017