4

アプリケーションで SMS ブロードキャスト レシーバーを使用しています。最初のSMSを送信すると、送信されたSMSとして1つのメッセージがポップアップします。2 番目のリクエストを送信すると、ポップアップ メッセージが 2 倍になります。3回目には3倍になりました。ブロードキャストの送受信に次のコードを使用しています。

  private void sendRequest()
    {        
        String SENT = "SMS_SENT";
        String DELIVERED = "SMS_DELIVERED";

        PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
            new Intent(SENT), 0);

        PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
            new Intent(DELIVERED), 0);

        //---when the SMS has been sent---
        registerReceiver(new BroadcastReceiver(){
            @Override
            public void onReceive(Context arg0, Intent arg1) {
                switch (getResultCode())
                {
                    case Activity.RESULT_OK:
                        Toast.makeText(getBaseContext(), "SMS sent", 
                                Toast.LENGTH_SHORT).show(); 
                        break;
                    case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                        Toast.makeText(getBaseContext(), "Invalid PhoneNumber", 
                                Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_NO_SERVICE:
                        Toast.makeText(getBaseContext(), "No service", 
                                Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_NULL_PDU:
                        Toast.makeText(getBaseContext(), "Null PDU", 
                                Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_RADIO_OFF:
                        Toast.makeText(getBaseContext(), "Radio off", 
                                Toast.LENGTH_SHORT).show();
                        break;
                }
            } 
        }, new IntentFilter(SENT));


       SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(sms_phonenumber, null, sms_message, sentPI, null);  

これが起こっているかどうかはわかりません。メインアクティビティから SMS メッセージを送信しています。

助けてくれてありがとう..

4

1 に答える 1

5

電話をかけるたびにもう一度sendRequest登録するので、見た目は.......。BroadcastReceiver

一度だけ登録するBroadcastReceiver必要があり、アクティビティを実行する前に登録を解除する必要があります.......。

onStartリンク内およびリンクonStop 内で1回だけ登録および未登録の作業を行う

于 2012-06-14T10:31:49.477 に答える