Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> Android SMS短信服務相關概念簡述

Android SMS短信服務相關概念簡述

編輯:高級開發

經常關注我們51CTO技術文章的朋友們應該會記得我們為大家介紹的一篇關於android短信發送功能實現的文章。大家可以通過它具體了解其中短信功能應用。那麼今天,大家可以從這裡學到的有關android SMS短信服務的一些基本知識。

  • android安裝卸載程序具體操作方法解析
  • android Shell命令相關內容講解
  • android數據傳遞相關內容概述
  • android單線程模型相關概念詳解
  • android對話框相關操作技巧講解

許多新的應用程序會考慮使用SMS作為數據分發平台。現實一點的場景:電影點播系統要求用戶發送一定格式的短信來進行自動點播。現在越來越多的應用采用SMS作為與用戶進行數據交換的方式。現在讓我們來看一下我們如何在android平台上來構造這種形式的應用。

android API支持開發可以發送和接收SMS消息的應用程序。目前我們開發過程中使用的Android模擬器還不支持發送SMS,但它可以接收SMS。現在我們來探索一下android對SMS的支持,我們將會構建一個小小的應用程序來監聽移動設備(或模擬器)上接收到的SMS消息,並將它顯示出來。

我們來定義一個Intent接收器來處理android SMS短信服務接收事件:

  1. package com.wissen.sms.receiver;
  2. /**
  3. * 該類將在SMS接收的時候被調用
  4. */
  5. public class SMSReceiver extends BroadcastReceiver {
  6. @Override
  7. public void onReceive(Context context, Intent intent) {
  8. // TODO
  9. }
  10. }
  11. package com.wissen.sms.receiver;
  12. /**
  13. * 該類將在SMS接收的時候被調用
  14. */
  15. public class SMSReceiver extends BroadcastReceiver {
  16. @Override
  17. public void onReceive(Context context, Intent intent) {
  18. // TODO
  19. }
  20. }

我們需要對這個Intent接收器進行配置以使它能獲取Android SMS短信服務接收事件,‘ android.provider.Telephony.SMS_RECEIVED’這個事件狀態表示了SMS已被接收。我們可以在androidManifest.XML中進行如下配置:

  1. < receiver android:name=”.receiver.SMSReceiver”
    android:enabled=”true”>
  2. < intent-filter>
  3. < action android:name=”android.provider.Telephony.
    SMS_RECEIVED” />
  4. < /intent-filter>
  5. < /receiver>
  6. < receiver android:name=”.receiver.SMSReceiver”
    android:enabled=”true”>
  7. < intent-filter>
  8. < action android:name=”android.provider.Telephony.
    SMS_RECEIVED” />
  9. < /intent-filter>
  10. < /receiver>

為了能讓我們的應用能接收Android SMS短信服務,我們得先進行權限的指定,可以在androidManifest.XML中如下配置:

  1. < uses-permission android:name=”android.
    permission.RECEIVE_SMS”>
  2. < /uses-permission>
  3. < uses-permission android:name=”android.
    permission.RECEIVE_SMS”>
  4. < /uses-permission>

現在,我們的Intent接收器就可以在android設備接收到SMS的時候被調用了,余下的事情就是去獲取和顯示接收到的SMS消息文本了:

  1. public void onReceive(Context context, Intent intent) {
  2. Bundle bundle = intent.getExtras();
  3. Object messages[] = (Object[]) bundle.get(”pdus”);
  4. SmsMessage smsMessage[] = new SmsMessage[messages.length];
  5. for (int n = 0; n &lt; messages.length; n++) {
  6. smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
  7. }
  8. // show first message
  9. Toast toast = Toast.makeText(context, “Received SMS: ” +
    smsMessage[0].getMessageBody(), Toast.LENGTH_LONG);
  10. toast.show();
  11. }
  12. public void onReceive(Context context, Intent intent) {
  13. Bundle bundle = intent.getExtras();
  14. Object messages[] = (Object[]) bundle.get(”pdus”);
  15. SmsMessage smsMessage[] = new SmsMessage[messages.length];
  16. for (int n = 0; n &lt; messages.length; n++) {
  17. smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);
  18. }
  19. // show first message
  20. Toast toast = Toast.makeText(context, “Received SMS: ” +
    smsMessage[0].getMessageBody(), Toast.LENGTH_LONG);
  21. toast.show();
  22. }

Android設備接收到的SMS是以pdu形式的(protocol description unit)。android.telephony.gsm.SmsMessage這個類可以儲存SMS的相關信息,我們也可以從接收到的pdu中創建新的SmsMessage實例,Toast界面組件可以以系統通知的形式來顯示接收到的SMS消息文本。

現在讓我們來在模擬器中運行這個應用程序,以及發送Android SMS短信服務消息到這個模擬器上。我們可以在eclipse的android插件所提供的DDMS視圖(Dalvik Debug Monitor Service)中發送SMS消息到模擬器上(在’Emulator Control’面板中;另外需要指定電話電話號碼,不過可以是任意的)

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved