我保存图片并在文件管理器中看到,但是在图库中看不到? 如何解决?
我认为我的错误
Environment.getExternalStorageDirectory().getAbsolutePath() + "/MyFolder";
String file_path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/MyFolder";
File dir = new File(file_path);
if(!dir.exists())
{
dir.mkdirs();
}
String name = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()).concat(".png");
File file = new File(dir, name);
FileOutputStream fOut;
try {
fOut = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 85, fOut);
fOut.flush();
fOut.close();
return Uri.fromFile(file);
} catch (Exception e) {
e.printStackTrace();
}
return null;
答案 0 :(得分:1)
您必须将其添加到MediaStore中以使其显示在图库中。以下代码对我有用(将其放在您编写文件的现有代码之后),以使用您自己的自定义说明等手动添加文件...
我在这里保存了它
String dir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).toString();
String path = dir + "/" + filename;
使用与您的代码非常相似的代码,然后使用以下代码将其添加到MediaStore:
long size = new File(path).length();
long currentTime = System.currentTimeMillis();
ContentValues values = new ContentValues(8);
String mimeType = "image/png";
String fileDescription = "My description";
// store the details
values.put(MediaStore.Images.Media.TITLE, name);
values.put(MediaStore.Images.Media.DISPLAY_NAME, name);
values.put(MediaStore.Images.Media.DATE_ADDED, currentTime);
values.put(MediaStore.Images.Media.MIME_TYPE, mimeType);
values.put(MediaStore.Images.Media.DESCRIPTION, fileDescription);
values.put(MediaStore.Images.Media.ORIENTATION, 0);
values.put(MediaStore.Images.Media.DATA, path);
values.put(MediaStore.Images.Media.SIZE, size);
try {
context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
}
catch(Exception e) {
e.printStackTrace();
}
答案 1 :(得分:0)
许多图库应用程序依赖MediaStore中缓存的媒体列和数据,而不是实际读取和解析目录。其中一些将触发自动重新扫描,但不是全部。
使用MediaScannerConnection用文件更新MediaStore:
MediaScannerConnection.scanFile(context, new String[]{file.getAbsolutePath()}, null, null);