在我的应用中,我最初加载了图库中的所有图片,即(MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
用户可以通过我的应用程序拍照,但我有自定义相机,即我不使用默认手机相机拍照,我有自己的表面视图,我直接处理相机对象,并处理相机图片。我将此图像保存在自定义文件夹中。
一旦用户返回我的应用,我希望新拍摄的照片出现在我的画廊中
问题: 我用MediaStore.Images.Media.EXTERNAL_CONTENT_URI加载的光标中没有出现新拍摄的图片
只有当我重新安装应用程序并强行重新扫描时,问题才会消失。
我该如何解决这个问题?我希望立即拍摄的每张照片都会出现在我的光标中?
我已经完成了一些研究,但是不要告诉我使用startactivity解决方案的内容值如下
startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
这不起作用,因为我有自己的相机,我没有使用手机的默认相机活动
我也试过
getContentResolver().notifyChange(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null);
这不起作用
有人可以帮忙吗?
由于
答案 0 :(得分:7)
您只需发送广播“ACTION_MEDIA_SCANNER_SCAN_FILE”,以便mediascanner可以扫描您保存的图像。
Intent mediaScanIntent = new Intent( Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
mediaScanIntent.setData(uri);
sendBroadcast(mediaScanIntent);
只需设置新创建的图像的uri即可。 :)
答案 1 :(得分:0)
是的,您是的,您需要将新创建的文件提供给MediaStore。
MediaScannerConnection为应用程序提供了一种新传递方式 创建或下载媒体文件到媒体扫描仪服务。该 媒体扫描程序服务将从文件中读取元数据并添加 文件到媒体内容提供商。 MediaScannerConnectionClient 为媒体扫描程序服务提供返回Uri的界面 用于新扫描的文件到MediaScannerConnection的客户端 类。
答案 2 :(得分: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)));
}