我一直在寻找一种方法来将位图保存到文件夹(使用我的应用程序名称),这样默认图库就能识别它。
所以我设法保存了图像,但我无法从图库或我的电脑上看到它(使用资源管理器)
这是我的代码:
// Save bitmap to internal memory
private void savePhoto(Bitmap bmp){
String appName = "myApp";
String file_path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+ File.separator + appName;
File dir = new File(file_path);
if(!dir.exists())
dir.mkdirs();
// Image file
File file = new File(dir, "IMG" + "_" + System.currentTimeMillis() + ".jpg");
FileOutputStream out = null;
try
{
out = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
out = null;
} catch (Exception e)
{
e.printStackTrace();
}
}
我可以使用我的Galaxy上安装的一些文件管理器来查看它,但它并没有多大帮助。 我知道我应该使用媒体扫描仪(这是我需要跨越的另一座桥)通知画廊,但是有人可以帮助我理解我甚至无法找到文件的方式......我应该以某种方式改变其可见性吗?
还有一件事:我在关于这个问题的另一个问题上读到,我应该在图像/文件夹中添加元数据,以便图库显示它。有必要吗?
非常感谢!!!
答案 0 :(得分:3)
显然它确实与媒体扫描仪有关,我添加了这一行
MediaScannerConnection.scanFile(this, new String[] { file.getAbsolutePath() }, null, null);
现在可行。
来自文档:
MediaScannerConnection为应用程序提供了一种将新创建或下载的媒体文件传递到媒体扫描程序服务的方法。媒体扫描程序服务将从文件中读取元数据,并将文件添加到媒体内容提供程序。
答案 1 :(得分:0)
尝试替换此getExternalStoragePublicDirectory(....) 用这个getExternalStorageDirectory();