2011-08-28 183 views
0

因此,在我的應用程序中,我對傳入的短信做出了響應,並且希望能夠響應由電子郵件地址發送的短信,但isEmail()始終返回false,因此getEmailFrom()和getEmailBody()總是返回null。這裏是我的代碼:SmsMessage.isEmail()總是返回false

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 
     } 
} 

任何幫助將不勝感激。

+0

你弄明白了嗎? – Jack

回答

1

我還挺/八九不離十想通一些東西,但我不知道爲什麼它的工作...

所以,在我的應用程序,而不是檢查isEmail,然後使用getEmailFromgetEmailBody的,我剛收到發送者(這有點像14100000011),然後使用recMsgString.contains(myKeyword)

我的應用程序,然後將消息發送回14100000011並將其傳遞給我的電子郵件。

雖然我不太確定它爲什麼會這樣。我猜AT & Ts電子郵件網關只是送回我發送它的任何地方。不知道這會起作用。

在旁註中,有沒有人知道任何其他運營商的功能?

也就是說,如果你在Gmail中(或其他電子郵件)發送電子郵件到你的電話號碼,例如:

AT & T:[email protected]
的T-Mobile:電話號碼@ tmomail .NET
Verizon的:[email protected]
衝刺:[email protected]

然後回覆,你收到一條消息,早在你的電子郵件?

如果有人對此進行測試,請留下評論,說明您的運營商是誰,您的電子郵件提供商是誰以及測試結果。

3

Hrm我從來沒有聽說過一個名爲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(); 
     } 
+0

對不起,我在我的應用程序中正確,但不正確地將它放在示例代碼中。我現在解決了。在應用程序中,我使用日誌記錄來檢查recMsg.getEmailFrom()和getEmailBody()和isEmail()的值,它們分別返回null,null和false。 – Jakar

+0

我真的不認爲我的問題有答案。我找到了一個可行的解決方案,但這不是我想要的。我不確定這個問題是否是Android中的一個錯誤,或者它是否還沒有真正支持到現在或者所有運營商。不過謝謝您的幫助。 – Jakar