鸿蒙实战开发-如何实现标准化数据定义与描述的功能。

介绍

本示例主要使用@ohos.data.uniformTypeDescriptor 展示了标准化数据定义与描述的功能,在新增预置媒体文件后,对媒体文件的utd标准类型获取、utd类型归属类型查询、获取文件对应的utd类型的默认图标、支持自定义数据类型等功能。 实现过程中还使用到@ohos.file.fs 、@ohos.router等接口。

效果预览

使用说明

  1. 在主界面,点击"Please select a media file"进入选择媒体类型的主页面;
  2. 在选择媒体类型界面,点击"下拉列表",在展开的列表中可以选择一种媒体类型,如"Audios",下面的列表中显示预制文件夹中所有归属于Audio的文件;
  3. 在选择媒体类型界面,点击文件列表中某个文件,跳转到"显示文件信息"界面,该界面中显示文件归属类型的图标和文件名;
  4. 在选择媒体类型界面,点击返回箭头图标,返回到"选择媒体类型"界面。

工程目录

bash 复制代码
entry/src/main/ets/
|---entryAbility
|---pages
|   |---displayMediaFile.ets       // 显示上一页选中文件的归属类型图标和文件名
|   |---Index.ets                  // 首页
|   |---selectMediaType.ets        // 主页面,提供媒体类型下拉列表,显示选中的媒体类型的所有文件

具体实现

新增文件夹和媒体文件功能

  • 为本示例新增文件夹和媒体文件功能封装在createPrecastFile。
  • 使用fs.accessSync来检查文件或文件夹是否已存在;
  • 使用fs.mkdirSync创建文件夹,文件夹在应用的沙箱目录files下创建;
  • 遍历文件名数组precastFiles,使用fs.accessSync检查文件是否已存在;

使用fs.openSync创建上一步检查结果为不存在的文件;

  • 本功能在首页的aboutToAppear接口中调用。

查找文件归属类型

选中媒体类型,在所有预置文件中查找归属于该类型的文件功能封装在UpdateSelectedFileList 。

  • 使用fs.listFileSync获取指定目录下的所有文件保存在数组中;
  • 遍历数组中每个文件,调用函数lastIndexOf获取文件后缀位置,再使用接口substring获取文件的后缀;
  • 使用getUniformDataTypeByFilenameExtension获取文件的utd;
  • 使用getTypeDescriptor获取标准化数据类型;
  • 使用接口belongsTo检查文件是否归属于选中的媒体类型,如果返回值为true,则将改文件名保存在显示数组中;
  • 通过标准化数据类型的属性iconFile,获取标准化数据类型的默认图标资源ID;

自定义数据类型的支持

自定义数据类型的实现

  • 在dev_eco开发时的资源配置目录中添加自定义数据类型配置文件utd.json5,路径:entry/src/main/resources/rawfile/arkdata/utd;
  • utd.json5中新建自定义数据类型数组UniformDataTypeDeclarations;
  • 数组中每个对象包含"typeId","belongingToTypes","FilenameExtensions","mimeTypes","description","referenceURL"6个属性字段。

针对自定义类型各字段的相关要求和限制

  • typeId: 定义标准化数据类型的ID,该ID具有唯一性,由应用bundleName +具体类型名组成,不可缺省,允许包含数字、大小写字母、-和.。
  • belongingToTypes:定义标准化数据类型的归属关系,即该标准化数据类型归属于哪个更高层级的类型,所属类型可以为多个,但是必须为已存在的数据类型(标准化数据类型预置类型或其他新增自定义数据类型),不能为应用自定义类型本身,不能为空,且与现有标准化数据类型、其他新增自定义数据类型不能形成环形依赖结构。
  • FilenameExtensions:应用自定义标准化数据类型所关联的文件后缀。可以缺省;可以为多个,每个后缀为以.开头且长度不超过127的字符串。
  • mimeTypes: 应用自定义标准化数据类型所关联的web消息数据类型。可以缺省;可以为多个,每个类型为长度不超过127的字符串。
  • description: 应用自定义标准化数据类型的简要说明。可以缺省;填写时,长度为不超过255的字符串。
  • referenceURL:应用自定义标准化数据类型的参考链接URL,用于描述类型的详细信息。可以缺省;填写时,长度为不超过255的字符串。

相关权限

ohos.permission.READ_MEDIA

ohos.permission.WRITE_MEDIA

ohos.permission.FILE_ACCESS_MANAGER

ohos.permission.STORAGE_MANAGER

依赖

不涉及

约束与限制

  1. 本示例仅支持标准系统上运行,支持设备:RK3568。
  2. 本示例为Stage模型,仅支持API11版本SDK,SDK版本号(API Version 11Release),镜像版本号(4.0Release)。
  3. 本示例涉及使用系统接口:@ohos.file.fs中的openSync接口,需要手动替换Full SDK才能编译通过 。
  4. 本示例需要使用DevEco Studio 版本号(4.0Release)及以上版本才可编译运行。
  5. 本示例涉及调用系统权限的接口,需要配置允许权限列表,可以参考特殊权限配置方法 ,在配置文件中的"allowed-acls"字段中增加"ohos.permission.READ_MEDIA", "ohos.permission.WRITE_MEDIA", "ohos.permission.FILE_ACCESS_MANAGER","ohos.permission.STORAGE_MANAGER"四个权限。

下载

如需单独下载本工程,执行如下命令:

bash 复制代码
git init
git config core.sparsecheckout true
echo code/BasicFeature/DataManagement/UDMF/UniformTypeDescriptor/UTDType/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master

为了帮助大家更深入有效的学习到鸿蒙开发知识点,小编特意给大家准备了一份全套最新版的HarmonyOS NEXT学习资源,获取完整版方式请点击→HarmonyOS教学视频:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

HarmonyOS教学视频:语法ArkTS、TypeScript、ArkUI等...视频教程


鸿蒙生态应用开发白皮书V2.0PDF: 获取完整版白皮书方式请点击→ https://docs.qq.com/doc/DZVVkRGRUd3pHSnFG?u=a42c4946d1514235863bb82a7b2ac128

鸿蒙 (Harmony OS)开发学习手册→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

一、入门必看

1.应用开发导读(ArkTS)
2.........

二、HarmonyOS 概念→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.系统定义
2.技术架构
3.技术特性
4.系统安全
5...

三、如何快速入门?→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.基本概念
2.构建第一个ArkTS应用
3...

四、开发基础知识→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.应用基础知识
2.配置文件
3.应用数据管理
4.应用安全管理
5.应用隐私保护
6.三方应用调用管控机制
7.资源分类与访问
8.学习ArkTS语言

五、基于ArkTS 开发→https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

1.Ability开发
2.UI开发
3.公共事件与通知
4.窗口管理
5.媒体
6.安全
7.网络与链接
8.电话服务
9.数据管理
10.后台任务(Background Task)管理
11.设备管理
12.设备使用信息统计
13.DFX
14.国际化开发
15.折叠屏系列

更多了解更多鸿蒙开发的相关知识可以参考:https://docs.qq.com/doc/DZVVBYlhuRkZQZlB3

相关推荐
逢生博客9 小时前
Mac 搭建仓颉语言开发环境(Cangjie SDK)
macos·华为·鸿蒙
青柠_项目管理9 小时前
PMP证书持有者,在华为、腾讯一般能拿多少薪资?
华为·pmp
小强在此12 小时前
【基于开源鸿蒙(OpenHarmony)的智慧农业综合应用系统】
华为·开源·团队开发·智慧农业·harmonyos·开源鸿蒙
Reuuse14 小时前
【HCIA-Datacom】华为VRP系统
服务器·网络·华为
PlumCarefree16 小时前
基于鸿蒙API10的RTSP播放器(四:沉浸式播放窗口)
华为·harmonyos
中关村科金19 小时前
中关村科金推出得助音视频鸿蒙SDK,助力金融业务系统鸿蒙化提速
华为·音视频·harmonyos
繁依Fanyi19 小时前
828 华为云征文|华为 Flexus 云服务器部署 RustDesk Server,打造自己的远程桌面服务器
运维·服务器·开发语言·人工智能·pytorch·华为·华为云
小强在此1 天前
基于OpenHarmony(开源鸿蒙)的智慧医疗综合应用系统
华为·开源·团队开发·健康医疗·harmonyos·开源鸿蒙
奔跑的露西ly1 天前
【鸿蒙 HarmonyOS NEXT】popup弹窗
华为·harmonyos