1

私のアプリケーションでは、SMSManager を使用してバックグラウンドで特定の番号にメッセージを送信しています。メッセージの送信ステータス、配信ステータスを確認するために受信者を登録しました。これはうまくいきます。しかし、メッセージを送信するときに、電話番号をオフにするか、SIM カードを取り外して再度オンにするか、SIM カードを再度挿入すると、メッセージが送信されません。この機能を実現するにはどうすればよいですか?

SMS マネージャー コード

SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(phonenumber, null, message, sentPI, deliveredPI);

レシーバー:

smsSentReceiver = new BroadcastReceiver() {


            public void onReceive(Context arg0, Intent arg1) {

                switch(getResultCode())
                {

                case Activity.RESULT_OK:
                    Toast.makeText(getBaseContext(), "SMS Sent", Toast.LENGTH_LONG).show();
                break;

                case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                    Toast.makeText(getBaseContext(), "Sms failed due to generic failure", Toast.LENGTH_LONG).show();
                    break;

                case SmsManager.RESULT_ERROR_NO_SERVICE:
                    Toast.makeText(getBaseContext(), "could not send the message due to unavailability of service.", Toast.LENGTH_LONG).show();
                    break;

                case SmsManager.RESULT_ERROR_NULL_PDU:
                    Toast.makeText(getBaseContext(), "Null PDU", Toast.LENGTH_LONG).show();
                    break;

                }

            }
        };

            smsDeliveredReceiver = new BroadcastReceiver () {

            public void onReceive(Context arg0, Intent arg1) {
                switch(getResultCode())
                {
                case Activity.RESULT_OK:
                    Toast.makeText(getBaseContext(), "SMS Delivered", Toast.LENGTH_SHORT).show();
                    break;

                case Activity.RESULT_CANCELED:
                    Toast.makeText(getBaseContext(), "SMS not Delivered", Toast.LENGTH_SHORT).show();
                    break;
                }

                }

            };

            registerReceiver(smsSentReceiver, new IntentFilter(SENT));
            registerReceiver(smsDeliveredReceiver, new IntentFilter(DELIVERED ));

    }
4

1 に答える 1

0

これは、「Broadcst Reciver」を使用して実現できます。電話の電源を入れると、新しい sim が挿入されたようなブロードキャット レシーバーを受信し、保留中のインテントも使用しようとします。

于 2012-12-28T09:22:17.407 に答える