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

Android短信應用——短信信息實時獲取

我們知道,只需通過代碼就可以讀到收件箱中的短信,發件箱中的短信;但是卻沒辦法在短信發來的瞬間獲取;如果我們在短信發來的一瞬間能得到相應的信息內容,那麼我們就可以依次來展開很多應用了——也就是通過短信去遠程操作一部手機。

如果想實時獲取,就需要調用receiver了,寫一個監聽類,這樣我們就可以實時獲取短息信息了。

還是來看看代碼吧。

首先,我們需要創建一個監聽類SMSBroadcastReceiver,讓他去繼承BroadcastReceiver。

再來初始化一個常量ACTION,並賦短信相關參數值。

  1. Android.provider.Telephony.SMS_RECEIVED  

接著創建onReceive方法。

然後用getAction去監聽手機短信相關動態,利用StringBuffer來保存短信信息。

再然後主要代碼了。

  1. @Override  
  2.     public void onReceive(Context context, Intent intent) {  
  3.         if (intent.getAction().equals(ACTION)) {  
  4.             StringBuffer SMSAddress = new StringBuffer();  
  5.             StringBuffer SMSContent = new StringBuffer();  
  6.             Bundle bundle = intent.getExtras();  
  7.             if (bundle != null) {  
  8.                 Object[] pdusObjects = (Object[]) bundle.get("pdus");  
  9.                 SmsMessage[] messages = new SmsMessage[pdusObjects.length];  
  10.                 for (int i = 0; i < pdusObjects.length; i++) {  
  11.                     messages[i] = SmsMessage  
  12.                             .createFromPdu((byte[]) pdusObjects[i]);  
  13.                 }  
  14.                 for (SmsMessage message : messages) {  
  15.                     SMSAddress.append(message.getDisplayOriginatingAddress());  
  16.                     SMSContent.append(message.getDisplayMessageBody());  
  17.                 }  
  18.             }  
  19.         }  
  20.     }  

代碼中的SMSAddress為發送短信的號碼,SMSContent為短信內容。

要想看到是否成功獲取,最簡單的方法就是把這兩個參數打印出來。

  1. System.out.println("發送號碼:" + SMSAddress + "\n" + "短信內容:"  
  2.                             + SMSContent);  

不過要把他們加入for循環中,因為當新信息發來時,SMSAddress和SMSContent將被替換。

因此如果要是做應用時,也是在for循環中判斷的。

最後要記得在Manifest.xml中注冊監聽器。

  1. <receiver android:name="cn.etzmico.SMSBroadcastReceiver">  
  2.         <intent-filter>  
  3.             <action android:name="android.provider.Telephony.SMS_RECEIVED"></action>  
  4.         </intent-filter>  
  5.     </receiver>  

同時要加上權限。

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

這樣,我們運行程序後,只要有短信接收,SMSAddress和SMSContent就會被賦值。

(System.out後就另當別論了!)

Android短信應用——短信信息實時獲取工程源碼下載地址:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /pub/Android源碼集錦/2011年/10月/Android短信應用——短信信息實時獲取源碼/

Copyright © Linux教程網 All Rights Reserved