关于Android10.0后创建文件夹失败的问题

做项目的时候尝试创建文件夹,但是在10.0的手机上面失败,试了一下8.0/9.0都可以,所以感觉应该是10.0系统改了某些东西,直接去收创建文件夹没搜索到相关的文章,特此记录一下。
查阅了一下开发文档:
getExternalStorageDirectory()-在API级别29中不推荐使用此方法。为了提高用户隐私,不建议直接访问共享/外部存储设备。
当应用程序定位到Build.VERSION_CODES.Q时,此方法返回的路径不再可供应用程序直接访问。
通过迁移到Context#getExternalFilesDir(String),MediaStore或Intent#ACTION_OPEN_DOCUMENT之类的替代方案,应用程序可以继续访问共享/外部存储中存储的内容。
getExternalFilesDir(null)将返回您的应用存储文件夹,位于(内部存储)/Android/data/your.app.name/file/
10.0之前的不变,所以需要做一下判断:
public static String getSDPath(Context context) {
File sdDir = null;
boolean sdCardExist = Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED);// 判断sd卡是否存在
if (sdCardExist) {
if (Build.VERSION.SDK_INT>=29){
//Android10之后
sdDir = context.getExternalFilesDir(null);
}else {
sdDir = Environment.getExternalStorageDirectory();// 获取SD卡根目录
}
} else {
sdDir = Environment.getRootDirectory();// 获取跟目录
}
return sdDir.toString();
}

你可能感兴趣的:(Andorid,android)