当前位置: 首页 > 面试题库 >

按文件扩展名(或文件类型)过滤托管查询,以获取Android游标

王昆
2023-03-14
问题内容

我想使用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”位于文件名的末尾。

如果您需要选择多种文件类型,请按照以下步骤操作:

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" );


 类似资料:
  • cmf_get_file_extension($filename) 功能 获取文件扩展名 参数 $filename: string 文件名 返回 string 文件扩展名

  • X2.2.0新增 sp_get_file_extension($filename) 功能: 获取文件扩展名 参数: $filename: 文件名 返回: 类型string,文件扩展名 使用: $suffix = sp_get_file_extension('23232.png');

  • 问题内容: 我用Express 3在node.js中创建文件上传功能。 我想获取图像的文件扩展名。所以我可以重命名文件,然后将文件扩展名附加到它。 如何在node.js中获取图像的扩展名? 问题答案: 我相信您可以执行以下操作来获取文件名的扩展名。

  • cmf_get_file_extension($filename) 功能 获取文件扩展名 参数 $filename: string 文件名 返回 string 文件扩展名

  • 所以我试图从一个文件中获取扩展名,这样我就可以将它与一个字符串进行比较,看看扩展名是否与我要查找的扩展名匹配。然而,目前我认为我能够得到扩展,但然后比较它与我想要找到的是导致我的应用程序崩溃和关闭立即。此外,我希望它能够处理没有扩展名的文件,只是将它们冒充为与所需的文件扩展名不匹配的文件。下面是执行此操作的代码片段,希望有人能向我解释我在这里做错了什么。 附注:我是Java和Android开发的新

  • 问题内容: 我有这个PHP代码: 如果我有一个名为的文件,则此函数返回。 我想做相反的事情,我希望函数不带扩展名就返回。 该文件只是变量中的字符串。 问题答案: 不需要所有这些。签出pathinfo() ,它为您提供了路径的所有组件。 手册中的示例: 代码输出: 或者,您只能获得某些部分,例如: