介绍
本示例主要使用@ohos.data.uniformTypeDescriptor 展示了标准化数据定义与描述的功能,在新增预置媒体文件后,对媒体文件的utd标准类型获取、utd类型归属类型查询、获取文件对应的utd类型的默认图标、支持自定义数据类型等功能。 实现过程中还使用到@ohos.file.fs 、@ohos.router等接口。
效果预览
使用说明
- 在主界面,点击“Please select a media file”进入选择媒体类型的主页面;
- 在选择媒体类型界面,点击“下拉列表”,在展开的列表中可以选择一种媒体类型,如“Audios”,下面的列表中显示预制文件夹中所有归属于Audio的文件;
- 在选择媒体类型界面,点击文件列表中某个文件,跳转到“显示文件信息”界面,该界面中显示文件归属类型的图标和文件名;
- 在选择媒体类型界面,点击返回箭头图标,返回到“选择媒体类型”界面。
工程目录
entry/src/main/ets/
|---entryAbility
|---pages
| |---displayMediaFile.ets // 显示上一页选中文件的归属类型图标和文件名
| |---Index.ets // 首页
| |---selectMediaType.ets // 主页面,提供媒体类型下拉列表,显示选中的媒体类型的所有文件
具体实现
新增文件夹和媒体文件功能
为本示例新增文件夹和媒体文件功能封装在createPrecastFile,源码参考:index.ets。
- 使用fs.accessSync来检查文件或文件夹是否已存在;
- 使用fs.mkdirSync创建文件夹,文件夹在应用的沙箱目录files下创建;
- 遍历文件名数组precastFiles,使用fs.accessSync检查文件是否已存在;
- 使用fs.openSync创建上一步检查结果为不存在的文件;
- 本功能在首页的aboutToAppear接口中调用。
查找文件归属类型
选中媒体类型,在所有预置文件中查找归属于该类型的文件功能封装在UpdateSelectedFileList,源码参考:selectMediaType.ets 。
- 使用fs.listFileSync获取指定目录下的所有文件保存在数组中;
- 遍历数组中每个文件,调用函数lastIndexOf获取文件后缀位置,再使用接口substring获取文件的后缀;
- 使用getUniformDataTypeByFilenameExtension获取文件的utd;
- 使用getTypeDescriptor获取标准化数据类型;
- 使用接口belongsTo检查文件是否归属于选中的媒体类型,如果返回值为true,则将改文件名保存在显示数组中;
- 通过标准化数据类型的属性iconFile,获取标准化数据类型的默认图标资源ID;
- 上述接口的使用参考@ohos.data.uniformTypeDescriptor。
自定义数据类型的支持
自定义数据类型的实现
- 在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.FILE_ACCESS_MANAGER
ohos.permission.STORAGE_MANAGER
依赖
不涉及
约束与限制
- 本示例仅支持标准系统上运行,支持设备:RK3568。
- 本示例为Stage模型,仅支持API11版本SDK,SDK版本号(API Version 11 Release),镜像版本号(4.0Release)。
- 本示例涉及使用系统接口:@ohos.file.fs中的openSync接口,需要手动替换Full SDK才能编译通过,具体操作可参考替换指南 。
- 本示例需要使用DevEco Studio 版本号(4.0Release)及以上版本才可编译运行。
- 本示例涉及调用系统权限的接口,需要配置允许权限列表,可以参考特殊权限配置方法 ,在配置文件中的“allowed-acls”字段中增加"ohos.permission.READ_MEDIA", “ohos.permission.WRITE_MEDIA”, “ohos.permission.FILE_ACCESS_MANAGER”, "ohos.permission.STORAGE_MANAGER"四个权限。
下载
如需单独下载本工程,执行如下命令:
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
码牛课堂也为了积极培养鸿蒙生态人才,让大家都能学习到鸿蒙开发最新的技术,针对一些在职人员、0基础小白、应届生/计算机专业、鸿蒙爱好者等人群,整理了一套纯血版鸿蒙(HarmonyOS Next)全栈开发技术的学习路线。大家可以进行参考学习:https://qr21.cn/FV7h05
①全方位,更合理的学习路径:
路线图包括ArkTS基础语法、鸿蒙应用APP开发、鸿蒙能力集APP开发、次开发多端部署开发、物联网开发等九大模块,六大实战项目贯穿始终,由浅入深,层层递进,深入理解鸿蒙开发原理!②多层次,更多的鸿蒙原生应用:
路线图将包含完全基于鸿蒙内核开发的应用,比如一次开发多端部署、自由流转、元服务、端云一体化等,多方位的学习内容让学生能够高效掌握鸿蒙开发,少走弯路,真正理解并应用鸿蒙的核心技术和理念。③实战化,更贴合企业需求的技术点:
学习路线图中的每一个技术点都能够紧贴企业需求,经过多次真实实践,每一个知识点、每一个项目,都是码牛课堂鸿蒙研发团队精心打磨和深度解析的成果,注重对学生的细致教学,每一步都确保学生能够真正理解和掌握。
为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05
《鸿蒙开发学习手册》:https://qr21.cn/FV7h05
如何快速入门:
- 基本概念
- 构建第一个ArkTS应用
- ……
开发基础知识:https://qr21.cn/FV7h05
- 应用基础知识
- 配置文件
- 应用数据管理
- 应用安全管理
- 应用隐私保护
- 三方应用调用管控机制
- 资源分类与访问
- 学习ArkTS语言
- ……
基于ArkTS 开发:https://qr21.cn/FV7h05
- Ability开发
- UI开发
- 公共事件与通知
- 窗口管理
- 媒体
- 安全
- 网络与链接
- 电话服务
- 数据管理
- 后台任务(Background Task)管理
- 设备管理
- 设备使用信息统计
- DFX
- 国际化开发
- 折叠屏系列
- ……
鸿蒙开发面试真题(含参考答案):https://qr21.cn/FV7h05
大厂鸿蒙面试题::https://qr18.cn/F781PH
鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH
1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向