带有电子邮件地址作为目标的SmsManager - NullPointerException

时间:2011-05-15 04:48:56

标签: android email sms nullpointerexception

我的手机运营商提供短信电子邮件网关。只需输入电子邮件地址作为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

2 个答案:

答案 0 :(得分:2)

请查看这篇文章。

Programatically send SMS to email using Verizon Motorola Droid on Android

How to send SMS message reply to email address?

您应该知道运营商的SMS网关号码,并发出如下信息:

SmsManager manager = SmsManager.getDefault();
manager.sendTextMessage("6425", null, "username@domain.com (Subject) message text", null, null);

Verizon wireless-> 6425,AT& T移动性 - > 121 111

答案 1 :(得分:0)