Android:打开选择音频的对话框

时间:2012-08-20 13:49:40

标签: android audio select android-intent

我需要允许用户从他的媒体库中选择一些音频文件。

这是我正在尝试做的事情:

        Intent tmpIntent = new Intent(
              Intent.ACTION_PICK,
              android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
              );

        startActivityForResult(tmpIntent, 0);

但我得到错误:

08-20 17:44:35.444: E/AndroidRuntime(3773): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.PICK dat=content://media/external/audio/media }

为了安全起见,我也尝试了INTERNAL_CONTENT_URI,但结果相似。

我怎样才能做到这一点?

UPD:顺便说一句,如果我尝试传递URI来获取图片(例如android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI),那么它就可以了:打开图片打开对话框。

UPD2:刚在模拟器上试过这个 - 我的代码可以运行!但在两台设备上却没有(SE Xperia Neo和一些Acer)。但是,如果我尝试this answer中的第二个变体,那么我将获得所有现有文件管理器的菜单,以及“音乐选择”!但我需要写Intent才能打开这个“音乐选择”。

1 个答案:

答案 0 :(得分:4)

好吧,我在LogCat中看到当我打开音乐选择对话框时会发生什么,我得到了我需要的东西。这段代码适合我:

     Intent tmpIntent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
     startActivityForResult(tmpIntent, 0);

如果我想获得通知声音,那么我需要额外添加,就像那样:

     Intent tmpIntent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
     tmpIntent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
     startActivityForResult(tmpIntent, 0);