以下是簡訊廣播接收內容步驟:
1. 常見一個接收類,此類繼承 BroadcastReceiver ,需要建立一個action;
2. 需要在AndroidManifest中註冊這個接收類(關鍵字receiver)並為action綁定,最後註冊簡訊接收許可權
<receiver android:name="EX06_01_SMSreceiver"> //繼承BroadcastReceiver 的類名
<!-- 設定要捕捉的訊息名稱為provider中Telephony.SMS_RECEIVED --> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> //在BroadcastReceiver 建立的action </intent-filter> </receiver> </application>
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
3. 在繼承BroadcastReceiver 的類中,複寫的onReceive方法的操作
/* 判斷傳來的Intent中的Action類型*/
if (intent.getAction().equals(mACTION)) { /*建立字串變數sb*/
StringBuilder sb = new StringBuilder();
/*接收由Intent傳來的資料*/
Bundle bundle = intent.getExtras();
/*判斷Intent有無資料*/
if (bundle != null)
{
/* pdus為 android內建簡訊參數 identifier
* 通過bundle.get("")返回一包含pdus對象ン*/
Object[] myOBJpdus = (Object[]) bundle.get("pdus");
/*構建簡訊對象array,並根據收到的對象長度來定義array的大小*/
SmsMessage[] messages = new SmsMessage[myOBJpdus.length];
for (int i = 0; i<myOBJpdus.length; i++) {
messages[i] = SmsMessage.createFromPdu ((byte[]) myOBJpdus[i]); }
/* 把傳來的簡訊合并定義在stringbuffer中 */
for (SmsMessage currentMessage : messages) {
sb.append("接收到來自:\n");
/* 發送人電話號碼 */
sb.append(currentMessage.getDisplayOriginatingAddress());
sb.append("\n------傳來的簡訊------\n");
/* 取得傳來的資訊*/
sb.append(currentMessage.getDisplayMessageBody()); } }
/* 以(Toase)形式展示 */
Toast.makeText(context, sb.toString(), Toast.LENGTH_LONG).show();
Intent i = new Intent(context, EX06_01.class);
/*使指定Activity顯示在螢幕棧的最前方*/
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i); } }