Мой оператор мобильной связи предлагает шлюз для смс-почты.Это можно сделать, просто введя адрес электронной почты в качестве пункта назначения SMS-сообщения.Письмо доставлено как 5555555555@mycarrier.com
Я пытаюсь использовать это с моим новым устройством Android.Стандартное приложение для обмена сообщениями Android преобразует все сообщения с адресом электронной почты в качестве пункта назначения в «MMS» и пытается отправить их в виде данных - не то, что я хочу сделать.
Попытка с помощью android.telephony.SmsManager
:
SmsManager manager = SmsManager.getDefault();
manager.sendTextMessage("address@example.com", null, "Message body here", null, null);
При этом выдается следующее исключение:
Caused by: java.lang.NullPointerException
at com.android.internal.telephony.gsm.SmsMessage.getSubmitPduHead(SmsMessage.java:595)
at com.android.internal.telephony.gsm.SmsMessage.getSubmitPdu(SmsMessage.java:295)
at android.telephony.SmsMessage.getSubmitPdu(SmsMessage.java:599)
at android.telephony.SmsManager.sendTextMessage(SmsManager.java:228)
at android.telephony.SmsManager.sendTextMessage(SmsManager.java:107)
Я смотрел на этот проект, android-sms-email , который пытается сделать то же самое.Он также дает сбой таким же образом при настройке для моего оператора.
Это не похоже на желаемое поведение, и я предполагаю, что это ошибка Android (некоторые сообщения об ошибках намекают на проблему).Я немного поэкспериментировал и вижу, что добавление любого номера и некоторых символов к адресу электронной почты не приводит к той же ошибке, но сообщение также не доставляется.
Я также пытался использовать SmsManager.sendMultipartTextMessage
, но с SmsMessage.getSubmitPduHead
.
снова возникает та же проблема.
SmsManager manager = SmsManager.getDefault();
// Works
manager.sendTextMessage("15555555555", null, "Message body here", null, null);
// Fails
manager.sendTextMessage("address@example.com", null, "Message body here", null, null);
Протестировано на HTC Desire Z- Android v2.2