Play song on default music player - android

Yoav Sternberg picture Yoav Sternberg · Jun 19, 2015 · Viewed 9.4k times · Source

My app show list of song from sd card. I want to be able to play the song on the default player. I've got all the data about the song: id, title, album, artist, path...

Is there a way to launch the default player to play the song?

What I've tried:

  1. Using Intent.CATEGORY_APP_MUSIC. I can launch the default player, but can't set the song. Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_MUSIC) open the default music app. Howeverintent.setData(Uri.withAppendedPath(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id)) throws exception that intent not found.

  2. Using deprecated MediaStore.INTENT_ACTION_MUSIC_PLAYER. Activity not found. Intent(MediaStore.INTENT_ACTION_MUSIC_PLAYER).setDataAndType(Uri.fromFile(songFile), "audio/*")

  3. Using INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH. Launch the search, but not the song, says couldn't prepare mix on Play music. However, it works from Google now, so it may be the key. Intent(MediaStore.INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH).putExtra(SearchManager.QUERY, name)
  4. Using ACTION_VIEW. it works but it launch a compact version of the player, and I want the full player.

compat view

Note: I want to launch External player, not in my app.

Update: Looks like Google Now hardcoded Play Music and Youtube support.

Answer

Karoly picture Karoly · Jun 19, 2015

If you would like to start the default music player app on the device, should try this:

Intent intent = new Intent();  
intent.setAction(android.content.Intent.ACTION_VIEW);  
File file = new File(YOUR_SONG_URI);  
intent.setDataAndType(Uri.fromFile(file), "audio/*");  
startActivity(intent);