4

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

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

        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 和一些宏碁)。但是,如果我尝试这个答案的第二个变体,那么我会得到包含所有现有文件管理器的菜单,以及“音乐选择”!但我需要写意图只是为了打开这个“音乐选择”。

4

1 回答 1

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);
于 2012-08-21T04:28:40.713 回答