Почему я получаю исключение NullPointerException при отправке SMS на HTC Desire или что такое SubmitPdu?

Итак, я получаю эту трассировку стека:

java.lang.NullPointerException    
   at android.telephony.SmsMessage$SubmitPdu.<init>(SmsMessage.java:132)
   at android.telephony.SmsMessage.getSubmitPdu(SmsMessage.java:551)
   at android.telephony.SmsManager.sendTextMessage(SmsManager.java:228)
   at android.telephony.SmsManager.sendTextMessage(SmsManager.java:107)
   at com.emergency.button.SMSSender.safeSendSMS(SMSSender.java:91)
   at com.emergency.button.EmergencyActivity$EmergencyThread
       .sendSMS(EmergencyActivity.java:294)
   at com.emergency.button.EmergencyActivity$EmergencyThread
       .sendMessages(EmergencyActivity.java:386)
   at com.emergency.button.EmergencyActivity$EmergencyThread
       .run(EmergencyActivity.java:266)

И вот как я вызываю sendTextMessage, я не проверяю длину сообщения или правильность номера телефона:

sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);

Эта ошибка возникает только в HTC Desire или HTC Wildfire с версией Android 2.2 или 2.21, поэтому я откопал исходный код платформы Android (что на самом деле не так просто, как я ожидал) и нашел:
SmsMessage.java когда-то хотя это может не иметь значения, поскольку я вижу, что некоторые номера строк не совпадают.
Проект аварийной кнопки имеет открытый исходный код, поэтому вы можете ознакомиться с кодом. Должен, наверное, заметить, что сам протестировать не могу, у меня нет ни одной модели телефона.

8
задан JJD 10 January 2015 в 18:30
поделиться