Android之傳送簡訊的兩種方式

來源:互聯網
上載者:User

標籤:

第一:調用系統簡訊介面直接傳送簡訊;主要代碼如下: 

 

/**     * 直接調用簡訊介面發簡訊     *      * @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" /> 

傳送簡訊的參數說明: 

  smsManager.sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent)

-- destinationAddress:目標電話號碼 
-- scAddress:簡訊中心號碼,測試可以不填 
-- text: 簡訊內容 
-- sentIntent:發送 -->中國移動 --> 中國移動發送失敗 --> 返回傳送成功或失敗訊號 --> 後續處理   即,這個意圖封裝了簡訊發送狀態的資訊 
-- deliveryIntent: 發送 -->中國移動 --> 中國移動發送成功 --> 返回對方是否收到這個資訊 --> 後續處理  即:這個意圖封裝了簡訊是否被對方收到的狀態資訊(供應商已經發送成功,但是對方沒有收到)。


源碼:http://download.csdn.net/detail/zyw_java/8917057

 

Android之傳送簡訊的兩種方式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.