0

它显示了从电子邮件服务 ex 发送的消息的真正“发件人”标签。7135192435@tmomail.net 有一个不同的“发件人”标签,然后是通过 SMS 收到消息后消息详细信息显示的内容。我希望能够通过 tmomail.net 接收 SMS 消息,但缺少的链接在于手机所看到的“发件人”标签。我已成功收到其他手机的短信,我的广播接收器收到了它们。但是,我无法正确设置“发件人”过滤器以通过 tmomail.net 接收这些文本。提前感谢所有诺贝尔 android 向导,他们可能会从他们的项目中抽出时间来提供帮助。下面是代码...

public class SmsReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        // ---get the SMS message passed in---

        Bundle bundle = intent.getExtras();
        SmsMessage[] msgs = null;
        String str = "";

        Log.d("SMS_Project", "Beginning fired!");

        if (bundle != null) {
            // ---retrieve the SMS message received---
            Object[] pdus = (Object[]) bundle.get("pdus");
            msgs = new SmsMessage[pdus.length];
            for (int i = 0; i < msgs.length; i++) {

                msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);

                String mFrom = msgs[i].getOriginatingAddress();
                String mBody = msgs[i].getMessageBody().toString();

                Log.d("SMS_Project", "The From tag follows this line");

                if (mFrom.equals("JimJohanson@JollyRanchers.com"))   {

                    Log.d("SMS_Project", "above is the from tag");

                    if (mBody.indexOf("1") == 0) {
                        str += "SMS from '" + mFrom + "'";
                        str += " :";
                        str += mBody;                   

                        str += "\n";

                        // ---display the new SMS message---
                        Log.d("SMS_Project", "Toast anyone?");
                        Toast.makeText(context, str, Toast.LENGTH_LONG).show();
                        this.abortBroadcast();

                    }
                }
            }
        }
    Log.d("SMS_Project", "No toast yet");}

清单信息:

<receiver android:name=".SmsReceiver" >
            <intent-filter android:priority="99999999" >
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>

这些是我的权限:

<uses-permission android:name="android.permission.RECEIVE_SMS" />

我怀疑问题是手机缺乏将电子邮件翻译成合法短信的能力。也许它是多媒体消息类型?在我开始之前,我将继续梳理蓝色。如果您对我到目前为止的内容有任何疑问。请告诉我。谢谢。

4

2 回答 2

0

我将尝试通过 mFrom 字符串和 Log.d 进行检查。对于遇到这个我的其他人

//插入...

Log.d("SMS_Project", mFrom); 

//正上方...

(mFrom.equals("JimJohanson@JollyRanchers.com"))

希望这会给我一个准确且一致的“来自”标签,以便准确地捕获结果。不敢相信我花了这么长时间才想出这么简单的测试。提示,学习如何正确调试和使用 LogCat 是任何高于复制/粘贴专业人士的必需品。

于 2012-04-24T21:53:10.987 回答
0

好吧,请忽略我过去的所有下巴……对此的答案是使用 getEmailFrom() 函数。

例子 :

msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);

String mFrom = msgs[i].getOriginatingAddress();
String mBody = msgs[i].getMessageBody().toString();
String mEmail = msgs[i].getEmailFrom().toString();
*Boolean mSomething = msgs[i].isEmail();*

Log.d("SMS_Project_From", mFrom);
Log.d("SMS_Project_mBody", mBody);
*Log.d("SMS_Project_Email", mEmail);*

这包括 Logcat,以便您可以准确识别电子邮件的来源。

于 2012-04-27T01:18:41.617 回答