Android监听手机sdcard状态


1.注册广播

// 在IntentFilter中选择你要监听的行为  
        IntentFilter intentFilter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED);// sd卡被插入,且已经挂载  
        intentFilter.setPriority(1000);// 设置最高优先级  
        intentFilter.addAction(Intent.ACTION_MEDIA_UNMOUNTED);// sd卡存在,但还没有挂载  
        intentFilter.addAction(Intent.ACTION_MEDIA_REMOVED);// sd卡被移除  
        intentFilter.addAction(Intent.ACTION_MEDIA_SHARED);// sd卡作为 USB大容量存储被共享,挂载被解除  
        intentFilter.addAction(Intent.ACTION_MEDIA_BAD_REMOVAL);// sd卡已经从sd卡插槽拔出,但是挂载点还没解除  
        intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_STARTED);// 开始扫描  
        intentFilter.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);// 扫描完成  
        intentFilter.addDataScheme("file");  
        registerReceiver(broadcastRec, intentFilter);// 注册监听函数  

2.接收广播事件处理

private final BroadcastReceiver broadcastRec = new BroadcastReceiver() {  
        @Override  
        public void onReceive(Context context, Intent intent) {  
            String action = intent.getAction();  
            if (action.equals("android.intent.action.MEDIA_MOUNTED"))// SD  
            // 卡已经成功挂载  
            {  
                imagepath = android.os.Environment.getExternalStorageDirectory();// 你的SD卡路径  
                Toast.makeText(MyService.this, "我的卡已经成功挂载", 0).show();  
            } else if (action.equals("android.intent.action.MEDIA_REMOVED")// 各种未挂载状态  
                    || action.equals("android.intent.action.ACTION_MEDIA_UNMOUNTED")  
                    || action.equals("android.intent.action.ACTION_MEDIA_BAD_REMOVAL")) {  
                imagepath = android.os.Environment.getDataDirectory();// 你的本地路径  
                Toast.makeText(MyService.this, "我的各种未挂载状态", 0).show();  
            }else if (action.equals(Intent.ACTION_MEDIA_SCANNER_STARTED)){//开始扫描  
                Toast.makeText(MyService.this, "开始扫描...", 0).show();  
            }else if (action.equals(Intent.ACTION_MEDIA_SCANNER_FINISHED)){//扫描完成  
                Toast.makeText(MyService.this, "扫描完成...", 0).show();  
            }else if (action.equals(Intent.ACTION_MEDIA_SHARED)){//扩展介质的挂载被解除 (unmount)。因为它已经作为 USB 大容量存储被共享  
                Toast.makeText(MyService.this, " USB 大容量存储被共享...", 0).show();  
            }else {  
                Toast.makeText(MyService.this, "其他状态...", 0).show();  
            }  
            Log.i(TAG, "imagepath---" + imagepath);  
        }  
    }; 

3.取消注册

unregisterReceiver(broadcastRec);//取消注册 


4.需要在AndroidManifest.xml中添加操作SDCard的权限

<!-- 在SDCard中创建与删除文件权限 -->  
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />  
    <!-- 往SDCard写入数据权限 -->  
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  


  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值