sendTextMessage(phoneNumber, null, message, null, null); always returns success even when message not sent

前端 未结 3 951
走了就别回头了
走了就别回头了 2021-01-22 06:55

I tried sms activity using this link but the problem is that it always gives \"message sent\" how to know if the message is really sent!

here is code

try         


        
3条回答
  •  深忆病人
    2021-01-22 07:10

    Try this:

    Add this inside manifest.xml:

    
    

    main.xml:

    
    
             
        
             
                  
        

    MainActivity:

    public class SMS extends Activity 
    {
        Button  btnSendSMS;
        EditText txtPhoneNo;
        EditText txtMessage;
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);        
    
            btnSendSMS = (Button ) findViewById(R.id.btnSendSMS);
            txtPhoneNo = (EditText) findViewById(R.id.txtPhoneNo);
            txtMessage = (EditText) findViewById(R.id.txtMessage);
    
            btnSendSMS.setOnClickListener(new View .OnClickListener() 
            {
                public void onClick(View  v) 
                {                
                    String  phoneNo = txtPhoneNo.getText().toString();
                    String  message = txtMessage.getText().toString();                 
                    if (phoneNo.length()>0 && message.length()>0)                
                        sendSMS(phoneNo, message);                
                    else
                        Toast.makeText(getBaseContext(), 
                            "Please enter both phone number and message.", 
                            Toast.LENGTH_SHORT).show();
                }
            });        
        }    
    }
    

    sendSMS() function:

    public class SMS extends Activity 
    {
        //...
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
            //...
        }
    
        //---sends an SMS message to another device---
        private void sendSMS(String  phoneNumber, String  message)
        {        
            PendingIntent pi = PendingIntent.getActivity(this, 0,
                new Intent(this, SMS.class), 0);                
            SmsManager sms = SmsManager.getDefault();
            sms.sendTextMessage(phoneNumber, null, message, pi, null);        
        }    
    }
    

    //---sends an SMS message to another device---:

    private 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);        
        }
    

    Code source: http://mobiforge.com/developing/story/sms-messaging-android

提交回复
热议问题