其他分享
首页 > 其他分享> > (转)Android之发送短信的两种方式

(转)Android之发送短信的两种方式

作者:互联网

https://www.cnblogs.com/dongweiq/p/4866022.html

 

SMS涉及的主要类SmsManager

 

实现SMS主要用到SmsManager类,该类继承自java.lang.Object类,下面我们介绍一下该类的主要成员。

 

公有方法:

 

 

常量:

 

 

 

 

 

第一:调用系统短信接口直接发送短信;主要代码如下: 

 

/**
     * 直接调用短信接口发短信
     * 
     * @param phoneNumber
     * @param message
     */
    public void sendSMS(String phoneNumber, String message) {
        // 获取短信管理器
        android.telephony.SmsManager smsManager = android.telephony.SmsManager
                .getDefault();
        // 拆分短信内容(手机短信长度限制)
        List<String> divideContents = smsManager.divideMessage(message);
        for (String text : divideContents) {
            smsManager.sendTextMessage(phoneNumber, null, text, sentPI,
                    deliverPI);
        }
    }

 

第二:调起系统发短信功能;主要代码如下: 

 

/**
     * 调起系统发短信功能
     * @param phoneNumber
     * @param message
     */
    public void doSendSMSTo(String phoneNumber,String message){
        if(PhoneNumberUtils.isGlobalPhoneNumber(phoneNumber)){
            Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:"+phoneNumber));          
            intent.putExtra("sms_body", message);          
            startActivity(intent);
        }
    }

 

下面来主要讲解第一种方法,第一种方法可以监控发送状态和对方接收状态使用的比较多。

 

处理返回的状态代码如下: 

 

//处理返回的发送状态 
        String SENT_SMS_ACTION = "SENT_SMS_ACTION";
        Intent sentIntent = new Intent(SENT_SMS_ACTION);
        sentPI= PendingIntent.getBroadcast(this, 0, sentIntent,
                0);
        // register the Broadcast Receivers
        this.registerReceiver(new BroadcastReceiver() {
            @Override
            public void onReceive(Context _context, Intent _intent) {
                switch (getResultCode()) {
                case Activity.RESULT_OK:
                    Toast.makeText(MainActivity.this,
                "短信发送成功", Toast.LENGTH_SHORT)
                .show();
                break;
                case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                break;
                case SmsManager.RESULT_ERROR_RADIO_OFF:
                break;
                case SmsManager.RESULT_ERROR_NULL_PDU:
                break;
                }
            }
        }, new IntentFilter(SENT_SMS_ACTION));

        
        //处理返回的接收状态 
        String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";
        // create the deilverIntent parameter
        Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION);
        deliverPI = PendingIntent.getBroadcast(this, 0,
               deliverIntent, 0);
        this.registerReceiver(new BroadcastReceiver() {
           @Override
           public void onReceive(Context _context, Intent _intent) {
               Toast.makeText(MainActivity.this,
          "收信人已经成功接收", Toast.LENGTH_SHORT)
          .show();
           }
        }, new IntentFilter(DELIVERED_SMS_ACTION));

 

别忘了权限的问题: 
<uses-permission android:name="android.permission.SEND_SMS" /> 

 


源码下载地址:http://download.csdn.net/detail/zyw_java/8917057

标签:短信,String,SMS,发送,RESULT,ERROR,Android,public,PendingIntent
来源: https://www.cnblogs.com/NuoChong/p/10418812.html