Отправка смс в юникоде (smpp) - PullRequest
0 голосов
/ 04 марта 2019

Чтобы отправить смс с юникодом, я делю его на 67 байт, например:

java.nio.charset.Charset charset = java.nio.charset.Charset.forName("UTF-16LE"); 
List<SmsMessage> gRoutingSubMessageList = new ArrayList<SmsMessage>();
int splitMessageId = (int) (System.currentTimeMillis() % 256);
int st = 0, st2 = 0, j = 0, k = 0;
byte[] dataByte = messageC.getData().getBytes(charset);
    //split it 
while (j < dataByte.length) {
    k++;
    SmsMessage m;
    if (k == 1)
        m = message;
    else
        m = (SmsMessage) messageC.clone();
    j = st + 67 > dataByte.length ? dataByte.length : st + 67;
    if (dataByte[j - 1] == 27)
        st2 = 65;
    else
        st2 = 66;   

    m.setData(new String(dataByte, st, st + st2 > dataByte.length ? dataByte.length - st : st2, charset));
    m.setCurrentSegment(k);
    m.setSplitMessageId(splitMessageId);
    gRoutingSubMessageList.add(m);
    st = st + st2;                       
}

Однако полученное сообщение повреждено, какое-либо решение?

1 Ответ

0 голосов
/ 11 марта 2019

Использование 132 вместо 67 и 131 вместо 65

...