0
我需要的是得到像結果從這個代碼如何使用MediaStore
ContentResolver musicResolver = getActivity().getContentResolver();
Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);
但在一個特定的目錄,而不是從所有的目錄,以獲得特定目錄中的所有音樂和所有子目錄的列表。 這是我到目前爲止已經試過:
ContentResolver musicResolver = mContext.getContentResolver();
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor musicCursor = null;
try {
musicCursor = musicResolver.query(uri,
new String[]{
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DURATION,
},
MediaStore.Audio.Media.DATA + "=? ",
new String[]{new File("some path to directory").getCanonicalPath()},
null);
} catch (IOException e) {
e.printStackTrace();
}
但這種方法moveToFirst()
返回false所以我的理解它是空的。 感謝您的未來幫助。
您正在要求Media.DATA等於「some path ....」,但MediaStore.Audio.Media.DATA包含完整路徑,包括軌道及其擴展名,因此條件永遠不會爲真。你應該做的是使用LIKE操作符。將路徑如下所示 searchpath =「%」+ strpath +「%」; //查找路徑字符串 和MediaStore.Audio.Media.DATA +「LIKE?」。查詢現在將查找包含在完全限定路徑中的路徑字符串。 – Theo