我正在尝试在Spotify应用中播放已知的播放列表。我得到的最好的是加载播放列表,但不播放它。
我尝试了两件事。首先从搜索开始:
Intent intent = new Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH);
intent.setComponent(new ComponentName("com.spotify.music",
"com.spotify.music.MainActivity"));
intent.putExtra(MediaStore.EXTRA_MEDIA_FOCUS,
MediaStore.Audio.Playlists.ENTRY_CONTENT_TYPE);
intent.putExtra(MediaStore.EXTRA_MEDIA_PLAYLIST, <PLAYLIST>);
intent.putExtra(SearchManager.QUERY, <PLAYLIST>);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
我尝试用已知播放列表的名称替换PLAYLIST。还试过像“4Rj0zQ0Ux47upeqVSIuBx9”,“spotify:user:11158272501:playlist:4Rj0zQ0Ux47upeqVSIuBx9”等所有这些都是对这些字符串的搜索失败。
第二次尝试是View intent:
String uri = "https://play.spotify.com/user/11158272501/playlist/4Rj0zQ0Ux47upeqVSIuBx9";
Intent intent= new Intent( Intent.ACTION_VIEW, Uri.parse(uri) );
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
这会加载播放列表但不播放。如果我然后使用其中一种方法发送KEYCODE_MEDIA_PLAY键,它只会恢复当前正在播放的列表,而不是这个新加载的列表。
任何人的帮助(包括Spotify开发者)?
BTW我不想使用Spotify SDK来实现我自己的Spotify播放器 - 当用户的设备上已经安装了一个非常好的播放器时,必须这样做是一种耻辱。
答案 0 :(得分:7)
我从this blog找到答案。我缺少的是播放列表URI作为意图中的数据Uri。因此,请勿使用适当的Android搜索方式播放Play。
所以,使用问题中的第一个方法,你最终会得到这个:
Intent intent = new Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH);
intent.setData(Uri.parse(
"spotify:user:11158272501:playlist:4Rj0zQ0Ux47upeqVSIuBx9"));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
需要注意的三件事:
这最后一点意味着它实际上并不适合我...所以不接受答案。
答案 1 :(得分:0)
只需将:play
添加到Spotify Intent URI
spotify:album:3avifwTCXoRzRxxGM1O0eN:play