1

MediaStore.ACTION_IMAGE_CAPTURE用来拍照,MediaStore.EXTRA_OUTPUT指向Uri存储所有其他照片/视频文件的 DCIM/Camera 目录。

照片文件已成功拍摄,我可以使用 ES File Explorer 看到它,并且可以在我的应用程序中查看它。但是,当我使用它时,它没有显示在画廊中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);

这里发生了什么 :(

4

2 回答 2

5

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

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

Gallery 总是监听 URI 变化。文件事件广播到 Gallery 后,Gallery 中存储的数据将被更新。

于 2013-09-12T02:02:42.933 回答
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())));
                }
于 2015-02-11T07:31:41.577 回答