У меня есть проблемы с моим кодом. Когда я получаю SMS длиной более 160 символов, сообщение выглядит как-то зашифрованным. Например текст:
Мэтт Брайан, The Next Web Новый Retina-дисплей iPad, возможно, был
самая ожидаемая функция, которая будет включена в новый планшет Apple,
особенно после включения дисплея с высоким разрешением.
Дает результат:
Сообщение 1: èsACiiAèeSCÑY¡ (QKAÆKqiA.KÑA (QKAÖKoARaCIgAdKiSÑCAHSgaYCsAnCgA¿KeQCagAhQKAZ§giAJqaKGiKIALKCikeKAh§ADKARÑGYkIKIARÑABaaYKgAÖKoAhCEYKiY¡JgaKGSCYYsABMiKe
Сообщение 2: ÖG§ea§eCiKIAhQKAPSOQÄdKg§YkiS§ÑAHSgaY
Фрагмент кода выглядит следующим образом:
public void onReceive( Context context, Intent intent ){
// Get the SMS map from Intent
Bundle extras = intent.getExtras();
if ( extras != null ){
// Get received SMS array
Object[] smsExtra = (Object[]) extras.get( "pdus" );
for ( int i = 0; i < smsExtra.length; i++ ){
SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]);
String body = sms.getMessageBody().toString();
String address = sms.getOriginatingAddress();
try {
sendMessageToServer(new Message(address, body));
} catch (IOException e) {
Log.w("Receive SMS", "Application not connected to server");
}
}
}
Наконец, я добавлю, что SMS, содержащие менее 160 символов, отображаются правильно.