且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Android的短信管理器不发送短信

更新时间:2023-01-06 13:54:28

使用下面的code发送SMS消息,在这里的错误会在吐司显示出来。

   - 发送短信到另一台设备---
私人无效sendSMS(字符串phoneNumber的,字符串消息)
{
    字符串SENT =SMS_SENT;
    字符串DELIVERED =SMS_DELIVERED;

    PendingIntent sentPI = PendingIntent.getBroadcast(此,0,
        新的意图(SENT),0);

    PendingIntent deliveredPI = PendingIntent.getBroadcast(此,0,
        新的意图(交付),0);

    // ---当短信已发送---
    registerReceiver(新BroadcastReceiver的(){
        @覆盖
        公共无效的onReceive(背景为arg0,意图ARG1){
            开关(的getResult code())
            {
                案例Activity.RESULT_OK:
                    Toast.makeText(getBaseContext(),短信发送
                            Toast.LENGTH_SHORT).show();
                    打破;
                案例SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                    Toast.makeText(getBaseContext(),一般故障,
                            Toast.LENGTH_SHORT).show();
                    打破;
                案例SmsManager.RESULT_ERROR_NO_SERVICE:
                    Toast.makeText(getBaseContext(),无服务,
                            Toast.LENGTH_SHORT).show();
                    打破;
                案例SmsManager.RESULT_ERROR_NULL_PDU:
                    Toast.makeText(getBaseContext(),空的PDU,
                            Toast.LENGTH_SHORT).show();
                    打破;
                案例SmsManager.RESULT_ERROR_RADIO_OFF:
                    Toast.makeText(getBaseContext(),无线电关
                            Toast.LENGTH_SHORT).show();
                    打破;
            }
        }
    },新的IntentFilter(发送));

    // ---当SMS已交付---
    registerReceiver(新BroadcastReceiver的(){
        @覆盖
        公共无效的onReceive(背景为arg0,意图ARG1){
            开关(的getResult code())
            {
                案例Activity.RESULT_OK:
                    Toast.makeText(getBaseContext(),SMS递送,
                            Toast.LENGTH_SHORT).show();
                    打破;
                案例Activity.RESULT_CANCELED:
                    Toast.makeText(getBaseContext(),短信未交付,
                            Toast.LENGTH_SHORT).show();
                    打破;
            }
        }
    },新的IntentFilter(交付));

    SmsManager的短信= SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber的,空,消息,sentPI,deliveredPI);
}
 

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.

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