我的手机运营商提供短信电子邮件网关。只需输入电子邮件地址作为 SMS 消息的目的地即可完成此操作。电子邮件以 [email protected] 形式发送
我正在尝试在我的新 Android 设备上使用此功能。标准的 Android 消息应用程序会将所有以电子邮件地址为目的地的消息转换为“彩信”,并尝试将它们作为数据发送 - 这不是我想要做的。
尝试使用android.telephony.SmsManager
:
SmsManager manager = SmsManager.getDefault();
manager.sendTextMessage("<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="87e6e3e3f5e2f4f4c7e2ffe6eaf7ebe2a9e4e8ea" rel="noreferrer noopener nofollow">[email protected]</a>", 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("<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9dfcf9f9eff8eeeeddf8e5fcf0edf1f8b3fef2f0" rel="noreferrer noopener nofollow">[email protected]</a>", null, "Message body here", null, null);
在 HTC Desire Z - Android v2.2 上进行测试
最佳答案
请查看这篇文章。
Programatically send SMS to email using Verizon Motorola Droid on Android
How to send SMS message reply to email address?
您应该知道运营商的短信网关号码并发送如下消息:
SmsManager manager = SmsManager.getDefault();
manager.sendTextMessage("6425", null, "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="473234223529262a220723282a262e296924282a" rel="noreferrer noopener nofollow">[email protected]</a> (Subject) message text", null, null);
Verizon 无线 -> 6425,AT&T 移动 -> 121 111
关于android - 以电子邮件地址作为目标的 SmsManager - NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6006554/