Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:在SD卡上写入照片文件,这些文件可以在图库中查看_Android_Sd Card - Fatal编程技术网

Android:在SD卡上写入照片文件,这些文件可以在图库中查看

Android:在SD卡上写入照片文件,这些文件可以在图库中查看,android,sd-card,Android,Sd Card,我正试图找到一种与android kitkat和next兼容的方法,将照片写到SD卡上,并使它们在gallery应用程序中可见 如果我使用Environment.getExternalStoragePublicDirectory,samsung设备将返回内存/storage/emulated/0/…中的路径。。。 如果我使用Context.getexternalfilesdir,则会有两个结果:第一个结果在内部存储器上,第二个结果在SD卡上。好的,我可以在里面写,照片在SD卡上。但我在Galer

我正试图找到一种与android kitkat和next兼容的方法,将照片写到SD卡上,并使它们在gallery应用程序中可见

如果我使用Environment.getExternalStoragePublicDirectory,samsung设备将返回内存/storage/emulated/0/…中的路径。。。 如果我使用Context.getexternalfilesdir,则会有两个结果:第一个结果在内部存储器上,第二个结果在SD卡上。好的,我可以在里面写,照片在SD卡上。但我在Galery应用程序中看不到它:' 我曾尝试直接在/storage/externalSdCard/DCIM/上写东西,但由于我正在运行kitkat,所以当然不能

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;