Android:在SD卡上写入照片文件,这些文件可以在图库中查看
我正试图找到一种与android kitkat和next兼容的方法,将照片写到SD卡上,并使它们在gallery应用程序中可见 如果我使用Environment.getExternalStoragePublicDirectory,samsung设备将返回内存/storage/emulated/0/…中的路径。。。 如果我使用Context.getexternalfilesdir,则会有两个结果:第一个结果在内部存储器上,第二个结果在SD卡上。好的,我可以在里面写,照片在SD卡上。但我在Galery应用程序中看不到它:' 我曾尝试直接在/storage/externalSdCard/DCIM/上写东西,但由于我正在运行kitkat,所以当然不能Android:在SD卡上写入照片文件,这些文件可以在图库中查看,android,sd-card,Android,Sd Card,我正试图找到一种与android kitkat和next兼容的方法,将照片写到SD卡上,并使它们在gallery应用程序中可见 如果我使用Environment.getExternalStoragePublicDirectory,samsung设备将返回内存/storage/emulated/0/…中的路径。。。 如果我使用Context.getexternalfilesdir,则会有两个结果:第一个结果在内部存储器上,第二个结果在SD卡上。好的,我可以在里面写,照片在SD卡上。但我在Galer
void saveImage() {
File filename;
try {
String path = Environment.getExternalStorageDirectory().toString();
new File(path + "/folder/subfolder").mkdirs();
filename = new File(path + "/folder/subfolder/image.jpg");
FileOutputStream out = new FileOutputStream(filename);
bitMapImg.compress(Bitmap.CompressFormat.JPEG, 90, out);
out.flush();
out.close();
MediaStore.Images.Media.insertImage(getContentResolver(), filename.getAbsolutePath(), filename.getName(), filename.getName());
Toast.makeText(getApplicationContext(), "File is Saved in " + filename, 1000).show();
} catch (Exception e) {
e.printStackTrace();
}
}
好的,我可以在里面写,照片在SD卡上。但我在Galery应用程序中看不到它
首先,在完成对文件的写入后,在FileOutputStream上调用flush、getFD.sync、close
然后,使用MediaScannerConnection及其scanFile方法获取MediaStore索引的新写入的文件。可能重复感谢。MediaStore.Images.Media.insertImage工作正常。但随后我从galery中删除了文件并重新运行了测试代码。现在它不再工作了:我得到一个文件未找到异常,而该文件存在我已经检查了这一点3次使用try-catchFilenotfoundexeption e字符串路径将其设置为全局变量在oncreate活动路径上=Environment.getExternalStorageDirectory.toString;新文件路径+/folder/subfolder.mkdirs;谢谢,这是MediaScannerConnection.scanFilethis的最终解决方案,新字符串[]{fDst.getAbsolutePath},null,null;