以下是短信廣播接收內容步驟:
1. 常見一個接收類,此類繼承 BroadcastReceiver ,需要創建一個action;
2. 需要在AndroidManifest中注冊這個接收類(關鍵字receiver)並為action綁定,最后注冊短信接收權限
<receiver android:name="EX06_01_SMSreceiver"> //繼承BroadcastReceiver 的類名
3. 在繼承BroadcastReceiver 的類中,復寫的onReceive方法的操作
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); } }