fat*_*cat 3 sql android projection cursor mediastore
我想使用Android SDK进行托管,其中返回的结果按其各自的文件扩展名进行过滤(例如,不一定是名称).我做了很多研究,很累,希望社区可以帮助我..我肯定答案就在那里,但是,除了阅读SQL书或其他什么,我只是想做点什么这应该很简单,但找不到解决方案.
我想要做的事情基本上是这样的:
managedQuery(Audio.Media.EXTERNAL_CONTENT_URI, myProjection, Audio.Media.DATA + " like ? ", new String[] {"%mp3%"}, null );
Run Code Online (Sandbox Code Playgroud)
这工作除了,如果标题是"mymp3.wav",这个查询仍将返回它,因为'mp3'在名称中,但这不是我想要的 - >我希望它纯粹基于文件过滤扩展(或者,如果有办法,可以使用文件类型[例如,如果mp3的文件扩展名更改为.wav,即使文件的内容实际上是mp3,也可以用于我的目的]) .解决方案应指明一种过滤多种扩展/文件类型的方法(例如,如果我希望查询返回所有.mp3文件以及.wav文件,但不返回.amr文件).
此外,虽然我有你,但我想按字母顺序对结果进行排序.我尝试过类似的东西:
managedQuery(Audio.Media.EXTERNAL_CONTENT_URI, myProjection, null, null, MediaStore.Audio.Media.TITLE + " ASC" );
Run Code Online (Sandbox Code Playgroud)
但是,这不会过滤整个结果...也就是说,返回的列表按照mp3标题进行排序,然后,最后,它会向列表追加.wav文件也按字母顺序排序但我希望整个列表都是按字母顺序排列的,无论文件类型如何.
我知道有人在这里可以轻松回答这个问题 - >提前谢谢!!!
我认为,所有你需要做的是改变%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" );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1925 次 |
| 最近记录: |