2

在我的 Android 应用程序中,我希望用户能够选择专辑、艺术家和播放列表,然后发送一个意图让他们的默认媒体播放器播放它们。

我以标准方式获取 ID:

final Uri exAudioUri = Uri.parse("content://com.google.android.music.MusicContent/playlists");

final String[] proj = { MediaStore.Audio.Playlists._ID, MediaStore.Audio.Playlists.NAME };

final Cursor musiccursor = ctx.getContentResolver().query(exAudioUri, proj, null, null, null);

    String name = null;
    String id = null;

        if (musiccursor != null && musiccursor.getCount() > 0) {
            while (musiccursor.moveToNext()) {
                name = musiccursor.getString(musiccursor.getColumnIndexOrThrow(MediaStore.Audio.Playlists.NAME));
                id = musiccursor.getString(musiccursor.getColumnIndexOrThrow(MediaStore.Audio.Playlists._ID));

对于播放列表,我使用以下意图:

    Intent playMediaIntent = new Intent(Intent.ACTION_VIEW);
    playMediaIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    playMediaIntent.setType(MediaStore.Audio.Playlists.CONTENT_TYPE);
    playMediaIntent.putExtra("playlist", playlistID);

Google Play 音乐应用会拦截此内容并成功播放播放列表。

尝试对专辑执行相同操作会给我一个未找到的活动异常:

    Intent playMediaIntent = new Intent(Intent.ACTION_VIEW);
    playMediaIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    //playMediaIntent.setType("vnd.android.cursor.dir/track");
    playMediaIntent.setType(MediaStore.Audio.Albums.CONTENT_TYPE);
    //playMediaIntent.setData(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI);
    playMediaIntent.putExtra("album", albumID);

我知道这些是未记录的方法并且可能会发生变化,但是当用户已经选择了他们最喜欢的时,我不想实现自己的整个媒体播放器......

任何人都可以建议媒体播放器将拦截的任何“标准”代码吗?

或者,有没有一种方法可以从专辑(或艺术家)中获取所有歌曲,并发送包含要播放或排队的曲目 URI 数组的数据的意图?

去过谷歌/ Stackoverflow的深处,画了一个空白......

请帮忙!我提前谢谢你。

4

0 回答 0