2012-10-02 35 views
10

Có cách nào để bắt đầu Bản nhạc Spotify từ URI của nó không?Bắt đầu Bài hát từ Mục tiêu Spotify

Tôi đã thử các cách tiếp cận sau nhưng không có cách nào trong số đó hoạt động. Khi Spotify mở ra, nó luôn luôn nằm trong trang Danh sách phát, thay vì trình phát của bản nhạc.

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

Cảm ơn

Trả lời

15

Tìm thấy câu trả lời trên kênh #spotify trên freenode (IRC). Cảm ơn mọi người!

Tôi đặt nó vào đây để người khác biết về:

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

Tính năng này không còn hoạt động nữa - ứng dụng spotify sẽ mở ra nhưng nhạc không được phát tự động. Có ai biết cách làm việc này không? – barkside

+0

Cảm ơn bạn tốt –

2

Đầu tiên là phiên bản cho Spotify cũ. Đối với các phiên bản mới, bạn có thể sử dụng phiên bản thứ hai.

Bằng cách này đầu tiên nó sẽ thử với phiên bản cũ, nếu nó không thành công với một ngoại lệ nó thử với điều thứ hai :)

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

Tôi không chắc mình hiểu, mã URI này được chuyển ở đâu trong mã này? – dornad

+0

Tôi không nghĩ rằng spotify sẽ sử dụng uri trong mục đích tìm kiếm của mình. Trong ví dụ của tôi, anh ấy đang sử dụng tìm kiếm với tên đường và tên nghệ sĩ. – StErMi

+1

OK, tôi hiểu điều này ngay bây giờ, rất tiếc là tôi không cố gắng thực hiện tìm kiếm, tôi đã có URI của các bài hát tôi muốn phát trên ứng dụng. Tôi tự hỏi, làm sao bạn phát hiện ra rằng Spotify hỗ trợ kiểu Intent Search này. Có anyway để biết những loại Intent nào Spotify (hoặc bất kỳ ứng dụng Android cho rằng vấn đề) hỗ trợ? – dornad

0

Nếu bạn nhận được danh sách nhạc cho nghệ sĩ trên ứng dụng Spotify. Bạn cần bắt đầu theo đuổi ý định. Bạn không cần phải đóng gói tên hoặc hoạt động của Spotify.

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("spotify:artist:" + "ARTIST SPOTIFY LINK")); 
       startActivity(intent); 
Các vấn đề liên quan