从片段中按意图启动默认音频播放器时出错

时间:2015-06-12 12:46:58

标签: android android-intent android-fragments

我有一个应用程序,我将需要播放一个mp3文件 位于手机上的SD卡。 该应用程序使用片段,我试图使用intent启动默认的AudioPlayer      Uri uri = Uri.parse(mediaStorageDir +" /" + name);                 Intent intent = new Intent(Intent.ACTION_VIEW,uri);                 startActivity(意向); 上面的代码导致以下错误:        找不到活动来处理Intent {act = android.intent.action.VIEW dat = / mnt / sdcard / Pictures / EFiles / 1.mp3}         在android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1408)         在android.app.Instrumentation.execStartActivity(Instrumentation.java:1378)         在android.app.Activity.startActivityForResult(Activity.java:2817)         在android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:829)         在android.support.v4.app.Fragment.startActivity(Fragment.java:897) 我想有一个问题,因为这个动作是从片段而不是活动执行的。 但是,我如何使用内部的意图来启动默认音频播放器 一个片段?

2 个答案:

答案 0 :(得分:0)

尝试用this.getActivity()

替换Intent.ACTION_VIEW

答案 1 :(得分:0)

对于活动,请尝试此

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

但要小心,因为它已被弃用,现在你必须使用(阅读API文档中的NOTE)

  

public static final String CATEGORY_APP_MUSIC在API级别15中添加

     

与ACTION_MAIN一起使用以启动音乐应用程序。活动   应该能够播放,浏览或操纵存储的音乐文件   设备。

     

注意:这不应该用作Intent的主键,因为   它不会导致应用程序启动正确的操作和   类别。相反,使用makeMainSelectorActivity(String,   String)在选择器中生成具有此类别的主Intent。

     

常数值:" android.intent.category.APP_MUSIC"

对于片段,请尝试:

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