我非常需要从来自几个不同用例的歌曲中检索艺术家和曲目。我通常可以content://
很容易地从 mp3 uri(方案:)查询 MediaStore,但有时我会收到文件路径(方案:)file://
。我偶然发现了 StackOverflow 上的这篇文章:
Get MediaStore content Uri from File path?
不幸的是,它看起来对我不起作用。我肯定在某个地方做错了什么,但我不知道在哪里。这是我使用的代码,我给它的文件路径在执行之前已经过验证。
这是一段代码:
private void getTrackFromFilePath(String filePath) {
String[] filePathColumn = {
MediaStore.Audio.Media.TITLE, //
MediaStore.Audio.Media.ARTIST
};
Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Logger.e(TAG, musicUri.toString() + " filePath: " + filePath);
Cursor cursor = getContentResolver().query(musicUri, filePathColumn, MediaStore.Audio.Media.DATA + " LIKE ?", new String[] {
filePath
}, null);
cursor.moveToFirst();
DatabaseUtils.dumpCursor(cursor);
cursor.close();
}
这是相关的logcat:
01-21 12:14:40.345: E/MusicScannerActivity(13513): content://media/external/audio/media filePath: file:///mnt/sdcard/Music/07%20Olly%20Murs%20Feat%20Flo%20Rida%20-%20Troublemaker.mp3
01-21 12:14:40.350: I/System.out(13513): >>>>> Dumping cursor android.content.ContentResolver$CursorWrapperInner@41e03748
01-21 12:14:40.350: I/System.out(13513): <<<<<
我尝试在我请求的列上进行一些操作,但没有成功。