广播接收者(BroadcastReceiver)用于已读接收广播Intent,而广播Intent的发送是通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()或者Context.sendStickyBroadcast()来实现的。
???????? 广播接收器只能接收广播,对广播的通知所出反应。
???????? 广播接收器没有用户界面,但是他们可以为他们接收到信息启动一个Actvity,或者他们可以使用NotificationManager来通知用户
?
订阅感兴趣的广播Intent
1.??????使用代码进行订阅
?
IntentFilter filter = new IntentFilter(“android.provider.Telephony.SMS_RECEIVED”);IncomingSMSReceiver receiver = new IncomingSMSReceiver();registerReceiver(receiver ,filter);
?
2.??????在AndroidManifest.xml中进行订阅
<receiver android:name=”.IncomingSMSReceiver”> <intent-filter> <action android:name=”android.provider.Telephony.SMS-RECEIVER”/> <intent-filter></receiver>?
?
一个BroadcatReceiver对象的生命周期不超过5s,所以在BroadcastReceiver不能做一些超时的操作,如果需要完成一项比较耗时的工作,可以通过发送Intent给activity或service来完成
?
------------------------------------------
?? 从sdk文档中找出插拔卡的Broadcast Action
?
插入sd卡状态变化
拔出sd卡状态变化
?
但是在使用过程中一直无法接收插拔卡事件,后来在网上发现需要添加dataScheme属性
<receiver android:name=".service.MediaMountReceiver"> <intent-filter> <action android:name="android.intent.action.MEDIA_MOUNTED"/> <action android:name="android.intent.action.MEDIA_UNMOUNTED"/> <data android:scheme="file"/> </intent-filter> </receiver>
?
引用:该文章讲解intentFilter挺好的
http://blog.csdn.net/silenceburn/article/details/6083375