1
  1. 在我的应用程序中,我最初从图库中加载所有图像,即 (MediaStore.Images.Media.EXTERNAL_CONTENT_URI)

  2. 用户可以通过我的应用程序拍照,但我有一个自定义相机,即我不使用默认手机相机拍照,我有自己的表面视图,我直接处理相机对象,并处理相机图片。我将此图像保存在自定义文件夹中。

  3. 一旦用户返回我的应用程序,我希望新拍摄的照片出现在我的画廊中

问题:新拍摄的图片没有出现在我用 MediaStore.Images.Media.EXTERNAL_CONTENT_URI 加载的光标中

只有当我重新安装应用程序并强制重新扫描时,问题才会消失。

我该如何解决?我希望立即拍摄的每张照片都会出现在我的光标中?

我已经做了一些研究,但不要告诉我使用 startactivity 解决方案的内容值,如下所示

 startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);

这不起作用,因为我有自己的相机,我没有使用手机的默认相机活动

我也试过

 getContentResolver().notifyChange(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null);

这也不起作用

有人可以帮忙吗?

谢谢

4

3 回答 3

7

您只需发送广播“ACTION_MEDIA_SCANNER_SCAN_FILE”,以便 mediascanner 扫描您保存的图像。

 Intent mediaScanIntent = new Intent( Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
 mediaScanIntent.setData(uri);
 sendBroadcast(mediaScanIntent);

只需设置新创建图像的 uri。:)

于 2013-08-22T08:07:39.490 回答
0

是的,您是真的,您需要将新创建的文件提供给 MediaStore。

MediaScannerConnection将为您提供帮助。

MediaScannerConnection 为应用程序提供了一种将新创建或下载的媒体文件传递给媒体扫描仪服务的方法。媒体扫描器服务将从文件中读取元数据并将文件添加到媒体内容提供商。MediaScannerConnectionClient 为媒体扫描器服务提供了一个接口,用于将新扫描的文件的 Uri 返回给 MediaScannerConnection 类的客户端。

于 2013-08-22T07:31:42.120 回答
0

这暂时有效:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){

   sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + outPath)));

}else{                      

   sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + outPath)));

}
于 2015-05-26T17:43:28.910 回答