`
liliang1222
  • 浏览: 157467 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android开发:接收sd插拔广播

阅读更多

广播接收者( Broadcast Receiver )用于已读接收广播 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

  • 大小: 36.4 KB
  • 大小: 3.7 KB
  • 大小: 6.5 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics