java Android未在库中创建文件夹
我正在尝试将JPG格式的图像保存到我的图库中的特定文件夹中。但是我的代码并不是在创建目录,每当我创建一个Toast时,它都会返回给我/storage/emulated/0/DCIM/MyFodler,但是我什么时候打开库,这个foder不存在。我正在用安卓棉花糖6.0构建我的设备的应用程序direct
创建位图的代码:
private Bitmap getToBitmap(ImageView view, int Width, int Heigth){
Bitmap bitmap = Bitmap.createBitmap(Width,Heigth, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
view.draw(canvas);
return bitmap;
}
尝试在库中保存图像的代码:
private void TrySaveMediaStore(){
String path = Environment.getExternalStorageDirectory().toString();
OutputStream FileOut = null;
File file = new File(path,"DCIM/MyFolder");
file.mkdirs();
Toast.makeText(getApplicationContext(),file.getAbsolutePath(),Toast.LENGTH_SHORT).show();
try{
FileOut = new FileOutputStream(file);
FileOut.flush();
FileOut.close();
Bitmap bitmap = getToBitmap(img,img.getMaxWidth(),img.getMaxHeight());
bitmap.compress(Bitmap.CompressFormat.JPEG,100,FileOut);
MediaStore.Images.Media.insertImage(getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName());
Toast.makeText(this,file.getAbsolutePath(),Toast.LENGTH_SHORT).show();
}catch (FileNotFoundException e){
return;
}catch (IOException e){
e.printStackTrace();
}
}
Androidmanifest权限:
<uses-permission 安卓:name="安卓.permission.INTERNET" />
<uses-permission 安卓:name="安卓.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission 安卓:name="安卓.permission.READ_EXTERNAL_STORAGE" />
# 1 楼答案
您可以使用以下代码请求运行时存储权限:
checkIfAlreadyhavePermission()方法:
添加onRequestPermission():
创建文件扫描MediaStore后:
# 2 楼答案
我想a也有同样的问题,实际上图像确实很好地插入到内存中,但是当我试图观看它时,它没有如我所期望的那样显示,我用scanner类刷新了gallery,解决了这个问题,使用了以下代码:
有关更多信息,请参阅此链接:How can I refresh the Gallery after I inserted an Image in android?
# 3 楼答案
是的,问题是媒体扫描仪。您只需使用终端检查文件(如果您没有应用程序,请下载),然后手动转到目录。我也有同样的问题,但至少我知道文件在那里
# 4 楼答案
DCIM/MyFolder
是一个目录。您可以使用mkdirs()
将其创建为目录然后不能尝试使用
DCIM/MyFolder
作为保存JPEG的文件名。您需要在目录中创建一个文件因此,不是:
使用类似于:
此外:
如果你的
targetSdkVersion
是23或更高,你需要处理runtime permissions在you tell the ^{} to index the newly-created JPEG