2013-05-16 73 views
0

我的应用程序将在我的自定义图库中显示图像的完整列表。为此,我使用图像缩略图的ContentProvider。在选择缩略图之后,我需要显示实际的图像。根据我的理解,Gallery的图像在Thumb和Media表格中具有相同的唯一ID。媒体库ContentProvider

这是代码。首先我查询了Thumbnail的ContentProvider并保存了URL和ID。

String pictureThumbTemp[] = { MediaStore.Images.Thumbnails._ID, MediaStore.Images.Thumbnails.DATA }; 

Cursor imagecursor = context.getContentResolver().query (MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, 
           pictureThumbTemp,null, null, null); 

后来我在网格中显示大拇指。 选择缩略图后,我必须显示原始图像。我试图找回像

String pictureImageTemp[] = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA }; 
Cursor imagecursor = context.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
        pictureImageTemp, MediaStore.Images.Media._ID + " = " + mediaID + "", null, 
        MediaStore.Images.Media._ID); 

总体原始图像,我显示的缩略图通过它的网址和用户点击后,我查询缩略图的媒体ID在原始图像表。

但它返回的结果为0的游标。

请帮我一把。

谢谢,
sha。

+0

哪一个你得到光标null –

回答

1

试试这个

final String[] pictureImageTemp= { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID }; 

     Cursor imagecursor = managedQuery(
       MediaStore.Images.Media.EXTERNAL_CONTENT_URI, pictureImageTemp, null, 
       null, MediaStore.Images.Media._ID); 
+1

谢谢sunil的回应。但我得到了上述解决方案的回应。游标返回计数为0。 – sha

3

我破解了一个办法,其制定。

检索到原始图像的光标。 从那我拉了每个图像的ID和查询缩略图为ID返回包含路径的光标。

找到下面的代码片段。

String pictureCols[] = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA }; 
Cursor imagecursor = mContext.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, pictureCols, 
      null, null, null); 
imagecursor.moveToFirst(); 
mImageUrls = new ArrayList<String>(); 
try { 
    // Iterate the cursor for Image urls 
    for (int index = 0; index < imagecursor.getCount(); index++) { 

     imagecursor.moveToPosition(index); 
     preparePicture(imagecursor); 
    } 
    } catch (Exception e) { 
    e.printStackTrace(); 
    } finally { 
    imagecursor.close(); 
    } 
} 

下面是preparePicture方法的代码

private void preparePicture(Cursor imageCursor) { 

     // get the ID for the original image 
    int idColumnIndex = imageCursor.getColumnIndex(mSelectedImage.mediaID); 
    Long id = imageCursor.getLong(idColumnIndex); 

    // Thumbnail image Cursor for this specific image. 
    String thumbCols[] = { MediaStore.Images.Thumbnails._ID, MediaStore.Images.Thumbnails.DATA }; 
    Cursor thumbCursor = MediaStore.Images.Thumbnails.queryMiniThumbnail(mContext.getContentResolver(), id, 
     Thumbnails.MINI_KIND, thumbCols); 
    thumbCursor.moveToFirst(); 

    // Save thumbnail URL in MediaInfo 
    dataColumnIndex = thumbCursor.getColumnIndex(mSelectedThumb.data); 
    String thumbURL = thumbCursor.getString(dataColumnIndex); 

    thumbCursor.close(); 
    mImageUrls.add(url); 

} 

最后,我将有ArrayList中我所有的缩略图URL。

相同的逻辑不适用于视频缩略图。当然这是一个不同的问题:)

Regards,
Sha。