2013-12-22 86 views
1

我想讓android默認音樂播放器開始播放。我用這個代碼來做到這一點:無法啓動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?如果不是,那有什麼問題?

這裏是堆棧跟蹤:

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

該解決的問題:

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

而且它不依賴於音樂播放器的包名稱和工程上的所有設備。

0

用這個API低於15

Intent intent = new Intent("android.intent.action.MUSIC_PLAYER"); 
startActivity(intent); 

,並在以後使用​​

試試這個,com.android.music.MediaPlaybackActivity

其中com.android.music是deafult播放器的包名在我的設備ICS 4.0.4

+0

沒有工作,應用程序在嘗試啓動音樂播放器時仍然崩潰。 – Mehrdad

+0

你可以發佈stacktrace –

+0

stacktrace添加。 – Mehrdad

相關問題