Android API : SMS簡訊服務處理

來源:互聯網
上載者:User

許多新的應用程式會考慮使用SMS作為資料分發平台。現實一點的情境:電影點播系統要求使用者發送一定格式的簡訊來進行自動點播。現在越來越多的應用採用SMS作為與使用者進行資料交換的方式。現在讓我們來看一下我們如何在Android平台上來構造這種形式的應用。

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

我們來定義一個Intent接收器來處理SMS接收事件:

Java代碼

package com.wissen.sms.receiver;   /** * 該類將在SMS接收的時候被調用 */ public class SMSReceiver extends BroadcastReceiver {     @Override     public void onReceive(Context context, Intent intent) {        // TODO     } }   

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

Xml代碼

<receiver android:name=”.receiver.SMSReceiver” android:enabled=”true”> <intent-filter> <action android:name=”android.provider.Telephony.SMS_RECEIVED” /> </intent-filter> </receiver>   

為了能讓我們的應用能接收SMS,我們得先進行許可權的指定,可以在AndroidManifest.xml中如下配置:

Xml代碼

<uses-permission android:name=”android.permission.RECEIVE_SMS”></uses-permission> 

現在,我們的Intent接收器就可以在Android裝置接收到SMS的時候被調用了,餘下的事情就是去擷取和顯示接收到的SMS訊息文本了:

Java代碼

public void onReceive(Context context, Intent intent) {         Bundle bundle = intent.getExtras();         Object messages[] = (Object[]) bundle.get(”pdus”);         SmsMessage smsMessage[] = new SmsMessage[messages.length];         for (int n = 0; n < messages.length; n++) {                 smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);        }       // show first message       Toast toast = Toast.makeText(context, “Received SMS: ” + smsMessage[0].getMessageBody(),                Toast.LENGTH_LONG);       toast.show(); }   

Android裝置接收到的SMS是以pdu形式的(protocol description unit)。android.telephony.gsm.SmsMessage這個類可以儲存SMS的相關資訊,我們也可以從接收到的pdu中建立新的SmsMessage執行個體,Toast介面組件可以以系統通知的形式來顯示接收到的SMS訊息文本。

運行程式:

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

 

許多新的應用程式會考慮使用SMS作為資料分發平台。現實一點的情境:電影點播系統要求使用者發送一定格式的簡訊來進行自動點播。現在越來越多的應用採用SMS作為與使用者進行資料交換的方式。現在讓我們來看一下我們如何在Android平台上來構造這種形式的應用。

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

我們來定義一個Intent接收器來處理SMS接收事件:

Java代碼

package com.wissen.sms.receiver;   /** * 該類將在SMS接收的時候被調用 */ public class SMSReceiver extends BroadcastReceiver {     @Override     public void onReceive(Context context, Intent intent) {        // TODO     } }   

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

Xml代碼

<receiver android:name=”.receiver.SMSReceiver” android:enabled=”true”> <intent-filter> <action android:name=”android.provider.Telephony.SMS_RECEIVED” /> </intent-filter> </receiver>   

為了能讓我們的應用能接收SMS,我們得先進行許可權的指定,可以在AndroidManifest.xml中如下配置:

Xml代碼

<uses-permission android:name=”android.permission.RECEIVE_SMS”></uses-permission> 

現在,我們的Intent接收器就可以在Android裝置接收到SMS的時候被調用了,餘下的事情就是去擷取和顯示接收到的SMS訊息文本了:

Java代碼

public void onReceive(Context context, Intent intent) {         Bundle bundle = intent.getExtras();         Object messages[] = (Object[]) bundle.get(”pdus”);         SmsMessage smsMessage[] = new SmsMessage[messages.length];         for (int n = 0; n < messages.length; n++) {                 smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]);        }       // show first message       Toast toast = Toast.makeText(context, “Received SMS: ” + smsMessage[0].getMessageBody(),                Toast.LENGTH_LONG);       toast.show(); }   

Android裝置接收到的SMS是以pdu形式的(protocol description unit)。android.telephony.gsm.SmsMessage這個類可以儲存SMS的相關資訊,我們也可以從接收到的pdu中建立新的SmsMessage執行個體,Toast介面組件可以以系統通知的形式來顯示接收到的SMS訊息文本。

運行程式:

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

聯繫我們

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