// Query for Songs
  private ArrayList<SongItem> queryForSongs(
      Uri uri, String[] projection, String selection, String[] args, String sortOrder) {
    Cursor cur = mCR.query(uri, projection, selection, args, sortOrder);

    if (cur == null) {
      return null;
    }

    if (!cur.moveToFirst()) {
      return null;
    }

    ArrayList<SongItem> list = new ArrayList<SongItem>();

    int idColumn = cur.getColumnIndex(MediaStore.Audio.Media._ID);
    int titleColumn = cur.getColumnIndex(MediaStore.Audio.Media.TITLE);
    int artistColumn = cur.getColumnIndex(MediaStore.Audio.Media.ARTIST);
    int artistIDColumn = cur.getColumnIndex(MediaStore.Audio.Media.ARTIST_ID);
    int albumColumn = cur.getColumnIndex(MediaStore.Audio.Media.ALBUM);
    int albumIDColumn = cur.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID);
    int durationColumn = cur.getColumnIndex(MediaStore.Audio.Media.DURATION);
    int dataColumn = cur.getColumnIndex(MediaStore.Audio.Media.DATA);

    do {
      SongItem si = new SongItem();
      si.id = cur.getLong(idColumn);
      si.title = cur.getString(titleColumn);
      si.artist = cur.getString(artistColumn);
      si.artistID = cur.getLong(artistIDColumn);
      si.album = cur.getString(albumColumn);
      si.albumID = cur.getLong(albumIDColumn);
      si.duration = cur.getLong(durationColumn);
      si.dataStream = cur.getString(dataColumn);
      list.add(si);
    } while (cur.moveToNext());

    return list;
  }