0

たとえば、電子メールサービスから送信されたメッセージの真の「From」タグが表示されます。7135192435@tmomail.netには、異なる「From」タグがあり、SMSを介してメッセージを受信すると、メッセージの詳細が明らかになります。tmomail.net経由でSMSメッセージを受信できるようにしたいのですが、欠落しているリンクは、電話が「From」タグとして正確に認識しているものにあります。私は他の携帯電話からSMSを正常に受信しました、そして私の放送受信機はそれらをキャッチします。ただし、tmomail.netを介してこれらのテキストを受信するために、「From」フィルターを適切に設定できません。プロジェクトから時間をかけて支援してくれるすべてのノーベルアンドロイドウィザードに事前に感謝します。以下はコードです...

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" />

私は問題が電子メールを合法的なSMSに翻訳する能力の電話の欠如であると思う。おそらくそれは代わりにマルチメディアメッセージタイプですか?私はこれがうまくいくまでどこにも青をとかし続けるつもりです。私がこれまでに持っているものについて質問があれば。私にお知らせください。ありがとう。

4

2 に答える 2

0

mFrom文字列とLog.dを介して確認してみます。このイムに遭遇した他の人のために

//挿入しています...

Log.d("SMS_Project", mFrom); 

//真上...

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

うまくいけば、これにより、結果のトラップを正確にするために、正確で一貫性のある「from」タグが得られます。こんなに簡単なテストを思いつくのにこんなに時間がかかったなんて信じられません。ヒント、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 に答える