0

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

这是代码。首先我查询了缩略图的 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);

总的来说,我通过它的 url 显示缩略图,点击后我在原始图像表中查询缩略图的媒体 ID。

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

请帮帮我。

谢谢,
沙。

4

2 回答 2

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。

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

问候,
沙。

于 2013-05-24T06:38:04.010 回答
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);
于 2013-05-16T06:51:55.140 回答