0

アプリの基本的な考え方は次のとおりです。

1) BroadcastReceiver、SMS を受信

2) SMS を受信すると、別の SMS を送信する別のアクティビティが呼び出されます。

問題はBroadcastReceiver、他のアクティビティ (SMSMessaging) を呼び出すと、そのonCreateメソッドが何度も呼び出されるため、SMS が何度も送信され続けることです。私のコードは以下です、助けてください!

これは私の BroadcastReciever クラスです:

package com.example.testing;

import java.util.Arrays;
import java.util.List;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.widget.Toast;

public class Receiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub

        Bundle bundle = intent.getExtras();
        SmsMessage[] recievedMsgs = null;
        String str = "";
        if (bundle != null) {
            Object[] pdus = (Object[]) bundle.get("pdus");
            recievedMsgs = new SmsMessage[pdus.length];
            for (int i = 0; i < recievedMsgs.length; i++) {
                recievedMsgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
                str += "SMS from " +
                recievedMsgs[i].getOriginatingAddress() +
                " :" +
                recievedMsgs[i].getMessageBody().toString();
            }
            try {
                Toast.makeText(context, str, Toast.LENGTH_SHORT).show();

                Intent i = new Intent(context,SMSMessaging.class);  
                i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
                context.startActivity(i);  
                Toast.makeText(context,"Yahoo",Toast.LENGTH_SHORT).show();
            } catch (Exception e) {

            }
        }
    }
}

これは私の SMSMessaging クラスです:

package com.example.testing;

import android.app.Activity;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class SMSMessaging extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, SMSMessaging.class), 0);                
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage("03331234567", null, "auto sending ", pi, null);     
        finish();
    }
}
4

2 に答える 2

0

ここでの簡単な答えは、Activity から SMS を送信しないで、代わりに BroadCastReceiver から送信することです。finish()呼び出しonCreate自体は見たことがありません。

受信者自身からsendSmsを呼び出し/送信してみてください。

于 2013-04-14T14:20:44.920 に答える
-1

当たり前のことです。SMSを受信すると、あなたに通知され、アクティビティReceiverから新しいSMSを送信しているSMSMessagingため、新しいSMSもあなたに通知されReceiver、再びSMSMessaging新しいメッセージが送信されるため、物事は永遠に繰り返されます.

ソート、ロジックを再設計する必要があります。

于 2013-04-14T14:19:37.197 に答える