HarmonyOS 鸿蒙Next 使用 DocumentViewPicker select 配置 fileSuffixFilters 为自定义文件后缀名无法显示

发布于 1周前 作者 htzhanglong 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 使用 DocumentViewPicker select 配置 fileSuffixFilters 为自定义文件后缀名无法显示 如标题所述,这是个bug还是特性,我配置 fileSuffixFilters: ['.md'] 可以筛选出 .md 后缀格式的文件,但是配置自定义后缀就筛选不出来。

6 回复

配置 fileSuffixFilters: ['.md'],如下图所示,唤起的文件选择器会自动把 .md 后缀格式的文件列出来,这样用户可以很方便地选择文件,不用再通过输入框去寻找。

4B7171A5CA43D4475D0D4044C9B30E4B.jpg

配置 fileSuffixFilters: ['.sli'],如下图所示,唤起的文件选择器不会自动把 .sli 后缀格式的文件列出来,但是通过输入框可以搜索到 .sli 后缀格式的文件。

0FB4BCD4DC4B21EBA075958EA8DAE608.jpg

D6956F65469669AA53EBE3470BB60BE9.jpg

更多关于HarmonyOS 鸿蒙Next 使用 DocumentViewPicker select 配置 fileSuffixFilters 为自定义文件后缀名无法显示的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我无法复现你说的问题,我目前尝试的demo如下:

import { common } from '@kit.AbilityKit';
import { picker } from '@kit.CoreFileKit';
import { BusinessError } from '@kit.BasicServicesKit';

@Entry
@Component
struct Index {
  @State message: string = 'hello World';

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() => {
            let context = getContext(this) as common.Context; // 请确保getContext(this)返回结果为UIAbilityContext
            select(context)
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

async function select(context: common.Context) {
  // 需确保 context 由 UIAbilityContext 转换而来
  try {
    let documentSelectOptions = new picker.DocumentSelectOptions();
    documentSelectOptions.fileSuffixFilters = ['.aaa']
    let documentPicker = new picker.DocumentViewPicker(context);
    documentPicker.select(documentSelectOptions).then((documentSelectResult: Array<string>) => {
      console.info('DocumentViewPicker.select successfully, documentSelectResult uri: ' +
      JSON.stringify(documentSelectResult));
    }).catch((err: BusinessError) => {
      console.error('DocumentViewPicker.select failed with err: ' + JSON.stringify(err));
    });
  } catch (error) {
    let err: BusinessError = error as BusinessError;
    console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err));
  }
}

我先是使用apk作为后缀,可以选择到我下载里面的apk文件,后面我把apk文件的后缀重命名改成aaa,然后用上面的demo代码跑,结果也能搜索到先前从apk改成aaa后缀的文件,所以你说的情况在我这边不成立,能麻烦详细描述下你这边的具体情况或者demo代码吗,看看到底是哪个环节问题

你好!我把你代码拷贝过来运行了一下,依然存在我说的问题,而且在我手机上甚至连 apk 文件都识别不出来,只能识别出 .md 和 .jpg 这些后缀的文件,甚至我把后缀改成 .json 也识别不出来,但是我进一步点击文件选择器的搜索框,输入目标文件,是能搜到的。

我的手机是 mate60 Pro ,软件版本是 5.0.0.115。

我的软件已上架了,名字叫“书立”,你可以试一下,点击首页右侧更多按钮,先导出 .sli 格式文件,然后再导入 .sli 格式文件,会出现上面我说的问题。

我这边是mate60 5.0.0.106,我用同事的mate60 5.0.0.123,我两个手机都试了你说的书立,都是可以搜索到的啊,比如我导出到某个目录,我要去那个目录下去找,而不是直接就能看到,你现在是到导出目录下也看不到吗?是的话升级下版本看看,

你好!使用搜索框搜文件,无论后缀是 .sli 还是 .md,都可以搜到。

我这里遇到的问题是,使用 fileSuffixFilters: ['.sli'] 配置后,没法自动把 .sli 后缀的文件给批量筛选出来显示到文件选择器上,但是配置 fileSuffixFilters: ['.md'] 可以自动筛选出 .md 后缀格式的文件。

我想了解的是 fileSuffixFilters: ['.md'] 这种配置是不是有一种自动筛选的功能,自动把相应后缀的文件提取出来,显示到文件选择面板上,让用户手动选择合适的文件,同时用户也可以使用搜索框搜索文件。

关于配置 fileSuffixFilters: ['.md']fileSuffixFilters: ['.sli'] 所弹出的文件选择器的不同,我在下一个评论里以富文本的形式展示出来。

在HarmonyOS鸿蒙Next系统中,若使用DocumentViewPicker组件并配置fileSuffixFilters为自定义文件后缀名但无法显示,这通常是因为配置方式或后缀名格式有误。

请确保你按照以下步骤正确配置:

  1. 检查后缀名格式fileSuffixFilters接受一个字符串数组,每个字符串代表一个后缀名,确保后缀名前不带点(.),例如应配置为["txt", "pdf"]而非[".txt", ".pdf"]

  2. 确认配置位置:确保fileSuffixFilters是在DocumentViewPicker的对应属性或配置方法中正确设置。

  3. 重启应用:修改配置后,确保重启应用以使更改生效。

  4. 检查系统权限:确认应用已获取必要的文件访问权限,特别是针对你希望筛选的文件类型。

  5. 版本兼容性:检查当前鸿蒙系统版本是否支持你正在使用的DocumentViewPicker特性及配置方式。

如果以上步骤均无误,但问题依旧存在,可能是系统bug或特定版本的限制。此时,如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部