一. 安卓6.0需要在java文件中动态申请,在得到用户允许后才可以进行相关操作,
6.0以下及6.0以上直接在AndroidManifest中添加权限即可。
通用方案,先判断是否具有存储权限,如果没有则申请,在用户同意后在执行相关操作,如果有则执行相关操作
代码:
//判断存储是否可用,返回一个布尔值
public static boolean sdCardIsAvailable() { //首先判断存储是否可用 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { File sd = new File(Environment.getExternalStorageDirectory().getPath()); Log.e("qq", "sd = " + sd);//sd = /storage/emulated/0 return sd.canWrite(); } else { return false; } } private static final int REQUEST_EXTERNAL_STORAGE = 1; private static String[] PERMISSIONS_STORAGE = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; /** * * @param activity */
//请求用户存储权限 public static void verifyStoragePermissions(Activity activity) { // Check if we have write permission int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE); if (permission != PackageManager.PERMISSION_GRANTED) { // We don't have permission so prompt the u ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE); } }
二.获取根目录及创建文件夹 ,在具有存储权限的基础上
调用此 Environment.getExternalStorageDirectory() .getPath()得到根目录,
例,我想要创建以test为名的文件夹
String filepath =
Environment.getExternalStorageDirectory()
.getPath() + "/" + "test";
File file = new File(filePath);
if (!file.exists()) { file.mkdirs();//创建文件夹 }