我想使用Android SDK进行ManagedQuery,其中返回的结果由其各自的文件 扩展名 (例如,不一定是名称)过滤。我已经做了很多研究,很累,希望社区能够为我提供帮助。那应该很简单,但找不到解决方案。
从本质上讲,我想做的是:
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文件追加到列表中,这些文件也按字母顺序排序但无论文件类型如何,我都希望整个列表按字母顺序排列。
我知道这里有人可以轻松回答->预先感谢!!!
我认为您要做的就是更改%mp3%为%mp3。这将强制“ 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" );