【发布时间】:2017-07-19 08:13:49
【问题描述】:
我正在尝试将我的应用程序的内部存储和外部存储中的所有歌曲作为列表视图列出。我正在使用下面的代码来获取歌曲
ContentResolver musicResolver = getContentResolver();
Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor musicCursor = musicResolver.query(musicUri, null, null, null, null);
if(musicCursor!=null && musicCursor.moveToFirst()){
//get columns
int titleColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.TITLE);
int idColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media._ID);
int artistColumn = musicCursor.getColumnIndex
(android.provider.MediaStore.Audio.Media.ARTIST);
int durationColumn=musicCursor.getColumnIndex(android.provider.MediaStore.Audio.Media.DURATION);
do {
try {
long thisId = musicCursor.getLong(idColumn);
String thisTitle = musicCursor.getString(titleColumn);
String thisArtist = musicCursor.getString(artistColumn);
String duration = musicCursor.getString(durationColumn);
if (!thisArtist.equalsIgnoreCase("<unknown>")) {
//save track
}
} catch (Exception e) {
}
}
while (musicCursor.moveToNext());
上面的代码成功地获取了外部存储中的所有歌曲,但没有获取存储在内部存储器中的歌曲。这是三星 Galaxy S8 等没有外部存储设备的问题。 我也用下面的uri尝试了光标
musicUri = MediaStore.Audio.Media.INTERNAL_CONTENT_URI;
这会获取我不需要的设备铃声和短信铃声。
我在 StackOverflow 中遇到过类似的问题,但那里的答案并没有为我解决这个问题。
请帮忙。 谢谢。
【问题讨论】:
标签: android storage mediastore