Android sms manager not sending sms
Asked Answered
G

4

9

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

  1. first i have used sms manager api.
package com.example.smsproject;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;`enter code here`
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Page2Activity extends Activity {

  Button button;
  EditText textPhoneNo;
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);

      button = (Button) findViewById(R.id.button1);
      textPhoneNo = (EditText) findViewById(R.id.mobilenumber);

      button.setOnClickListener(new OnClickListener() {

          @Override

      public void onClick(View v){

      //String phoneNo = textPhoneNo.getText().toString();
      String phoneNo = "tel:xxxxxxxxxx";
      String messageText = "SMS FROM ANDROID";
      try {
          SmsManager smsManager = SmsManager.getDefault();
          smsManager.sendTextMessage(phoneNo, null, messageText, null, null);
          Toast.makeText(getApplicationContext(), "SMS Sent Successfully!",
                      Toast.LENGTH_LONG).show();
      }catch (Exception e){

          Toast.makeText(getApplicationContext(),
                  "SMS failed, please try again later ! ",
                  Toast.LENGTH_LONG).show();
          e.printStackTrace();

      }

          }

      });

  }

}
  1. set send_sms permission on android_manifest.xml

i got zero errors but sms not sending. If you have know answer.

please let me know, thanks for reading.

Gavrilla answered 16/9, 2013 at 12:46 Comment(3)
Are you sending SMS from real device or Emulator?Abbasid
using Emulator only..Gavrilla
You should send message using real device not with Emulator...Abbasid
P
23

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);
Pugilism answered 28/1, 2015 at 10:32 Comment(0)
B
7

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).

Bags answered 16/5, 2018 at 12:27 Comment(0)
A
1
String incomming = "9876543210";
android.telephony.SmsManager sms=android.telephony.SmsManager.getDefault();
sms.sendTextMessage(incomming, null,"Here Is Sms", null, null);
Acetify answered 16/9, 2013 at 13:0 Comment(0)
S
0
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----");
Sible answered 16/9, 2013 at 13:1 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.