我正在尝试将手机上的SD卡中的歌曲名称添加到列表视图中,但我得到一个空指针异常......
private void updateList() {
String[] proj = { MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Artists.ARTIST };
Cursor tempCursor = managedQuery(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
proj,
null,
null,
null);
int col_index = -1;
int numSongs = tempCursor.getCount();
while (tempCursor.moveToNext()) {
col_index = tempCursor.getColumnIndexOrThrow(
MediaStore.Audio.Artists.ARTIST);
songname.add(tempCursor.getString(col_index));
}
ArrayAdapter<String> songss = new ArrayAdapter<String>(
this, R.id.songs, songname);
setListAdapter(songss);
}
答案 0 :(得分:0)
我只是简单地从sdcard获取歌曲数据,如下所示......这对你有帮助
Cursor cursor = getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null,
null);
if(cursor.moveToFirst())
{
for(int j=0;j<cursor.getCount();j++)
{
int ALBUM_ID = cursor.getInt((cursor
.getColumnIndex(MediaStore.Audio.AlbumColumns.ALBUM_ID)));
String album_url = null;
Uri sArtworkUri = Uri
.parse("content://media/external/audio/albumart");
Uri uri = ContentUris.withAppendedId(sArtworkUri, ALBUM_ID);
album_url = uri.toString();
ContentResolver res = this.getContentResolver();
// Album
String album_name = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.AlbumColumns.ALBUM));
String year = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.AudioColumns.YEAR));
// String year = cursor.getString(cursor
// .getColumnIndex(MediaStore.Audio.AlbumColumns.NUMBER_OF_SONGS));
// artist
String artist_name = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.ArtistColumns.ARTIST));
// displayname
String DisplayName = cursor.getString(cursor
.getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME));
// title
String Title = cursor.getString(cursor
.getColumnIndex(MediaStore.MediaColumns.TITLE));
}