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 ,是上下文,通过这个可以获取程序的安装目录.
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。