记录一下,创建文件遇到的问题
1.现在manifest文件中添加权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2.android10以上现在存在沙盒机制
在manifest文件的application添加
android:requestLegacyExternalStorage="true"
3.创建文件夹
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);//获取应用所在根目录/Android/data/your.app.name/file/ 也可以根据沙盒机制传入自己想传的参数,存放在指定目录
} else {
sdDir = Environment.getExternalStorageDirectory();// 获取SD卡根目录
}
} else {
sdDir = Environment.getRootDirectory();// 获取跟目录
}
return sdDir.toString();
}
4.创建自己的文件,//现在可以用File.separator代替 / ,避免在有的手机出错
String imagePath = Environment.getExternalStorageDirectory()
+ File.separator + "Android" + File.separator + "data"
+ File.separator + getPackageName() + File.separator
+ "files" + File.separator + "imageFile" + File.separator;
File file = new File(imagePath);
if (!file.exists()) {
file.mkdirs();
}