歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android發送短信以及監聽發送狀態

自定義ACTION常數,作為廣播的Intent Filter識別常數
  1. private String SMS_SEND_ACTIOIN = "SMS_SEND_ACTIOIN";  
  2. private String SMS_DELIVERED_ACTION = "SMS_DELIVERED_ACTION";  

其中,SMS_SEND_ACTIOIN 為發送成功接收到的回復;SMS_DELIVERED_ACTION 是短信接受者接受到短信的回復;

根據運營商的不同,SMS_DELIVERED_ACTION 回復與否也不同。可以親自試驗下。 

自定義mServiceReceiver覆蓋BroadcastReceiver聆聽短信狀態信息 

  1. public class MyServiceReceiver extends BroadcastReceiver {  
  2.   @Override  
  3.   public void onReceive(Context context, Intent intent) {  
  4.     // TODO Auto-generated method stub   
  5.    try {  
  6.     /* Android.content.BroadcastReceiver.getResultCode()方法 */  
  7.     switch (getResultCode()) {  
  8.     case Activity.RESULT_OK:  
  9.      /* 發送短信成功 */  
  10.      Log.d("lmn", sendNums  
  11.        + "----發送短信成功---------------------------");  
  12.      break;  
  13.     case SmsManager.RESULT_ERROR_GENERIC_FAILURE:  
  14.      /* 發送短信失敗 */  
  15.     case SmsManager.RESULT_ERROR_RADIO_OFF:  
  16.     case SmsManager.RESULT_ERROR_NULL_PDU:  
  17.     default:  
  18.      Log.d("lmn", sendNums  
  19.        + "----發送短信失敗---------------------------");  
  20.      break;  
  21.     }  
  22.    } catch (Exception e) {  
  23.     e.getStackTrace();  
  24.    }  
  25.   }  
  26.  }  

在oncreate中注冊廣播事件:

  1. /* 自定義IntentFilter為SENT_SMS_ACTIOIN Receiver */  
  2. IntentFilter mFilter01;  
  3. mFilter01 = new IntentFilter(SMS_SEND_ACTIOIN);  
  4. mReceiver01 = new MyServiceReceiver();  
  5. registerReceiver(mReceiver01, mFilter01);  
  6.   
  7. /* 自定義IntentFilter為DELIVERED_SMS_ACTION Receiver */  
  8. mFilter01 = new IntentFilter(SMS_DELIVERED_ACTION);  
  9. mReceiver02 = new MyServiceReceiver();  
  10. registerReceiver(mReceiver02, mFilter01);  

同時在 onDestroy 中取消:

  1. /* 取消注冊自定義Receiver */  
  2.     if (mReceiver01 != null && mReceiver02 != null) {  
  3.         unregisterReceiver(mReceiver01);  
  4.         unregisterReceiver(mReceiver02);  
  5.     }  

發送短信:

  1. SmsManager smsManager = SmsManager.getDefault();  
 
  1. /* 創建自定義Action常數的Intent(給PendingIntent參數之用) */  
  2. Intent itSend = new Intent(SMS_SEND_ACTIOIN);  
  3. itSend.putExtras(b);  
  4. /* sentIntent參數為傳送後接受的廣播信息PendingIntent */  
  5. PendingIntent mSendPI = PendingIntent.getBroadcast(  
  6. getApplicationContext(),  
  7. (int) System.currentTimeMillis(), itSend,  
  8. PendingIntent.FLAG_UPDATE_CURRENT);  
 
  1. Intent itDeliver = new Intent(SMS_DELIVERED_ACTION);  
 
  1. itDeliver.putExtras(b);                   
 
  1. /* deliveryIntent參數為送達後接受的廣播信息PendingIntent */  
  2. PendingIntent mDeliverPI = PendingIntent.getBroadcast(  
  3. getApplicationContext(),  
  4. (int) System.currentTimeMillis(), itDeliver,  
  5. PendingIntent.FLAG_UPDATE_CURRENT);  
  6. // 發送短信  
 
  1. smsManager.sendTextMessage(sendNum, null, strMessage,  
  2. mSendPI, mDeliverPI);  
Copyright © Linux教程網 All Rights Reserved