当前位置: 代码迷 >> Android >> android开发:接收sd插拔播音
  详细解决方案

android开发:接收sd插拔播音

热度:19   发布时间:2016-05-01 14:05:03.0
android开发:接收sd插拔广播

广播接收者(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不能做一些超时的操作,如果需要完成一项比较耗时的工作,可以通过发送Intentactivityservice来完成

?

------------------------------------------

?? 从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

  相关解决方案