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:エミュレーターでこれを試してみました - 私のコードは動作します! しかし、2 つのデバイスではそうではありません (SE Xperia Neo と一部の Acer)。しかし、この回答の2番目のバリアントを試すと、既存のすべてのファイルマネージャーと「音楽選択」のメニューが表示されます! ただ、この「Music select」を開くためだけに Intent を書く必要があります。

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 に答える