2012-10-02 11 views
10

Gibt es trotzdem einen Spotify-Track von seinem URI zu starten?Starten eines Songs von Spotify Absicht

Ich habe die folgenden Ansätze versucht, aber keiner von ihnen funktioniert. Wenn Spotify geöffnet wird, landet es immer auf der Playlist-Seite anstelle des Track-Players.

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); 

Dank

Antwort

15

die Antwort auf dem #spotify Kanal auf Freenode gefunden (IRC). Danke allen!

ich es hier für andere Menschen setzen zu wissen:

// 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

Das funktioniert nicht mehr - die Spotify-App wird geöffnet, aber Musik wird nicht automatisch abgespielt. Wer weiß, wie das funktioniert? – barkside

+0

Vielen Dank, mein Herr –

2

erste für alte Spotify-Version. Für neue Versionen können Sie die zweite verwenden.

Auf diese Weise wird es zuerst mit alter Version versuchen, wenn es mit einer Ausnahme mit dem zweiten Versuch fehlschlägt :)

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); 
      } 
+0

Ich bin mir nicht sicher, ich verstehe, wo in diesem Code die URI übergeben wird? – dornad

+0

Ich denke nicht, dass spotify URI in seiner Suchabsicht verwenden wird. In meinem Beispiel verwendet er eine Suche mit Trackname und Künstlername. – StErMi

+1

OK, das verstehe ich jetzt, leider versuche ich nicht, eine Suche durchzuführen, ich habe bereits die URI der Lieder, die ich auf der App abspielen möchte. Ich frage mich, wie Sie herausgefunden haben, dass Spotify diesen Suchtyp unterstützt. Gibt es überhaupt Informationen darüber, welche Intent-Typen von Spotify (oder einer anderen Android-App) unterstützt werden? – dornad

0

Wenn Sie Playlist für Künstler auf Spotify App bekommen. Du musst der Absicht folgen. Sie müssen den Namen oder die Aktivität von Spotify nicht verpacken.

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