Android之短信广播接收内容
以下是短信广播接收内容步骤:
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); } }