Android SMS Message delivery report intent

后端 未结 2 758
抹茶落季
抹茶落季 2020-12-08 22:52

Android isn\'t firing the delivery intent when sending a text message. I\'m testing this on Android 2.2 on the HTC EVO 4G.

This is the current code. I\'m seeing \"SM

2条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-08 23:17

    Call this method where you want to send Sms

    private String SimState = "";
    private String address = ""; // Recipient Phone Number
    private String message = ""; // Message Body
    
    private void sendSms() {
        if (isSimExists()) {
            try {
                String SENT = "SMS_SENT";
    
                PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0);
    
                registerReceiver(new BroadcastReceiver() {
                    @Override
                    public void onReceive(Context arg0, Intent arg1) {
                        int resultCode = getResultCode();
                        switch (resultCode) {
                            case Activity.RESULT_OK:
                                Toast.makeText(getBaseContext(), "SMS sent", Toast.LENGTH_LONG).show();
                                break;
                            case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                                Toast.makeText(getBaseContext(), "Generic failure", Toast.LENGTH_LONG).show();
                                break;
                            case SmsManager.RESULT_ERROR_NO_SERVICE:
                                Toast.makeText(getBaseContext(), "No service", Toast.LENGTH_LONG).show();
                                break;
                            case SmsManager.RESULT_ERROR_NULL_PDU:
                                Toast.makeText(getBaseContext(), "Null PDU", Toast.LENGTH_LONG).show();
                                break;
                            case SmsManager.RESULT_ERROR_RADIO_OFF:
                                Toast.makeText(getBaseContext(), "Radio off", Toast.LENGTH_LONG).show();
                                break;
                        }
                    }
                }, new IntentFilter(SENT));
    
                SmsManager smsMgr = SmsManager.getDefault();
                smsMgr.sendTextMessage(address, null, message, sentPI, null);
            } catch (Exception e) {
                Toast.makeText(this, e.getMessage() + "!\n" + "Failed to send SMS", Toast.LENGTH_LONG).show();
                e.printStackTrace();
            }
        } else {
            Toast.makeText(this, SimState + " " + "Cannot send SMS", Toast.LENGTH_LONG).show();
        }
    }
    
    
    // For receiving sms
    
    class SMSReceiver extends BroadcastReceiver {
        private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
    
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent != null && intent.getAction() != null && ACTION.compareToIgnoreCase(intent.getAction()) == 0) {
                // Sms Received Your code here
            }
        }
    }
    

    Note: You have to specify android.permission.SEND_SMS and android.permission.RECEIVE_SMS permissions in manifest file and also the receiver

        
                
                    
                
            
    

    AndroidManifest.xml

    
    
    
        
        
        
            
                
                    
    
                    
                
            
            
             
        
    
    
    

提交回复
热议问题