Android监听外部存储设备的状态(SD卡、U盘等等)

最近在项目中需要对外部存储设备的状态进行监听,所以整理了此笔记,以便日后查看。

外部存储设备的状态变化时发出的广播

对比不同状态下的广播

1. 插入外部SD卡时:

2. 移除外部SD卡时:

3. 连接PC进入USB大容量存储模式时:

4. 连接PC退出USB大容量存储模式时:

代码实现监听

public void startListen()
{
    IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);
    intentFilter.setPriority(1000);
    intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
    intentFilter.addAction(Intent.ACTION_MEDIA_REMOVED);
    intentFilter.addAction(Intent.ACTION_MEDIA_SHARED);
    intentFilter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL);
    intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_STARTED);
    intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
    intentFilter.addAction(Intent.ACTION_MEDIA_CHECKING);
    intentFilter.addAction(Intent.ACTION_MEDIA_EJECT);
    intentFilter.addAction(Intent.ACTION_MEDIA_NOFS);
    intentFilter.addAction(Intent.ACTION_MEDIA_BUTTON);
    intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
    intentFilter.addDataScheme("file");
    registerReceiver(broadcastRec, intentFilter);
}

private final BroadcastReceiver broadcastRec = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        Log.d("MediaAction", action);
        if (action.equals("android.intent.action.MEDIA_MOUNTED"))
        {
        	//todo
        } else if (action.equals(Intent.ACTION_MEDIA_UNMOUNTED))
        {
        	//todo
        }else if (action.equals(Intent.ACTION_MEDIA_SCANNER_STARTED)){
        }else if (action.equals(Intent.ACTION_MEDIA_SCANNER_FINISHED)){
        }else if (action.equals(Intent.ACTION_MEDIA_SHARED)){
        }else {
        }
    }
}; 
时间: 2024-12-06 17:46:17

Android监听外部存储设备的状态(SD卡、U盘等等)的相关文章

狂刷Android范例之3:读写外部存储设备

狂刷Android范例之3:读写外部存储设备 说明 狂刷Android范例系列文章开张了.每篇学习一个Android范例,将一个范例单独生成一个可运行的app,并对重点源代码进行简要分析.然后提供打包好的源代码下载. 功能 提供一个经典范例,监控Android外部存储设备状态,对公用目录,app私有目录进行读写操作,并展示在app界面上. 代码包在此,无需下载分: http://download.csdn.net/detail/logicteamleader/8790109 来源 ReadAss

android 监听网络状态的变化及实战

android 监听网络状态的变化及实际应用 转载请注明博客地址:http://blog.csdn.net/gdutxiaoxu/article/details/53008266 平时我们在请求错误的情况下,通常会进行处理一下,一般来说,主要分为两方面的错误 - 没有网络的错误 - 在有网络的情况下,我们客户端的错误或者服务器端的错误 今天这篇博客主要阐述以下问题 怎样监听网络状态的变化,包括是否打开WiFi,否打开数据网络,当前连接的网络是否可用 网络没有打开情况下的处理,如弹出对话框,跳转到

Android存储和加载本地文件(外部存储设备)

有时候应用需要将数据写入到设备的外部存储上.列如,需要同其他应用或用户共享音乐.图片或者网络下载资料时,保存在外部设备的数据共享起来要比较方便.而且,外部设备通常具有更大的存储空间. 我们可以通过android.os.Environment.getExternalStorageDirectory()方法获取sdCard的路径.再在此路径下创建一个MyFiles的文件,将数据保存在MyFiles文件夹下. 下面就展示如何在外部存储设备中存储和加载本地文件: 1.创建一个名为 DataStorage

Android监听底层事件的机制总结

研究了一上午的Android监听底层事件的机制,总结如下: 内核驱动监听硬件设备的状态和行为,通过uevent机制发送事件给用户空间: 用户空间通过UeventObserver来监听来自内核的uevent,进行处理. 内核空间和用户空间的通信使用了netlink机制. 参考的文章有: Android使用UeventObserver: http://blog.csdn.net/lushengchu_luis/article/details/9466405 http://blog.csdn.net/

Android 监听APP进入后台或切换到前台方案对比

在我们开发的过程中,经常会遇到需要我们判断app进入后台,或者切换到前台的情况.比如我们想判断app切换到前台时,显示一个解锁界面,要求用户输入解锁密码才能继续进行操作:我们想判断app切换到后台,记录一下log:或者当用户切换回前台时,我们想刷新一下页面的数据等等...... android里面监听app前后台的方案很多(这还是得归根于安卓提供了丰富的api和强大的架构支撑,呵呵~),比如可以通过ActivityManager提供的getRunningAppProcesses()获取系统当前运

Android 监听锁屏/开屏事件

1. 两种方案 (1) 监听BroadcastReceiver (2)获取PowerManager事件 2.  BroadcastReceiver 2.1. 事件 总共有3个事件: Intent.ACTION_SCREEN_ON : 屏幕点亮 Intent.ACTION_SCREEN_OFF :屏幕关闭 Intent.ACTION_USER_PRESENT: 用户解锁 2.2. 权限 监听用户解锁需要在AndroidManifest中注册权限 <uses-permission android:n

Android 监听文件夹

在一次Android和pc端的通讯过程中,我们放弃了adb forward来实现socket通讯.而是使用adb push文件,我监听文件夹... 都学习一下很有必要 本篇简单Android监听文件夹的方式FileObserver. FileObserver简介 Android.os包下的FileObserver类是一个用于监听文件访问.创建.修改.删除.移动等操作的监听器,基于Linux的INotify. FileObserver是个抽象类,必须继承它才能使用.每个FileObserver对象

Android 监听ListView、GridView滑动到底部

// 监听listview滚到最底部mIndexList.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { switch (scrollState) { // 当不滚动时 case OnScrollListener.SCROLL_STATE_IDLE: // 判断滚动到底部 if (view.get

Android监听ScrollView滑动到顶端和底部

MainActivity如下: package cn.testscrollview; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.ScrollView; import android.app.Activity; /** * Demo描述: * 监