2012-03-28 91 views
0

我通過MediaStore.Audio.Media.DATA爲空的USB驅動器文件

proj = new String[] {[...], 
        MediaStore.Audio.Media.DATA 
        }; 
Cursor musiccursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,proj, MediaStore.Audio.Media.IS_MUSIC + "=1", null, null); 

[...] 

int ixdata  = musiccursor.getColumnIndex(MediaStore.Audio.Media.DATA); 

[...] 

while(musiccursor.moveToNext()) { 
    [...] 
    String data  = musiccursor.getString(ixdata); 

搜索Musicfiles與在/ mnt/SD卡的一切工作得很好,但不幸的文件在/ mnt下的文件/ USB數據似乎是空的。

更糟糕的是,mediaplayer與/ mnt/sdcard中的文件的內容URI(即content:// media/external/audio/media/120)一起工作,而不與內容中的文件的URI/mnt/USB(即content:// media/external/audio/media/530)。

的文件是正常的,我可以發揮他們很好,當我給媒體播放器IE瀏覽器/mnt/USB/testfile.mp3

甚至怪異的絕對路徑:專輯,藝術家,標題等被讀取沒有問題從USB驅動器上的文件

任何人的想法?

感謝

回答

0

我問自己同樣的問題,但我沒找到爲什麼mediastore包含空數據行的原因。 我想到的是通過不選擇具有空數據字段的項目(過濾空數據源),在查詢中向該媒體庫添加「where子句」。

Cursor cursor = managedQuery(
    MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
    MY_COLUMNS, 
    MediaStore.Audio.Media.DATA + "<> ''", 
    null, 
    SORT_ORDER); 

其中

  • MY_COLUMNS是String []包含我columns'names
  • SORT_ORDER是我的排序順序選擇