1

そのため、SMS を使用して 2 つのデバイス間でデータを送信するアプリを作成し、一方が他方に自動的に応答するようにしようとしています。しかし、getMessageBody() が返す文字列は、ログ出力 "(test)" が条件に一致しているように見えても、自動メッセージを送信する if ステートメントの設定ではありません。空白をチェックするために、ログ メッセージの文字列の両側にテキストを追加しました。前もって感謝します。

受信するメッセージを送信するコード。

SendSMS(inputNum.getText().toString(),"test");

受信者コード

public void onReceive(Context context, Intent intent)
        {
            Bundle bundle = intent.getExtras();
            SmsMessage[] msgs = null;
            if(bundle != null)
            {
                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]);
                    originNumber = msgs[i].getOriginatingAddress();
                    messages = msgs[i].getMessageBody();
                    Log.e("Received Text", messages);

                }
                if(messages == "test")
                    SendSMS(originNumber, "auto send");
                else
                    Log.e("else Text", "("+messages+")");
            }
4

1 に答える 1

2
   if(messages == "test")

Java での文字列比較には equals メソッドが必要です。を使用して==、メッセージのアドレスと「テスト」のアドレスを比較します。これらは異なる String オブジェクトであるため、結果は false になります。次のように変更します。

   if(messages.equals("test"))
于 2013-05-18T13:34:42.273 に答える