2012-10-02 2 views
10

¿Hay alguna forma de iniciar una pista de Spotify desde su URI?Iniciando una canción de Spotify Intent

He intentado los siguientes enfoques, pero ninguno de ellos funciona. Cuando se abre Spotify, siempre aterriza en la página Listas de reproducción, en lugar del jugador de la pista.

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

Gracias

Respuesta

15

encontrado la respuesta en el canal #spotify en Freenode (IRC). ¡Gracias a todos!

lo estoy poniendo aquí para otras personas a conocer:

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

Esto ya no funciona: se abre la aplicación spotify, pero la música no se reproduce automáticamente. Alguien sabe cómo hacerlo funcionar? – barkside

+0

Muchas gracias señor –

2

primera es para la vieja versión de Spotify. Para nuevas versiones, puede usar la segunda.

De esta manera se intentará primero con la versión antigua, si se produce un error con una excepción que tratar con el segundo :)

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

No estoy seguro de entender, ¿en qué parte de este código se pasa el URI? – dornad

+0

No creo que Spotify use uri en su intento de búsqueda. En mi ejemplo, está usando una búsqueda con nombre de pista y nombre de artista. – StErMi

+1

OK, entiendo esto ahora, desafortunadamente no estoy tratando de hacer una búsqueda, ya tengo el URI de las canciones que quiero reproducir en la aplicación. Me pregunto cómo descubrió que Spotify admite este tipo de Intento de búsqueda. ¿Hay alguna forma de saber qué tipos de intenciones admite Spotify (o cualquier aplicación de Android)? – dornad

0

Si recibe lista de reproducción para el artista en Spotify aplicación. Debe comenzar a seguir el intento. No es necesario que el nombre del paquete o la actividad de Spotify.

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