2012-10-02 133 views
10

無論如何要從它的URI開始播放Spotify歌曲嗎?從Spotify Intent開始播放歌曲

我嘗試以下方法,但他們沒有工作。當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); 

感謝

回答

15

找到答案的#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應用程序打開,但音樂不會自動播放。任何人都知道如何做到這一點? – barkside

+0

謝謝你,先生 –

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

我不知道我明白了,在這段代碼中的URI是被傳遞的嗎? – dornad

+0

我不認爲spotify會在他的搜索意圖中使用uri。在我的例子中,他使用了帶有trackname和artistname的搜索。 – StErMi

+1

好吧,我現在明白了,不幸的是我沒有試圖做搜索,我已經有了我想要在應用上播放的歌曲的URI。我想知道,您是如何發現Spotify支持此搜索意圖類型的。無論如何要知道Spotify(或任何Android應用程序)支持哪些Intent類型? – dornad

0

如果你播放列表上的Spotify應用藝術家。你需要開始下面的意圖。您無需打包Spotify的名稱或活動。

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