Android sms manager not sending sms

前端 未结 5 1741
余生分开走
余生分开走 2020-12-03 15:59

Am new for android . I want send sms after click send button

  1. first i have used sms manager api.
package com.example.smspro         


        
相关标签:
5条回答
  • 2020-12-03 16:31
    Log.d("SMS ready to send", "----FIRST CALL----");
    String number = "111111111111"; //ed1.getText().toString();
    String message =  "Test SMS DATA"; //ed2.getText().toString();
    
    Log.d("SMS ready to send", "----SECOND CALL----"+number);
    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(number, null, message, null, null);
    
    Log.d("SMS ready to send", "----THIRD CALL----");
    
    0 讨论(0)
  • 2020-12-03 16:33

    Use following code to send sms Message, here the error will be shown in Toast

    --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);        
    }
    
    0 讨论(0)
  • 2020-12-03 16:35

    Also SMS Manager doesn't sent messages if the message is longer than 160 for English text, and 70 for 16-bit alphabet text. Try sending small English text to see if it's the case. (You can sent multiple part messages to send long texts).

    0 讨论(0)
  • 2020-12-03 16:36

    To complete @Android Fanatic answer

    If the text is too long, the message does not go away, you have to respect max length depending of encoding.

    More information can be found here.

    I'd prefer this method

    SmsManager sms = SmsManager.getDefault();
    ArrayList<String> parts = sms.divideMessage(message);
    
    ArrayList<PendingIntent> sendList = new ArrayList<>();
    sendList.add(sentPI);
    
    ArrayList<PendingIntent> deliverList = new ArrayList<>();
    deliverList.add(deliveredPI);
    
    sms.sendMultipartTextMessage(phoneNumber, null, parts, sendList, deliverList);
    
    0 讨论(0)
  • 2020-12-03 16:42
    String incomming = "9876543210";
    android.telephony.SmsManager sms=android.telephony.SmsManager.getDefault();
    sms.sendTextMessage(incomming, null,"Here Is Sms", null, null);
    
    0 讨论(0)
提交回复
热议问题