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

本文详细介绍了如何在项目中监听外部存储设备的状态变化,包括SD卡的插入与移除、连接PC的大容量存储模式以及退出模式等不同场景下的广播接收。通过配置特定的Intent过滤器,实现对外部存储设备状态变化的实时监听,并提供了代码实现示例。

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

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






















对照不同状态下的广播

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 { 
        }  
    }  
}; 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值