ACTION_IMAGE_CAPTURE后Android图库未更新

时间:2013-09-11 22:08:23

标签: java android android-intent photo mediastore

我正在使用MediaStore.ACTION_IMAGE_CAPTURE拍摄MediaStore.EXTRA_OUTPUT的照片,指向存储所有其他照片/视频文件的DCIM /相机目录的Uri

照片文件已成功拍摄,我可以使用ES文件资源管理器查看它,并可以在我的应用程序中查看它。但是,当我使用Intent.ACTION_PICK

时,它不会显示在图库中
Intent selectPictureIntent = new Intent(Intent.ACTION_PICK);
        selectPictureIntent.setType("image/*");

我已经阅读了有关使用

返回图片后更新图库的其他主题
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, 
                 Uri.parse("file://"+ Environment.getExternalStorageDirectory())));

以及

Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, _outputMediaUri);     
        LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent);

这里发生了什么:(

2 个答案:

答案 0 :(得分:4)

为什么使用LocalBroadcastManager? LocalBroadcastManager只能在您的应用程序内发送广播数据。尝试使用

Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, _outputMediaUri);     
sendBroadcast(intent);

Gallery始终监听URI更改。文件事件广播到图库后,将更新存储在图库中的数据。

答案 1 :(得分:0)

它也可能与KITKAT构建版本有关..确保您可以使用此代码:

   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                    Intent mediaScanIntent = new Intent(
                            Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
                    Uri contentUri = Uri.fromFile(out); \\out is your output file
                    mediaScanIntent.setData(contentUri);
                    this.sendBroadcast(mediaScanIntent);
                } else {
                    sendBroadcast(new Intent(
                            Intent.ACTION_MEDIA_MOUNTED,
                            Uri.parse("file://"
                                    + Environment.getExternalStorageDirectory())));
                }