Home 主頁 Service 服務計畫 Android App 手機程式 Expertise 專業領域 Blog 博客 Download 下載 FAQ 網頁製作常見問題 Support 支援 Links 友情連結 Contact Us 聯絡我們

17 - Boardcast Receiver

發佈: 09-30-2011

分類: Android 開發教學

第十七課:Boardcast Receiver

Boardcast Receiver是android的4大主要元件之一。它很重要,但不一定經常用到。Boardcast Receiver接收系統的事件廣播,讓程序也能按你的意思去享應一些系統上的事件,如開機完成,收到電話或SMS等。由於它很特別,不大可能找到替代品。Boardcast Receiver很易理解,它主要工作就是處理時件。在AndroidManifest中,我們要為個別的BroadcastReceiver加入intent filter。系統會按Intent filter,把相關的intent傳到這boardcast receiver。同時,我們可以加入多個BroadcastReceiver。本例是一個享應接收SMS的應用。

一個android的app中,不一定要有activity。為方便理解,本例中只有一個receiver。一般情況下,我們有不同的activity跟BroadcastReceiver一起運作。

新增一個名為SMSReceiver的project,但不要生成默認的activity。打開AndroidManifest.xml,加上我們用到的android.permission.RECEIVE_SMS權限。我們將會新增一個SMSReceiver的BroadcastReceiver,因此大可先把它的intent filter也一同加到AndroidManifest.xml中。


 
   
    
   

新增一個名為SMSReceiver的class。由於它是個boardcast receiver,現在直接entends BroadcastReceiver。打開SMSReceiver,onReceive(Context, Intent)已自動生成。我們將在onReceive中處理傳來的intent。把以下的幾句加到onReceive中:

public void onReceive(Context context, Intent intent) {
  if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED"))
  { 
    Toast.makeText(context, "SMS received!", Toast.LENGTH_LONG).show();
  }			
}

收到intent時,把intent的action拿出來,看看是不是我們想要的SMS_RECEIVED。如果正確,便顯示出來。

接著,運行模擬器測試。把apk安裝好後,打開command prompt,用telnet模擬收到SMS,telnet到localhost:5554。

c:\telnet localhost 5554

把以下命令輸入到telnet的介面(9999999是電話號碼,hello則是SMS的內容):

sms send 99999999 hello

這時,模擬器便會收到SMS,boardcast receiver也會收到這intent。

Download: SMSReceiver

訪客: Copyright ©2011 KF Software House 版權所有 | 網站地圖