0

为什么每当我向联系人号码发送短信时,当我只使用像“12345678910”这样当然有11位数字的随机手机号码时,它总是显示“已发送短信”。此外,当消息实际传递与否时,它不会显示吐司。

private void sendSMS(String phoneNumber, String message)
{        
        sentFailed = new ArrayList<String>();

        final String phoneNumberCopy = phoneNumber;
        String SENT = "SMS_SENT";
        String DELIVERED = "SMS_DELIVERED";

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

        PendingIntent deliveredPI = PendingIntent.getBroadcast(this, uniqueIdPerSMS++,
                new Intent(DELIVERED), PendingIntent.FLAG_CANCEL_CURRENT);

        //---when the SMS has been sent---
        registerReceiver(new BroadcastReceiver()
        {
            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(), "Generic failure", 
                                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));

        //---when the SMS has been delivered---
        registerReceiver(new BroadcastReceiver()
        {
            @Override
            public void onReceive(Context arg0, Intent arg1) 
            {
                switch (getResultCode())
                {
                    case Activity.RESULT_OK:
                        sentFailed.remove(phoneNumberCopy);
                        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;                        
                }
            }

        }, new IntentFilter(DELIVERED));  

        SmsManager sms = SmsManager.getDefault();

        //send sms
        sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);        
}
4

1 回答 1

0

SMS SENT 出现是因为您收到了来自 onRecive 方法的发送报告。当您的消息发送时,您的 Onrecive 回调方法被调用并触发 SMS SENT Message

于 2013-07-01T14:05:05.937 回答