分享

Android开发项目当中SD卡的插拔监听广播

 herozhou1314 2012-07-25

 Android的实际开发项目当中难免会遇到SD卡的插拔的监听事件检测,现在我们一起来看下安卓开发当中应用广播的知识,记录下来,以备后用哦。

  1. 如果是单个Activity监听广播,则在Activity的onCreate方法里面,用下面的代码注册广播

  IntentFilter iFilter = new IntentFilter();

  iFilter.addAction(Intent.ACTION_MEDIA_EJECT);

  iFilter.addDataScheme("file");

  registerReceiver(mBroadcastReceiver , iFilter);

  2. 如果是整个程序监听广播,则在Android manifest用下面的方法注册广播

  <receiver android:name=".activities.widget.UsbBroadCastReceiver">

  <intent-filter android:priority="1000">

  <action android:name="android.intent.action.MEDIA_MOUNTED"/>

  <action android:name="android.intent.action.MEDIA_EJECT" />

  <data android:scheme="file"/>

  </intent-filter>

  </receiver>

  3. 如果广播别别的程序截获,导致你无法收到广播,给intent-filter加上一个android:priority="1000"的属性就行,添加位置,参照上面的代码。

  4. 实际项目里面是整个程序监听广播,

  ①Android Manifest的代码如下:

  <receiver android:name=".activities.widget.UsbBroadCastReceiver">

  <intent-filter android:priority="1000">

  <action android:name="android.intent.action.MEDIA_MOUNTED"/>

  <action android:name="android.intent.action.MEDIA_EJECT" />

  <data android:scheme="file"/>

  </intent-filter>

  </receiver>

  Android Manifest一定要在intent-filter注意加上<data android:scheme=”file”>,否则无法监听到SD卡插拔广播,如果你在Activity里面用代码注册广播,那一定要加iFilter.addDataScheme("file")

  ②广播的代码如下:

  /**

  * @author Anonymous

  * @createDate 2012-4-9

  * @version v0.5.1

  */

  public class UsbBroadCastReceiver extends BroadcastReceiver {

  @Override

  public void onReceive(Context context, Intent intent) {

  String action = intent.getAction();

  if(action.equals(Intent.ACTION_MEDIA_EJECT)){

  ToastUtil.ToastShort(context, R.string.usb_sdeject);

  }else if(action.equals(Intent.ACTION_MEDIA_MOUNTED)){

  ToastUtil.ToastShort(context, R.string.usb_sdconnect);

  }

  }

  }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多