短信总是显示“短信发送”即使使用随机手机号码没有发送报告 - 安卓

时间:2013-01-17 18:22:26

标签: android sms

为什么每当我发短信给联系电话时,我总是说“短信发送”,当时我只使用了一个随机手机号码,如“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);        
}

1 个答案:

答案 0 :(得分:0)

SMS SENT出现是因为您已收到onRecive方法发送的报告。当您的消息发送时,您的Onrecive回调方法被调用并且它会触发SMS SENT消息