3

Android SDK を使用して managedQuery を実行したいと考えています。返された結果は、それぞれのファイル拡張子(たとえば、必ずしも名前ではない) によってフィルター処理されます。私はかなりの調査を行い、疲れており、コミュニティが私を助けてくれることを望んでいます..答えはそこにあると確信していますが、SQLの本などを読む代わりに、何かをしようとしています.それは非常に単純なはずですが、解決策が見つかりません。

私がやりたいことは、本質的に次のようなものです:

managedQuery(Audio.Media.EXTERNAL_CONTENT_URI, myProjection, Audio.Media.DATA + " like ? ", new String[] {"%mp3%"}, null );

これは、タイトルが「mymp3.wav」のようなものである場合を除いて機能しますが、「mp3」が名前に含まれているため、このクエリはそれを返しますが、それは私が望むものではありません->純粋にファイルに基づいてフィルタリングしたい拡張子(または、それを行う方法がある場合はファイルタイプ[たとえば、ファイルの内容が実際にはmp3であるにもかかわらず、mp3のファイル拡張子名が.wavに変更された場合、それは私の目的にも機能します]) . ソリューションは、複数の拡張子/ファイル タイプをフィルタリングする方法を示す必要があります (たとえば、クエリですべての .mp3 ファイルと .wav ファイルを返したいが、.amr ファイルは返さない場合)。

さらに、あなたがいる間に、結果をアルファベット順に並べ替えたいと思います。私は次のようなことを試しました:

managedQuery(Audio.Media.EXTERNAL_CONTENT_URI, myProjection, null, null, MediaStore.Audio.Media.TITLE + " ASC" );

ただし、結果全体をフィルタリングするわけではありません...つまり、返されるリストはmp3タイトルなどでソートされ、最後に.wavファイルもアルファベット順にソートされてリストに追加されますしかし、ファイルの種類に関係なく、リスト全体をアルファベット順にしたいです。

ここにいる誰かがこれに簡単に答えることができることを知っています->事前に感謝します!!!

4

1 に答える 1

8

%mp3%に変えるだけでいいと思います%mp3。これにより、「mp3」がファイル名の最後に強制されます。

複数のファイル タイプを選択する必要がある場合は、次のようにします。

managedQuery(
  Audio.Media.EXTERNAL_CONTENT_URI,
  myProjection, 
  Audio.Media.DATA + " like ? OR " + Audio.Media.DATA + " like ? ", 
  new String[] {"%mp3","%wav"}, 
  MediaStore.Audio.Media.TITLE + " ASC" );
于 2011-10-28T18:08:37.600 に答える