1、常量
//与Environment.getExternalStorageState();返回的状态进行比较
String MEDIA_BAD_REMOVAL//SDCard卸载之前被删除时的存储状态。 String MEDIA_CHECKING//如果SDCard存在并进行磁盘检查。 String MEDIA_MOUNTED//如果SDCard存在,并在其安装读/写访问。 String MEDIA_MOUNTED_READ_ONLY//表明对象权限为只读 String MEDIA_NOFS//如果SDCard存在,但是为空,或正在使用不受支持的文件系统。 String MEDIA_REMOVED//SDCard 不存在 String MEDIA_SHARED//如果 SDCard 未安装 ,并通过 USB 大容量存储共享 String MEDIA_UNMOUNTABLE// 未知的存储状态,例如路径不支持 String MEDIA_UNMOUNTED// SDCard 如果介质存在但无法安装存储状态。通常,如果介质上的文件系统损坏,则会发生这种情况。比如判断SD卡是否存在,存在则获取sd卡路径:
public String getSDPath() { File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState() .equals(android.os.Environment.MEDIA_MOUNTED); if (sdCardExist) { sdDir = Environment.getExternalStorageDirectory(); } return sdDir.toString(); }2、领域
public static String DIRECTORY_ALARMS//系统提醒铃声存放的标准目录。 public static String DIRECTORY_DCIM//相机拍摄照片和视频的标准目录。 public static String DIRECTORY_DOWNLOADS//下载的标准目录。 public static String DIRECTORY_MOVIES//电影存放的标准目录。 public static String DIRECTORY_MUSIC//音乐存放的标准目录。 public static String DIRECTORY_NOTIFICATIONS//系统通知铃声存放的标准目录。 public static String DIRECTORY_PICTURES//图片存放的标准目录。 public static String DIRECTORY_PODCASTS//系统广播存放的标准目录。 public static String DIRECTORY_RINGTONES//系统铃声存放的标准目录。3、方法
//Android data的目录 String dataPath = Environment.getDataDirectory().getPath(); //返回下载/缓存内容目录 String download = Environment.getDownloadCacheDirectory().getPath(); //获取Android根目录 String rootDirectory = Environment.getRootDirectory().getPath(); //返回主外部存储目录 String storageDirectory = Environment.getExternalStorageDirectory().getPath(); //获取顶级公共外部存储目录,以放置特定类型的文件 File storagePublicDirectory = Environment.getExternalStoragePublicDirectory(""); //返回主“外部”存储设备的当前状态。 String StorageState = Environment.getExternalStorageState(); //是否有外部存储设备。 boolean StorageEmulated = Environment.isExternalStorageEmulated(); //返回主“外部”存储设备是否可移动 boolean storageRemovable = Environment.isExternalStorageRemovable(); Log.v("tag", "dataPath "+dataPath); Log.v("tag", "download "+download); Log.v("tag", "rootDirectory "+rootDirectory); Log.v("tag", "storageDirectory "+storageDirectory); Log.v("tag", "storagePublicDirectory "+storagePublicDirectory); Log.v("tag", "StorageState "+StorageState); Log.v("tag", "StorageEmulated "+StorageEmulated); Log.v("tag", "storageRemovable "+storageRemovable);打印结果:
dataPath /data download /cache rootDirectory /system storageDirectory /storage/emulated/0 storagePublicDirectory /storage/emulated/0 StorageState mounted StorageEmulated true storageRemovable false拓展:
别忘了权限 WRITE_EXTERNAL_STORAGE权限,并且从读取访问开始需要 READ_EXTERNAL_STORAGE权限,如果您持有写入权限,该权限将被自动授予。
从开始KITKAT,如果您的应用程序只需要存储内部数据,请考虑使用 getExternalFilesDir(String)或 getExternalCacheDir()不需要读取或写入权限。