2015-02-06 120 views
0

試圖檢索MediaStore中每個專輯的專輯封面的路徑。我檢索我的光標這樣的:來自MediaStore(和畢加索)的Android專輯藝術

String[] projection = new String[] {MediaStore.Audio.Albums._ID, 
            MediaStore.Audio.Albums.ALBUM_ART, 
            MediaStore.Audio.Albums.ALBUM, 
            MediaStore.Audio.Albums.ARTIST}; 

// Returns a new CursorLoader 
return new CursorLoader(getActivity(), 
         MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, 
         projection, 
         null, 
         null, 
         MediaStore.Audio.Albums.ALBUM + " ASC"); 

它返回的所有獨特的專輯和他們各自的藝術家,專輯名稱,ID和專輯封面路徑的有效的光標。但是,我無法弄清楚如何使用專輯藝術路徑。下面是我從ALBUM_ART列中獲取的路徑的一個例子:

/storage/emulated/0/Android/data/com.android.providers.media/albumthumbs/1420524553603 

我想這個消息傳給其他畢加索,但它拋出回一個錯誤。下面是我如何做它:

Picasso.with(mContext).load(Uri.parseUri(albumArtPath)).into(imageView);

其中albumArtPath是我從光標獲取(見上文)的路徑。我結束了一個空白的ImageView,所以沒有什麼基本上加載。如何讓畢加索與Mediastore專輯藝術路徑一起工作?

回答

3

這是一個文件路徑,而不是一個URI。

任何這些將工作:

Picasso.with(mContext).load(new File(albumArtPath)).into(imageView); 
Picasso.with(mContext).load(Uri.parse("file://" + albumArtPath)).into(imageView); 
Picasso.with(mContext).load(Uri.fromFile(new File(albumArtPath))).into(imageView); 
+0

可否請你添加一些解釋到您的文章爲什麼這應該可以解決了OP的問題?謝謝! – hichris123 2015-02-06 03:38:06

+0

呃,因爲那是一個文件路徑,而不是一個URI。實際上我甚至不確定'Uri.parseUri'是什麼。顯然不是Uri類的任何標準實施。另一種解決方案是:'Picasso.with(this).load(Uri.parse(「file://」+ albumArtPath))。into(imageView);' – tachyonflux 2015-02-06 04:07:25

+0

完美,謝謝! :)也請將你的答案也寫進你的答案? – hichris123 2015-02-06 04:08:34

相關問題