Android URI到游标

Android URI到游标,android,Android,如果我已经将sdcard中文件路径的URI转换为android中的游标 Cursor cursor = getContentResolver().query(XXX, null, null, null, null); if(null != cursor) { cursor.moveToFirst(); mediaAdapter = new MediaCursorAdapter(this, R.layout.listitem, cursor); setListAdapter

如果我已经将sdcard中文件路径的URI转换为android中的游标

Cursor cursor = getContentResolver().query(XXX, null, null, null, null);
if(null != cursor)
{
    cursor.moveToFirst();
    mediaAdapter = new MediaCursorAdapter(this, R.layout.listitem, cursor);
    setListAdapter(mediaAdapter);
}
我可以用什么来代替XXX

private class MediaCursorAdapter extends SimpleCursorAdapter{
 @SuppressWarnings("deprecation")
public MediaCursorAdapter(Context context, int layout, Cursor c) {
    super(context, layout, c, new String[] { MediaStore.MediaColumns.DISPLAY_NAME,                    MediaStore.MediaColumns.TITLE, MediaStore.Audio.AudioColumns.DURATION},
    new int[] { R.id.displayname, R.id.title, R.id.duration });
    }
}
有人能帮我吗


提前感谢

您应该为XXX使用
MediaStore.Images.Media.EXTERNAL\u CONTENT\u URI

String[] projection = {    
    MediaStore.Audio.Media._ID,
    MediaStore.Audio.Media.DISPLAY_NAME,
    MediaStore.Audio.Media.DURATION
};
Cursor cursor = getActivity().getContentResolver().query(
    MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
    projection, // Which columns to return

    MediaStore.Audio.Media.DATA + " like ? ", // Return all rows
    new String[] {"%/path/to/my/files/%"},

    // or: 
    // MediaStore.Images.Media.DATA + "=? ",
    // new String[] { filePath }, 

    null);

使用此选项时出现异常:java.lang.IllegalArgumentExeption:列“duration”不存在如果该列用于音频,请使用:MediaStore.audio.Media.EXTERNAL\u CONTENT\u URI。将所有
MediaStore.Images
替换为
MediaStore.Audio
。如果是Vide,那么您有
MediaStore.Video…
I使用这个:Cursor Cursor=this.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL\u CONTENT\u URI,projection,MediaStore.Audio.Media.DATA+“=?”,//返回所有行新字符串[]{/mnt/sdcard/sound/”,null);但它返回空为什么???!!!!不知道,我在我的2.3.3索尼XPeria上测试了这段代码(音频的更新答案),它可以工作。添加任何权限??!!