2011-08-22 51 views
0

以下代码允许我拍照,但不会将图像插入到数据库中。我错过了什么?无法将图像插入媒体数据库

Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
ContentValues values = new ContentValues(); 
values.put(Media.TITLE, "Image"); 
values.put(Images.Media.BUCKET_ID, "292"); 
values.put(Images.Media.BUCKET_DISPLAY_NAME, "thename"); 
values.put(Images.Media.MIME_TYPE, "image/jpeg"); 
values.put(Media.DESCRIPTION, "Image capture by camera"); 
values.put("_data", IMG_FILE_PATH); 
Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI , values); 
i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, uri); 
i.putExtra("return-data", true); 
startActivityForResult(i,REQ_PHOTO); 
+0

values.put(“_ data”,IMG_FILE_PATH); 也许尝试删除此。 _data是你的文件被存储的地方,所以当你拍摄照片时,预先插入这个文件可能会搞砸了。 – dymmeh

+0

此外,你是否需要预先插入所有这些值?我有一个4行长的图像捕捉意图,并且完美地工作 – dymmeh

+0

您可以在答案中粘贴捕获代码吗?想给点积分 – hunterp

回答

1
Uri uri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
        new ContentValues());  
Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri); 
startActivityForResult(imageIntent, REQUEST_CODE_CAPTURE_IMAGE_ACTIVITY); 

尽量只使用此代码。当Android尝试存储图像时,似乎覆盖_data会导致问题。

+0

这些图像不会立即出现在画廊中。安装/卸载我的SD卡后,不知何故,这会导致画廊的一些神奇刷新。这是一个副作用,而不是一个解决方案。你一定要留下什么东西? – hunterp

+0

试试看看这个http://stackoverflow.com/questions/2870906/adding-pictures-to-the-gallery-android – dymmeh

+0

谢谢。工作。 – hunterp