如何进入音乐播放列表,然后调用音乐列表程序,播放歌曲

我在写一个Android应用程序,想实现访问音乐播放列表的功能。
在程序中,用户应该可以浏览音乐播放列表,选择出他喜欢的歌曲。
现在想实现的是当用户选中播放列表中的歌曲后,系统怎么连接上这个歌曲,如何把这首歌添加到默认音乐应用程序中,并且作为背景播放。
使用ContentProvider 或mediastore也不知道怎么实现?不知道如何在其他应用程序中访问数据。

            public MusicFile[] readAllMusic(Context context){
        Cursor cursor = context.getContentResolver().query(
                MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, new String[]{
                        MediaStore.Audio.Media.TITLE,
                        MediaStore.Audio.Media.ARTIST,
                        MediaStore.Audio.Media.ALBUM,
                        MediaStore.Audio.Media.YEAR,
                        MediaStore.Audio.Media.DURATION,
                        MediaStore.Audio.Media.DATA }, null, null,
                MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
        if(null==cursor){
            return null;
        }
        MusicFile[] array=new MusicFile[cursor.getCount()];
        int i=0;
        while (cursor.moveToNext()) {
        //MusicFile has tile,path....set specified value as follows
  //title=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
  //path=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
              array[i]=new MusicFile(cursor);
              i++;
        }
        return array;
    }

    public void play(MusicFile mf,Context context){
        File file = new File(mf.absolutePath);
        final Uri data = Uri.fromFile(file);
        final Intent intent = new Intent(null, data);
        intent.setDataAndType(data, "audio/*");
        context.startActivity(intent);
    }

想从播放列表里播放歌曲,调用这个函数:

PlaySongsFromAPlaylist( PlayListID ); // 0 < PlayListID < count

还有下面的每个函数:

 public void PlaySongsFromAPlaylist(int playListID){

        String[] ARG_STRING = {MediaStore.Audio.Media._ID,MediaStore.Audio.Media.DATA,MediaStore.Audio.Media.DISPLAY_NAME,MediaStore.Video.Media.SIZE,android.provider.MediaStore.MediaColumns.DATA};
        Uri membersUri = MediaStore.Audio.Playlists.Members.getContentUri("external", playListID);
        Cursor songsWithingAPlayList = mThis.managedQuery(membersUri, ARG_STRING, null, null, null);
        int theSongIDIwantToPlay = 0; // PLAYING FROM THE FIRST SONG
        if(songsWithingAPlayList != null)
        {
            songsWithingAPlayList.moveToPosition(theSongIDIwantToPlay);
            String DataStream = songsWithingAPlayList.getString(4);
            PlayMusic(DataStream);
            songsWithingAPlayList.close();
        }   
    }

     public static void PlayMusic(String DataStream){
        MediaPlayer mpObject = new MediaPlayer();
        if(DataStream == null)
            return;
        try {
            mpObject.setDataSource(DataStream);
            mpObject.prepare();
            mpObject.start();
        } catch (Exception e) {
            e.printStackTrace();
        }
     }