【问题标题】:Android: write photo files on SD Card that are viewable in the galleryAndroid:在 SD 卡上写入可在图库中查看的照片文件
【发布时间】:2019-03-04 22:14:35
【问题描述】:

我正在尝试找到一种方法(与 android kitkat 和 next 兼容)在 SD 卡上写入照片并使其对图库应用程序可见。

  • 如果我使用 Environment.getExternalStoragePublicDirectory ,三星设备会返回内存中的路径 (/storage/emulated/0/ ... )
  • 如果我使用 Context.getExternalFilesDirs ,有两个结果:第一个在内部存储上,第二个在 SD 卡上。好的,我可以在里面写,照片在 SDCard 上。但我在 Galery 应用程序中看不到它:'(

我曾尝试直接在 /storage/externalSdCard/DCIM/ 上写入,但我当然不能,因为我正在运行 kitkat。

【问题讨论】:

标签: android sd-card


【解决方案1】:

好的,我可以在里面写字,照片在 SDCard 上。但我在相册应用中看不到它

首先,当你写完文件后,调用flush(),然后是getFD().sync(),然后是close(),所有这些都在你的FileOutputStream上。

然后,使用MediaScannerConnection及其scanFile()方法获取MediaStore索引的新写入文件。

【讨论】:

  • 谢谢,这是最终解决方案 MediaScannerConnection.scanFile(this, new String [] {fDst.getAbsolutePath()} , null, null);
【解决方案2】:
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();
        }

    }

【讨论】:

  • 谢谢。 MediaStore.Images.Media.insertImage() 工作。但后来我从图库中删除了文件并重新运行我的测试代码。现在它不再起作用了:当文件存在时,我得到一个文件未找到异常(我已经检查了 3 次)
  • 用 try catch(Filenotfoundexeption e) 将代码包围起来 字符串路径使其成为全局变量,并在 oncreate 活动路径 = Environment.getExternalStorageDirectory().toString(); new File(path + "/folder/subfolder").mkdirs();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多