2016-12-02 18 views
3

У меня есть создать приложение для отправки коротких сообщений с использованием SMPP 3.4 и эту работу хорошо, но в некоторых телефонах я получил это сообщение:отправки коротких сообщений с использованием открытых SMPP 3.4

Невозможно отобразить это сообщение

это мой источник кода функции:

public String sendMsg(JsonObject paramsIN) { 
    String smsMessage = paramsIN.getString("body"); 
    String smsDestination = paramsIN.getString("to"); 
    String smsSource = paramsIN.getString("from"); 
    String smscNAME = paramsIN.getString("smsc"); 

    SubmitSM request = new SubmitSM(); 
    SubmitSMResp response; 
    Session session; 
    try { 
     request.setSourceAddr(smsSource); 
     request.setDestAddr(smsDestination); 
     request.setShortMessage(smsMessage, "UTF-8"); 
     request.setRegisteredDelivery((byte) 3); 
     request.setDataCoding((byte) 4); // 4 
     request.assignSequenceNumber(true); 
     response = ((Session) sd.get(smscNAME)).submit(request); 
     logger.info("Submit response " + response.debugString()); 
     String messageId = response.getMessageId();  

     BigInteger bigInt = new BigInteger(messageId, 16); 

     return bigInt+""; 
    } catch (WrongLengthOfStringException e) { 
     logger.error(e); 
     return null; 
    } catch (PDUException e) { 
     logger.error(e); 
     return null; 
    } catch (TimeoutException e) { 
     logger.error(e); 
     return null; 
    } catch (WrongSessionStateException e) { 
     logger.error(e); 
     return null; 
    } catch (IOException e) { 
     logger.error(e); 
     return null; 
    } 
} 

пожалуйста, кто-то может помочь мне, спасибо

ответ

1

Установите кодировку данных в 0 (сетевое значение по умолчанию) и закодируйте тело с любой кодировкой, поддерживаемой вашим провайдером. Используйте кодировку GSM по умолчанию, если вам нужно угадать (jcharset содержит кодировщик). Если вам действительно нужна расширенная кодировка, используйте UTF-16BE и установите кодирование данных на 8.

+0

спасибо, что работает (y). Я добавлю это в свой код 'request.setShortMessage (smsMessage, Data.ENC_UTF16_BE); request.setDataCoding ((byte) 0x08); ' –

+0

Привет, teppic спасибо за ваше решение, но у меня есть другая проблема, что в некоторых других смартфонах, таких как« samsung galaxy g1 ace », у меня есть это сообщение« Содержимое не поддерживается », –