Android文件选择器筛选.ml后缀文件的实现方案
Android 筛选.ml后缀文件的实现方案
需求:在Android文件选择器中仅显示带有.ml后缀的文件,尝试以下两种常规方法均失效:
- 通过
MimeTypeMap获取.ml对应的MIME类型,返回值为null - 设置Intent的
EXTRA_MIME_TYPES为"application/ml",无任何效果
由于.ml属于非标准后缀,没有系统默认关联的MIME类型,无法通过系统文件选择器的MIME筛选规则实现目标,且不想采用耗时的递归遍历方案、希望保留文件浏览交互,最终通过自定义文件浏览器实现需求:用ListView展示目录结构,同时筛选出.ml文件。
核心实现代码如下:
public ArrayList<File> startBrowse(File dir, String pattern) { browseResult = new ArrayList<>(); browseResultNames = new ArrayList<>(); File listFile[] = dir.listFiles(); if (listFile != null) { for (int i = 0; i < listFile.length; i++) { // 若是文件夹则直接加入列表 if (listFile[i].isDirectory()) { browseResult.add(listFile[i]); browseResultNames.add(listFile[i].getPath()); } else { // 筛选符合后缀的文件 if (listFile[i].getName().endsWith(pattern)){ browseResult.add(listFile[i]); browseResultNames.add(listFile[i].getPath()); } } } } return browseResult; }
内容的提问来源于stack exchange,提问作者Nadin Martini
相关产品推荐
相关产品推荐

