android 中調用介面傳送簡訊

來源:互聯網
上載者:User

標籤:android   des   blog   http   java   strong   

android中可以通過兩種方式傳送簡訊 

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

Java代碼  
  1. //直接調用簡訊介面發簡訊  
  2. SmsManager smsManager = SmsManager.getDefault();  
  3. List<String> divideContents = smsManager.divideMessage(content);    
  4. for (String text : divideContents) {    
  5.     smsManager.sendTextMessage("150xxxxxxxx", null, text, sentPI, deliverPI);    
  6. }  



第二:調起系統發簡訊功能;主要代碼如下: 

Java代碼  
  1. Uri uri = Uri.parse("smsto:10010");            
  2. Intent it = new Intent(Intent.ACTION_SENDTO, uri);            
  3. it.putExtra("sms_body", "102");            
  4. activity.startActivity(it);  




這裡主要講解第一種方法,其中大部分資訊來源於互連網
: 

1.擷取簡訊管理器 

Java代碼  
  1. SmsManager smsManager = SmsManager.getDefault();  



2.拆分簡訊內容(手機簡訊長度限制) 

Java代碼  
  1. List<String> divideContents = smsManager.divideMessage(content);  



3.發送拆分後的內容 

Java代碼  
  1. List<String> divideContents = smsManager.divideMessage(content);    
  2. for (String text : divideContents) {    
  3.     smsManager.sendTextMessage("150xxxxxxxx", null, text, sentPI, deliverPI);    
  4. }  



4.處理返回的發送狀態 

Java代碼  
  1. String SENT_SMS_ACTION = "SENT_SMS_ACTION";  
  2. Intent sentIntent = new Intent(SENT_SMS_ACTION);  
  3. PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, sentIntent,  
  4.         0);  
  5. // register the Broadcast Receivers  
  6. context.registerReceiver(new BroadcastReceiver() {  
  7.     @Override  
  8.     public void onReceive(Context _context, Intent _intent) {  
  9.         switch (getResultCode()) {  
  10.         case Activity.RESULT_OK:  
  11.             Toast.makeText(context,  
  12.         "簡訊發送成功", Toast.LENGTH_SHORT)  
  13.         .show();  
  14.         break;  
  15.         case SmsManager.RESULT_ERROR_GENERIC_FAILURE:  
  16.         break;  
  17.         case SmsManager.RESULT_ERROR_RADIO_OFF:  
  18.         break;  
  19.         case SmsManager.RESULT_ERROR_NULL_PDU:  
  20.         break;  
  21.         }  
  22.     }  
  23. }, new IntentFilter(SENT_SMS_ACTION));  



5.處理返回的接收狀態 

Java代碼  
  1. String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";  
  2. // create the deilverIntent parameter  
  3. Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION);  
  4. PendingIntent deliverPI = PendingIntent.getBroadcast(context, 0,  
  5.        deliverIntent, 0);  
  6. context.registerReceiver(new BroadcastReceiver() {  
  7.    @Override  
  8.    public void onReceive(Context _context, Intent _intent) {  
  9.        Toast.makeText(context,  
  10.   "收信人已經成功接收", Toast.LENGTH_SHORT)  
  11.   .show();  
  12.    }  
  13. }, new IntentFilter(DELIVERED_SMS_ACTION));  



傳送簡訊的參數說明 

Java代碼  
  1. smsManager.sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent)  


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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.