Android的Environment.getExternalStorageState的使用
1.sd状态
sd状态 | 现象描述 | /mnt/sdcard目录是否存在 | canRead返回 | canWrite返回 |
MEDIA_MOUNTED | SD卡正常挂载 | true | true | true |
MEDIA_REMOVED | 无介质 | true | false | false |
MEDIA_UNMOUNTED | 有介质,未挂载,在系统中删除 | true | false | false |
MEDIA_BAD_REMOVAL | 介质在挂载前被移除,直接取出SD卡 | true | false | false |
MEDIA_CHECKING | 正在磁盘检查,刚装上SD卡时 | true | false | false |
MEDIA_SHARED | SD卡存在但没有挂载,并且通过USB大容量存储共享,操作打开USB存储 | true | false | false |
MEDIA_MOUNTED_READ_ONLY | SD卡存在并且已挂载,但是挂载方式为只读 | - | - | - |
MEDIA_NOFS | 介质存在但是为空白或用在不支持的文件系统 | - | - | - |
MEDIA_UNMOUNTABLE | 存在SD卡但是不能挂载,例如发生在介质损坏 | - | - | - |
2.读取SD卡状态的用处
读取SD卡状态为MEDIA_MOUNTED是/mnt/sdcard目录才能可读可写,读取SD卡时一般会这样写:
String state; String path; state = Environment.getExternalStorageState(); if (state.equals(Environment.MEDIA_MOUNTED)) { path = Environment.getEcternalStorageDirectory().getAbsolutePath(); }
读写SD卡的两个权限:
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />