我想让Android默认音乐播放器开始播放。我用这段代码来做到这一点:
if (((AudioManager) context
.getSystemService(context.AUDIO_SERVICE)).isMusicActive()) {
// pause
Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "pause");
context.sendBroadcast(i);
} else {
// play
Intent i = new Intent("com.android.music.musicservicecommand");
i.putExtra("command", "play");
context.sendBroadcast(i);
}
当音乐播放器应用在前台或后台运行时,它可以正常工作,否则不行。
所以我在else语句中用它来启动它:
Intent intent = new Intent("android.intent.category.APP_MUSIC");
inintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(in);
但它不起作用,应用程序崩溃。我需要使用permision来做到这一点吗?如果是的话,什么是permision?如果不是,那有什么问题?
这是stacktrace:
D/AudioManager(20102): isMusicActive()? --> false
W/CpuWake ( 185): >>acquireCpuPerfWakeLock!
W/CpuWake ( 185): <<acquireCpuPerfWakeLock!
I/ActivityManager( 185): START intent from pid 20102
W/System.err(20102): android.content.ActivityNotFoundException: No Activity found to handle Intent
{ act=android.intent.category.APP_MUSIC flg=0x10000000 }
编辑:问题已更新
答案 0 :(得分:0)
将此用于api 15以下
Intent intent = new Intent("android.intent.action.MUSIC_PLAYER");
startActivity(intent);
以后使用android.intent.category.APP_MUSIC.
试试这个com.android.music.MediaPlaybackActivity
其中com.android.music
是我设备中的deafult播放器的包名称ICS 4.0.4
答案 1 :(得分:0)
这解决了问题:
i = new Intent(Intent.ACTION_VIEW);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri u = Uri.withAppendedPath(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,"1");
context.startActivity(i);
此外,它不依赖于音乐播放器的包名,适用于所有设备。