自定义短信发送后,对短信发送状态进行侦听

如果不是用系统自带的短信发送Activity,那么我们自己发送到短信会有很多功能无法实现。例如,不知道短信当前的发送状态,不知道对方的接收情况。所以,我们要对发送后的短信进行侦听:

SmsManager.sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)

1. 传入参数:sentIntent
2. 注册BroadcastReceiver 用于接受sentIntent

public void sendSMS(String phoneNumber, String message) {          
        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(), "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:  
                        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();  
        sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);      
          
    }  

你可能感兴趣的:(自定义)