SmsMessage.isEmail () всегда возвращает false - PullRequest
0 голосов
/ 28 августа 2011

Итак, в моем приложении я отвечаю на входящие смс и хотел бы иметь возможность отвечать на смс, отправленные на адрес электронной почты, но isEmail () всегда возвращает false, поэтому getEmailFrom () и getEmailBody () всегда вернуть ноль. Вот мой код:

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

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

3 голосов
/ 28 августа 2011

Хм, ну, я никогда не слышал о строковом методе 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();
        }
1 голос
/ 11 сентября 2011

Я вроде / что-то понял, но я не уверен, почему это сработало ...

Итак, в моем приложении вместо проверки isEmail и последующего использования getEmailFrom и getEmailBody я просто получил отправителя (что-то вроде 14100000011), а затем использовал recMsgString.contains(myKeyword)

Мое приложение отправляет сообщение обратно на 14100000011 и доставляет его на мою электронную почту.

Хотя я не совсем уверен, почему он так себя ведет. Я предполагаю, что почтовый шлюз AT & Ts просто возвращает туда, откуда я его отправил. Не знал, что это сработает.

Кстати, кто-нибудь знает функционирование на любом другом носителе?

То есть, если вы отправляете электронное письмо из gmail (или другого электронного письма) на свой номер телефона следующим образом:

AT & T: phonenumber@txt.att.net
T-Mobile: phonenumber@tmomail.net
Verizon: phonenumber@vtext.com
Sprint: phonenumber@messaging.sprintpcs.com

Тогда ответьте, вы получаете сообщение обратно на свою электронную почту?

Если кто-то достаточно любезен, чтобы проверить это, пожалуйста, оставьте комментарий, в котором говорится, кто ваш оператор, кто ваш почтовый провайдер, и результаты теста.

...