在我的 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的深处,画了一个空白......
请帮忙!我提前谢谢你。