歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android發送短信以及監聽發送狀態

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

日期:2017/3/1 11:09:58   编辑:Linux編程
自定義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. /* 自定義IntentFilter為DELIVERED_SMS_ACTION Receiver */
  7. mFilter01 = new IntentFilter(SMS_DELIVERED_ACTION);
  8. mReceiver02 = new MyServiceReceiver();
  9. 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