0

我将图像保存到 SD 卡,但它没有出现在手机的图库中。我可以在文件夹中看到保存的图像,但该文件夹没有出现在图库中。

我的代码在这里,如何修复它?

    img_icon.setOnLongClickListener(new View.OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {

            img_resim.buildDrawingCache();
            Bitmap bm = img_resim.getDrawingCache();

            OutputStream fOut = null;

            Uri outputFileUri;
            try {
                root = new File(Environment.getExternalStorageDirectory()
                        + File.separator + "folder_name" + File.separator);
                root.mkdirs();
                File sdImageMainDirectory = new File(root, "myPicName.jpg");
                outputFileUri = Uri.fromFile(sdImageMainDirectory);
                fOut = new FileOutputStream(sdImageMainDirectory);
            } catch (Exception e) {
                Toast.makeText(context.getActivity(),
                        "Error occured. Please try again later.",
                        Toast.LENGTH_SHORT).show();
            }

            try {
                bm.compress(Bitmap.CompressFormat.PNG, 100, fOut);
                fOut.flush();
                fOut.close();
            } catch (Exception e) {

            }

            context.getActivity()
                    .sendBroadcast(
                            new Intent(
                                    Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
                                    Uri.parse("file://"
                                            + Environment
                                                    .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES))));

            return true;
        }
    });

    return rowView;
}

谢谢帮忙。。

4

1 回答 1

1

你的问题出在这里:

context.getActivity()
                .sendBroadcast(
                        new Intent(
                                Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,
                                Uri.parse("file://"
                                        + Environment
                                                .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES))));

您要求 Android 重新索引Environment.DIRECTORY_PICTURES.

要求扫描整个目录树是一种浪费。在您的情况下,它更加浪费,因为您没有将文件写入该目录。相反,您正在将该文件写入:

root = new File(Environment.getExternalStorageDirectory()
                    + File.separator + "folder_name" + File.separator);
root.mkdirs();
File sdImageMainDirectory = new File(root, "myPicName.jpg");

因此,您的扫描不会拾取此文件,您正在将其写入外部存储上的某个随机位置。

您需要确定存储文件的适当位置,然后为该文件编制索引。

于 2014-08-29T15:31:58.013 回答