android获取媒体数据库问题

public List<Music> getScrollData(int offset, int maxResult){
List<Music> musics = new ArrayList<Music>();
Cursor cursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
//遍历媒体数据库
if(cursor.moveToFirst()){
while (!cursor.isAfterLast()) {
//歌曲编号
int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID));
//歌曲id
int trackId=cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID));
//歌曲标题
String title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.TITLE));
//歌曲的专辑名:MediaStore.Audio.Media.ALBUM
String album = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM));
//歌曲的歌手名: MediaStore.Audio.Media.ARTIST
String artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.ARTIST));
//歌曲文件的路径 :MediaStore.Audio.Media.DATA
String url = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));
cursor.moveToNext();
musics.add(new Music(id,artist,title));
}
cursor.close();
}

return musics;
}
以下这句出现:NullPointerException问题
Cursor cursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);

在你这个方法里再写个参数context,把显示列表的activity的对象传给它,就行了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-09-16
你的context 是哪儿来的??明显没有传值进来。追问

我的想法是想在Service中获取媒体数据库,然后显示在Activity的ListView上。

追答

思路没问题 Cursor cursor = context.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
null, null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);代码中的context哪儿传进来的,你改为this试试,获取这些数据是很快的,用不用Service都无所谓,用异步还方便

追问

context是怎么传的?不是从这里获取到的数据传出去吗?

追答

贴代码吧。。。你的是空指针异常,问题应该出现在context上,,找到这个是在哪儿定义的。

第2个回答  2013-09-17
断点设置一下,跟踪一下你的context这个值就知道了
相似回答