Запуск песни из Spotify Intent

Есть ли способ запустить Spotify Track из его URI?

Я пробовал следующие подходы, но никто из них не работает. Когда Spotify открывается, он всегда попадает на страницу "Списки воспроизведения", а не на проигрыватель треков.

String spotifyTrackURI = "spotify:track:1cC9YJ8sQjC0T5H1fXMUT2";
Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage("com.spotify.mobile.android.ui");

// I've tried with Intent#putExtra()..
launchIntent.putExtra( SearchManager.QUERY, spotifyTrackURI );
// or with setData
launchIntent.setData(Uri.parse(spotifyTrackURI))

context.startActivity(launchIntent);

Спасибо

Ответ 1

Найден ответ на канале #spotify на Freenode (irc). Спасибо всем!

Я помещаю его здесь, чтобы другие люди знали о нем:

// right click on a track in Spotify to get the URI, or use the Web API.
String uri = "spotify:track:<spotify uri>"; 
Intent launcher = new Intent( Intent.ACTION_VIEW, Uri.parse(uri) );
startActivity(launcher);

Ответ 2

Первый - для старой версии Spotify. Для новых версий вы можете использовать второй.

Таким образом, сначала попробуйте использовать старую версию, если она не сработает с исключением, она пытается со вторым:)

try {
                final Intent intent = new Intent(Intent.ACTION_MAIN);
                intent.setAction(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH);
                intent.setComponent(new ComponentName("com.spotify.mobile.android.ui", "com.spotify.mobile.android.ui.Launcher"));
                intent.putExtra(SearchManager.QUERY, artistName + " " + trackName );
                context.startActivity(intent);
            } catch ( ActivityNotFoundException e ) {
                final Intent intent = new Intent(Intent.ACTION_MAIN);
                intent.setAction(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH);
                intent.setComponent(new ComponentName("com.spotify.mobile.android.ui", "com.spotify.mobile.android.ui.activity.MainActivity"));
                intent.putExtra(SearchManager.QUERY, artistName + " " + trackName );
                context.startActivity(intent);
            }

Ответ 3

Если вы получаете плейлист для приложения Artist on Spotify. Вам нужно начать с намерения. Вам не нужно указывать имя или активность Spotify.

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("spotify:artist:" + "ARTIST SPOTIFY LINK"));
                startActivity(intent);