因此,在我的应用程序中,我响应收到的短信,我希望能够回复通过电子邮件地址发送的短信,但isEmail()总是返回false,因此getEmailFrom()和getEmailBody()总是返回null。下面是我的代码:
Bundle bundle = intent.getExtras();
String recMsgString = "";
String fromAddress = "";
String tag = "SMS_RECEIVED";
if (bundle != null)
{
//---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
for (int i=0; i<pdus.length; i++){
SmsMessage recMsg = SmsMessage.createFromPdu((byte[])pdus[i]);
recMsgString = recMsg.getMessageBody();
fromAddress = recMsg.getOriginatingAddress();
if (recMsg.isEmail()){
fromAddress = recMsg.getEmailFrom();
recMsgString = recMsg.getEmailBody();
}
}
//do some logging
//code to react to the message
}
}任何帮助都将不胜感激。
发布于 2011-09-12 01:27:49
我有点想通了,但我不确定为什么它能行得通...
因此,在我的应用程序中,我没有检查isEmail,然后使用getEmailFrom和getEmailBody,而是只获取了发送者(大概是14100000011),然后使用了recMsgString.contains(myKeyword)
然后,我的应用程序会向14100000011发送一条消息,然后它会发送到我的电子邮件中。
不过,我真的不太确定它为什么会这样。我猜AT&Ts电子邮件网关只是把它送回我发送它的地方。不知道这能行得通。
顺便说一句,有没有人知道其他运营商的功能?
也就是说,如果您从gmail发送电子邮件(或其他电子邮件)到您的电话号码:
AT&T: phonenumber@txt.att.net
T-Mobile: phonenumber@tmomail.net
威瑞森: phonenumber@vtext.com
Sprint: phonenumber@messaging.sprintpcs.com
然后回复,你在电子邮件中收到消息了吗?
如果有人愿意对此进行测试,请留言说明您的运营商是谁,您的电子邮件提供商是谁,以及测试的结果。
发布于 2011-08-28 13:32:06
嗯,我从来没有听说过一个叫做isEmail()的字符串方法--也许我漏掉了什么?
你声明
String recMsgString = "";然后尝试访问
recMsgString.isEmail()它并不存在。另外,我注意到您将recMsgString设置为等于recMsg.getMessageBody()
recMsg.getMessageBody();我不认为getMessageBody()函数会返回一封电子邮件。
我想你想做的是:
SmsMessage recMsg = SmsMessage.createFromPdu((byte[])pdus[i]);
...
if (recMsg.isEmail()){
fromAddress = recMsg.getEmailFrom();
recMsgString = recMsg.getEmailBody();
}https://stackoverflow.com/questions/7219193
复制相似问题