android 11保存可以拷贝的文件(安卓原生开发android10android11文件存储问题)
1.以下文件的存储方法,在android10中是可以用的,存储的位置是在,手机存储的根目录
public static File saveImageReturnFile(Bitmap bmp) {
File appDir = new File(Environment.getExternalStorageDirectory(), "TestPhotos");
if (!appDir.exists()) {
appDir.mkdir();
}
String fileName = System.currentTimeMillis() ".jpg";
File file = new File(appDir, fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return file;
}
可以看到是将bitmap,在手机存储的根目录创建一个Testphotos,然后放图片文件.
上面的这种方式在android10中是不会报错的,亲测,但是如果你的系统升级到了android11就会报错,
这个时候用方式2吧.
2.这种方式
tempzmFile = BitmapBaiDuUtils.saveImageReturnAndFile(bitScaleMap,getApplicationContext());
//保存压缩后的人脸照片
public static File saveImageReturnAndFile(Bitmap bmp,Context appContext) {
File file = null;
try {
ContextWrapper contextWrapper = new ContextWrapper(appContext);
//String fileName = System.currentTimeMillis() ".jpg";
String fileName = "test_zm.jpg";
File directory = contextWrapper.getDir("ComprassPhotos", Context.MODE_PRIVATE);
file = new File(directory, fileName);
Log.d(TAG, file.toString());
if (file.exists()) {
file.delete();
}
FileOutputStream fos = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
return file;
} catch (IOException e) {
e.printStackTrace();
return file;
}
return file;
}
可以看到上面就是在,我们的程序的目录中去创建,ComprassPhotos这个目录,这样是没问题的,这样
不管是android10,还是android11,都可以进行图片的存取不会报错了.test_zm.jpg 给图片起一个名字,每次先删除,这个文件,再去存一下,存了以后,实际上我的用处是,把文件上传到服务器.就没有用了.所以每次存之前都删除.
itmapBaiDuUtils.saveImageReturnAndFile(bitScaleMap,getApplicationContext());
这里的,getApplicationContext ,是上下文,通过这个可以获取程序的安装目录.
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com