当设备接收到一条新的SMS消息时,就会广播一个包含了android.provider.Telephony.SMS_RECEIVED动作的Intent。注意,这个动作是一个字符串值
对于应用程序监听SMS Intent广播,首先需要添加RECEIVE_SMS权限。通过在应用程序manifest中添加一个uses-permission,如下面的片段所示:
<uses-permission android:name=”android.permission.RECEIVE_SMS”/>
很重要的必须要有,我就是没加结果纠结了老半天.....
activity中主要代码:
//生成broadcastReceiver对象
smsReceiver = new SMSReceiver();
//生成一个IntentFilter对象
IntentFilter filter = new IntentFilter();
//为IntentFilter对象添加一个action
filter.addAction("android.provider.Telephony.SMS_RECEIVED");
//将smsReceiver对象注册到系统
TestBroadcastReceiver2Activity.this.registerReceiver(smsReceiver, filter);
public class SMSReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub System.out.println("sms receiver"); //接收intent对象中的数据 Bundle bundle = intent.getExtras(); //在bundle对象中有个属性名key:puds 属性值是value:一个object对象数组 Object[] puObj = (Object[])bundle.get("pdus"); //创建一个SmsMessage对象的数组 SmsMessage[] messages = new SmsMessage[puObj.length]; //打印长度 System.out.println(messages.length); for (int i = 0; i < puObj.length; i++) { // 使用Object中的对象创建SmsMessage对象 messages[i] = SmsMessage.createFromPdu((byte[])puObj[i]); //开始使用SmsMessage对象中的方法调用消息内容 System.out.println("content: "+messages[i].getDisplayMessageBody()+" address:"+messages[i].getDisplayOriginatingAddress()); } } }千万别忘了加权限··············