我用
Uri deviceMusic = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
String sortOrder = MediaStore.Audio.Media.DISPLAY_NAME;
Cursor cursor = this.getContentResolver().query(deviceMusic, null,
selection, null, sortOrder);
从设备查询音乐,
但它无法在“extSdCard”中找到音乐。
那么,如何在设备同时具有mnt / sdcrad和“extSdCard”的情况下查询音乐?
编辑: 对不起,我的意思是我可以在mnt / sdcard中获取音乐
但我无法在mnt / extSdCard中获取音乐
extSdCard是一个真正的SD卡,可以在设备上手动删除
答案 0 :(得分:2)
使用此方法develop3ed由我....获取SD卡的mp3文件
为了详细说明,我还提出了一个问题 Observing changes in android content observer for Audio.Media.EXTERNAL_CONTENT_URI
此代码适用于 mnt / sdcrad 和 extSdCard
在此代码中,我已检索到
档案名称
档案路径
时间
持续时间
为每个mp3文件。您可以检索的字段数量很多,请参阅此http://developer.android.com/reference/android/provider/MediaStore.Audio.AudioColumns.html
private void showAllAudio() {
Cursor mCursor = null;
try {
mCursor = context.getContentResolver().query(
Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, "_id");
System.out.println("Cursor count is " + mCursor.getCount());
if (mCursor.getCount() != 0) {
do {
long date = mCursor.getLong(mCursor
.getColumnIndexOrThrow(Audio.Media.DATE_ADDED));
String Duration = mCursor.getString(mCursor
.getColumnIndexOrThrow(Audio.Media.DURATION));
String DISPLAY_NAME = mCursor.getString(mCursor
.getColumnIndexOrThrow(Audio.Media.DISPLAY_NAME));
String DATA = mCursor.getString(mCursor
.getColumnIndexOrThrow(Audio.Media.DATA));
double TIME_STAMP = mCursor.getInt(mCursor
.getColumnIndexOrThrow(Audio.Media.DATE_ADDED));
System.out.println("Name:" + DISPLAY_NAME);
System.out.println("data " + DATA);
System.out.println("time " + TIME_STAMP);
System.out.println("time " + Duration);
} while (mCursor.moveToNext());
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (mCursor != null) {
mCursor.close();
mCursor = null;
}
}
}
}