2017-01-18 10 views
0

私は150文字以上のSMSを送信することに少し問題があります。160文字以上のSMSを送信する

私はこのコードを見つけましたが、アンドロイドからxamarin 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); 

感謝。

答えて

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); 
} 
関連する問題