2013-05-16 75 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。