android - 以电子邮件地址作为目标的 SmsManager - NullPointerException

标签 android email sms nullpointerexception

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

相关文章:

c# - InterIMAP,在 C# 中查看未读 IMAP 邮件并下载附件

java - 用于 Nokia Symbian S60 的 Java 短信过滤器应用程序

java - Android - 获取附近地点的列表

android - 根据主题/样式更改 Activity 的背景颜色

email - DKIM 是否也对附件进行签名,还是仅对 header 字段和正文进行签名?

html - -webkit 文本大小调整 : 100% doesn't work on iphone

android - 在 Android 中拦截外发短信

android - 我可以发送 "SMS received intent"吗?

android - 通过蓝牙检测附近的另一个安卓设备

java - 根据使用库的应用程序更改库中定义的常量变量 [Android-Java]