SMS实例--发送后**Receiver没有触发问题

当设备接收到一条新的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);

在SMSReceiver中代码:

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());
		}
	}

}
千万别忘了加权限··············

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值