2011-02-11 46 views
3

我不明白爲什麼這個遊標在這個特定的設備中是空的。但適用於所有其他Android設備。 SD卡上有幾個audiofiles,股票mediaplayer可以找到並播放這些歌曲。MediaStore空遊標

Cursor c = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, new String[] { "distinct " + MediaStore.Audio.Media.ALBUM, MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ALBUM_KEY, MediaStore.Audio.Media.ALBUM_ID}, 
       null, 
       null, 
       MediaStore.Audio.Media.ARTIST); 

無論是閒逛書播放器(我猜他們只是通過文件夾循環,做自己的ID3解析)和股票的Android音樂播放器找到音樂,但我不能讓從mediastore什麼。沒有「.nomedia」文件存在,我嘗試將新的mp3文件插入到新的文件夾中。

回答

2

我遇到了類似的問題,並發現了幾個答案,其中沒有一個證明令人滿意。

媒體掃描程序響應系統啓動的廣播Intent ACTION_MEDIA_MOUNTED, 而在引導過程中運行。所以首先要檢查的是重啓。

據我所知,掃描儀也將在 設置>管理應用程序>媒體存儲>清除數據之後運行,然後從存儲中重新填充該媒體存儲。我試過了,它的工作沒有我會影響..我不能保證安全,當然不會在非dev設備上做到這一點。

您也可以手動

mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse 
     ("file://" + Environment.getExternalStorageDirectory()))); 

,並提出了某種通知,同時觀察意圖ACTION_MEDIA_SCANNER_FINISHED的廣播。

如果您自己導入媒體,請檢查MediaScannerConnection以啓動掃描儀。

哦,如果您打算使用Google的Nexus等設備,則需要處理INTERNAL_CONTENT_URI。

+0

謝謝,我會嘗試一下:) – ingo 2011-02-11 23:11:04

+0

INGO,如果你覺得這個回答你的問題,這將有助於我的代表處如果你點擊左側的對勾...謝謝! – DJC 2011-02-11 23:14:36

4

我在HTC上有同樣的問題令人難以置信,DJC的答案不適合我。 EXTERNAL_CONTENT_URI和INTERNAL_CONTENT_URI都沒有給我任何圖像。經過一番挖掘,我發現通過使用下面的內容URI,它似乎在HTC Incredible上工作。

Uri contenturi = Images.Media.getContentUri("phoneStorage");