安卓短信管理器无法发送短信

9

我是Android新手。我想在点击发送按钮后发送短信。

  1. 首先,我使用了短信管理器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. 在 android_manifest.xml 中设置发送短信的权限

我没有收到任何错误提示,但是短信无法发送。如果您知道如何解决,请告诉我。

感谢阅读。


你是从真实设备还是模拟器发送短信? - Piyush
仅使用模拟器。 - Anand
1
你应该使用真实设备发送消息,而不是模拟器。 - Piyush
4个回答

23

为了完善@Android Fanatic的回答:

如果文本过长,消息不会消失,您必须尊重编码的最大长度。

更多信息可以在这里找到。

我更喜欢这种方法。

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

3
谢谢,对长短信的文本很有用。+1 - class Android

7
此外,如果短信长度超过160个英文字符或70个16位字符,则短信管理器将不会发送消息。请尝试发送一些短小的英文文本以查看是否符合此情况。(您可以发送多个部分的短信来发送长文本)。

1
String incomming = "9876543210";
android.telephony.SmsManager sms=android.telephony.SmsManager.getDefault();
sms.sendTextMessage(incomming, null,"Here Is Sms", null, null);

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----");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接