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:
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.
Using deprecated MediaStore.INTENT_ACTION_MUSIC_PLAYER
. Activity not found.
Intent(MediaStore.INTENT_ACTION_MUSIC_PLAYER).setDataAndType(Uri.fromFile(songFile), "audio/*")
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)
ACTION_VIEW
. it works but it launch a compact version of the player, and I want the full player.Note: I want to launch External player, not in my app.
Update: Looks like Google Now hardcoded Play Music and Youtube support.
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);