无法使用startacrtivity启动Android默认音乐播放器

时间:2013-12-22 15:57:46

标签: android android-intent

我想让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 }

编辑:问题已更新

2 个答案:

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

此外,它不依赖于音乐播放器的包名,适用于所有设备。