您的位置:首页 > 教育 > 培训 > 【HarmonyOS】鸿蒙应用获取用户设备内文件

【HarmonyOS】鸿蒙应用获取用户设备内文件

2024/10/6 8:25:29 来源:https://blog.csdn.net/u010949451/article/details/141113662  浏览:    关键词:【HarmonyOS】鸿蒙应用获取用户设备内文件

【HarmonyOS】鸿蒙应用获取用户设备内文件

问题背景:
应用访问用户设备内的文件(图片,视频,音频,文档文件,xx文件)等用户文件时,我们可以通过系统预置的文件选择器(FilePicker),实现该能力。

通过Picker访问相关文件,将拉起对应的应用,引导用户完成界面操作,接口本身无需申请权限。

但是picker获取的uri只具有临时权限,应用后台关闭后就失去了访问权限。

需要注意的是,官方API演进已经将图片和视频的访问,从FilePicker中移入到PhotoAccessHelper中,具体参见这篇文章:【HarmonyOS】鸿蒙中如何获取用户相册图片?photoAccessHelper.PhotoViewPicker

音频文件的访问,参见这篇文章:【HarmonyOS】鸿蒙应用获取用户设备内音频资源文件

Demo示例:

import { picker } from '@kit.CoreFileKit';
import { common } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';/*** 文件选择*/


struct FileSelectPage {build() {RelativeContainer() {Text("点击唤起文件选择器").fontSize(px2fp(42)).fontWeight(FontWeight.Bold).alignRules({center: { anchor: '__container__', align: VerticalAlign.Center },middle: { anchor: '__container__', align: HorizontalAlign.Center }}).onClick(()=>{const documentSelectOptions = new picker.DocumentSelectOptions();// 选择文档的最大数目(可选)documentSelectOptions.maxSelectNumber = 5;// 指定选择的文件或者目录路径(可选)documentSelectOptions.defaultFilePathUri = "file://docs/storage/Users/currentUser/test";// 选择文件的后缀类型['后缀类型描述|后缀类型'](可选) 若选择项存在多个后缀名,则每一个后缀名之间用英文逗号进行分隔(可选),后缀类型名不能超过100,选择所有文件:'所有文件(*.*)|.*';documentSelectOptions.fileSuffixFilters = ['图片(.png, .jpg)|.png,.jpg', '文档|.txt', '视频|.mp4', '.pdf'];//选择是否对指定文件或目录授权,true为授权,当为true时,defaultFilePathUri为必选参数,拉起文管授权界面;false为非授权,拉起常规文管界面(可选)documentSelectOptions.authMode = true;let uris: Array<string> = [];let context = getContext(this) as common.Context; // 请确保 getContext(this) 返回结果为 UIAbilityContext// 创建文件选择器实例const documentViewPicker = new picker.DocumentViewPicker(context);documentViewPicker.select(documentSelectOptions).then((documentSelectResult: Array<string>) => {//文件选择成功后,返回被选中文档的uri结果集。uris = documentSelectResult;console.info('documentViewPicker.select to file succeed and uris are:' + uris);}).catch((err: BusinessError) => {console.error(`Invoke documentViewPicker.select failed, code is ${err.code}, message is ${err.message}`);})})}.height('100%').width('100%')}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com