android - 如何创建应用图像文件夹以显示在 Android 画廊中

标签 android image gallery

我有一个应用程序,用户可以在其中创建图像,然后我想保存它,以便它在默认图库应用程序中可见。

现在我不希望将照片保存在与从相机拍摄的照片相同的文件夹中,我希望将它们保存在应用程序专用的文件夹中,就像来自 whatsapp 或 facebook 等应用程序的图像一样。

我试过将它们保存在这两个位置:

File imagePath = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)+ File.separator + appDirectoryName + File.separator);

这里

File imagePath = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)+ File.separator + appDirectoryName + File.separator);

如果我浏览手机,我会看到我成功保存了图像,但它们没有显示在图库应用程序中。很明显我错过了一些东西,但我不知道它是什么。也许向文件或文件夹添加某种元数据以便图库识别它们?

最佳答案

最后我找到了答案。

果然和我猜想的一样。保存的图像需要添加一些元数据才能在图库中看到(至少在我的设备中)。

这是我做的:

OutputStream fOut = null;
    File file = new File(imagePath,"GE_"+ System.currentTimeMillis() +".jpg");

    try {
        fOut = new FileOutputStream(file);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
    try {
        fOut.flush();
        fOut.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

    ContentValues values = new ContentValues();
    values.put(Images.Media.TITLE, this.getString(R.string.picture_title));
    values.put(Images.Media.DESCRIPTION, this.getString(R.string.picture_description));
    values.put(Images.Media.DATE_TAKEN, System.currentTimeMillis ());
    values.put(Images.ImageColumns.BUCKET_ID, file.toString().toLowerCase(Locale.US).hashCode());
    values.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, file.getName().toLowerCase(Locale.US));
    values.put("_data", file.getAbsolutePath());

    ContentResolver cr = getContentResolver();
    cr.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);

关于android - 如何创建应用图像文件夹以显示在 Android 画廊中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21258221/

相关文章:

android - 无法通过 Volley 发送带边界的多部分文件

android - fragment 中 OnClickListener 的 NullPointerException

android - 如何查询 Android MediaStore Content Provider,避免孤立图像?

java - 白色和黑色图像到二维数组以及经过一些操作后二维数组到Java中的图像

javascript - 将 Javascript Accordion 菜单效果与 jQuery 可过滤照片库相结合

android - Binder 交易失败 Facebook API 登录失败

java - android ArrayAdapter.clear() 清除自定义方法变量

jquery - 使用 jQueryeach 获取图像高度

Android:在不选择项目的情况下停止画廊滚动

html - 如何构建带有上一个/下一个按钮的纯 CSS3 图像 slider ?