最近在做拍照录像功能,已经有了文件读写权限,却发现在9.0手机上正常使用,但是在安卓12系统上根本没有创建文件夹。经过研究发现,创建名称为“DCIM”的文件夹可以,别的又都不行。而且是getExternalStorageDirectory和getDataDirectory都不行。
原来在安卓10以后要用Context#getExternalFilesDir(String)这个方法,路径是
/storage/emulated/0/Android/data/com.weizu.downloader/files
而且要在Androidmainfest 里面的application添加:android:requestLegacyExternalStorage=“true”
下面贴出文件目录代码
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();// 获取跟目录
}
Log.i("TAG", "onCreate3: " + sdDir.toString());
return sdDir.toString();
}
/**
* 创建SD卡目录
*/
public static boolean isFolderExists(String strFolder) {
File file = new File(strFolder);
return file.exists() || file.mkdirs();
}
/**
* 初始化文件夹子
*/
private void initData() {
// 文件路径设置
String parentPath = getSDPath(this);
isFolderExists(parentPath);}