首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >harmony-utils之PickerUtil,拍照、文件选择和保存,工具类

harmony-utils之PickerUtil,拍照、文件选择和保存,工具类

原创
作者头像
童长老
修改2025-06-29 17:59:51
修改2025-06-29 17:59:51
2460
举报

harmony-utils之PickerUtil,拍照、文件选择和保存,工具类

harmony-utils 简介与说明


harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用。其封装的工具涵盖了APP、设备、屏幕、授权、通知、线程间通信、弹框、吐司、生物认证、用户首选项、拍照、相册、扫码、文件、日志,异常捕获、字符、字符串、数字、集合、日期、随机、base64、加密、解密、JSON等一系列的功能和操作,能够满足各种不同的开发需求。 picker_utils 是harmony-utils拆分出来的一个子库,包含PickerUtil、PhotoHelper、ScanUtil。

下载安装 ohpm i @pura/harmony-utils ohpm i @pura/picker_utils

代码语言:javascript
复制
 //全局初始化方法,在UIAbility的onCreate方法中初始化 AppUtil.init()
 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
   AppUtil.init(this.context);
 }

API方法与使用


camera 调用系统相机,拍照、录视频
代码语言:javascript
复制
PickerUtil.cameraEasy().then((uri) => {
  let uriStr = `调用相机,返回uri:\n${uri}`;
}).catch((err: BusinessError) => {
  let str = `调用相机,异常:\n${JSON.stringify(err)}`;
});
cameraEasy 调用系统相机,拍照、录视频
代码语言:javascript
复制
let options: CameraOptions = {
  mediaTypes: [cameraPicker.PickerMediaType.PHOTO],
  cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK
}
PickerUtil.camera(options).then((result) => {
  let uriStr = `调用相机,返回uri:\n${result.resultUri}`;
}).catch((err: BusinessError) => {
  let str = `调用相机,异常:\n${JSON.stringify(err)}`;
});
selectPhoto 通过选择模式拉起photoPicker界面,用户可以选择一个或多个图片/视频
代码语言:javascript
复制
PickerUtil.selectPhoto().then((uris) => {
  let uriStr = `调用相册,返回uris:\n${uris.join('\n')}`;
}).catch((err: BusinessError) => {
  let str = `调用相册,异常:\n${JSON.stringify(err)}`;
});
savePhoto 通过保存模式拉起photoPicker进行保存图片或视频资源的文件名,若无参数,则默认需要用户自行输入
代码语言:javascript
复制
let imgName = `大漂亮_${DateUtil.getTodayTime()}.png`;
let imgName1 = `小漂亮_${DateUtil.getTodayTime()}.png`;
PickerUtil.savePhoto([imgName, imgName1]).then(async (uris) => {
  let uri = uris[0];
  let uriStr = `调用保存图片,返回uris:\n${uri}`;
  let file = FileUtil.openSync(uri);
  FileUtil.copyFile(this.filePath, file.fd).then(() => {
    let uriStr = `保存图片,返回uris:\n${uri}`;
    ToastUtil.showToast("图片1保存成功");
  });

  let file1 = FileUtil.openSync(uris[1]);
  let pixelMap1 = await ImageUtil.getPixelMapFromMedia($r("app.media.test_as3"));
  let packOpts: image.PackingOption = { format: 'image/png', quality: 100 };
  ImageUtil.packToFileFromPixelMap(pixelMap1, file1.fd, packOpts).then(() => {
    let uriStr = `保存图片,返回uris:\n${uris[1]}`;
    ToastUtil.showToast("图片2保存成功");
  });
}).catch((err: BusinessError) => {
  let uriStr = `调用保存图片,异常:\n${JSON.stringify(err)}`;
})
selectDocument 通过选择模式拉起documentPicker界面,用户可以选择一个或多个文件
代码语言:javascript
复制
let options: picker.DocumentSelectOptions = {
  maxSelectNumber: 9, //选择媒体文件数量的最大值,默认9。
  selectMode: picker.DocumentSelectMode.FILE, //支持选择的资源类型,默认文件
  // fileSuffixFilters: ['图片(.png, .jpg)|.png,.jpg', '文档|.txt', '视频|.mp4', '.pdf'], //选择文件的后缀类型['后缀类型描述|后缀类型'](可选) 若选择项存在多个后缀名,则每一个后缀名之间用英文逗号进行分隔(可选),后缀类型名不能超过100,选择所有文件:'所有文件(*.*)|.*';
  // defaultFilePathUri: "file://docs/storage/Users/currentUser/Download/com.harmony.utils", //指定选择的文件或者目录路径(可选)
  // authMode: true //选择是否对指定文件或目录授权,true为授权,当为true时,defaultFilePathUri为必选参数。
}
PickerUtil.selectDocument(options).then((uris) => {
  let uriStr = `调用文件管理,返回uris:\n${uris.join('\n')}`
}).catch((err: BusinessError) => {
  let uriStr = `调用文件管理,异常:\n${JSON.stringify(err)}`
});
saveDocument 通过保存模式拉起documentPicker界面,用户可以保存一个或多个文件
代码语言:javascript
复制
let fileName = `test_easy_${DateUtil.getTodayTime()}.txt`;
PickerUtil.saveDocumentEasy([fileName]).then((paths) => {
  let path = paths[0];
  this.cacheUri = FileUtil.getUriFromPath(path);
  PreferencesUtil.put("picker_cache_uri", this.cacheUri);
  let txtStr = `“harmony-utils 一款高效的OpenHarmony/HarmonyOS工具包,封装了常用工具类,提供一系列简单易用的方法。帮助开发者快速构建鸿蒙应用。\n\n`;
  FileUtil.writeEasy(path, txtStr).then(() => {
    let uriStr = `文件保存成功,返回uris:\n${path}`;
    ToastUtil.showToast("文件保存成功!");
  }).catch((err: BusinessError) => {
    let uriStr = `文件保存,异常:\n${JSON.stringify(err)}`;
  })
}).catch((err: BusinessError) => {
  let uriStr = `调用保存文件,异常:\n${JSON.stringify(err)}`;
})
selectAudio 通过选择模式拉起audioPicker界面,用户可以选择一个或多个音频文件
代码语言:javascript
复制
PickerUtil.selectAudio().then((uris) => {
  let uriStr = `调用文件管理,返回uris:\n${uris.join('\n')}`;
}).catch((err: BusinessError) => {
  let uriStr = `调用文件管理,异常:\n${JSON.stringify(err)}`;
});
saveAudio 通过保存模式拉起audioPicker界面,用户可以保存一个或多个音频文件
代码语言:javascript
复制
let fileName = `AudioViewPicker001.mp3`;
PickerUtil.saveAudio([fileName]).then((uris) => {
  let uri = uris[0];
  let uriStr = `音频文件,返回uris:\n${uri}`;
}).catch((err: BusinessError) => {
  let uriStr = `调用保存文件,异常:\n${JSON.stringify(err)}`;
})

一款极为简单易用的零侵入弹窗,仅需一行代码即可轻松实现,无论在何处都能够轻松弹出。其涵盖了

AlertDialog、TipsDialog、ConfirmDialog、SelectDialog、CustomContentDialog、TextInputDialog、TextAreaDialog、BottomSheetDialog、ActionSheetDialog、TextPickerDialog、DatePickerDialog、CustomDialog、LoadingDialog、LoadingProgress、Toast、ToastTip

等多种类型,能够满足各种不同的弹窗开发需求。

1. AlertDialog 操作确认类弹出框

AlertDialog
AlertDialog
AlertDialog
AlertDialog

2. ConfirmDialog 信息确认类弹出框

ConfirmDialog
ConfirmDialog
ConfirmDialog

3. TipsDialog 提示弹出框,即为带图形确认框

TipsDialog
TipsDialog
TipsDialog

4. SelectDialog 选择类弹出框

SelectDialog
SelectDialog
SelectDialog

5. TextInputDialog 单行文本输入弹框

TextInputDialog
TextInputDialog
TextInputDialog

6. TextAreaDialog 多行文本输入弹框

TextAreaDialog
TextAreaDialog
TextAreaDialog

7. BottomSheetDialog 动作面板

BottomSheetDialog
BottomSheetDialog
BottomSheetDialog

8. ActionSheetDialog 动作面板(IOS风格)

ActionSheetDialog
ActionSheetDialog
ActionSheetDialog

9. TextPickerDialog 选择器弹框

TextPickerDialog
TextPickerDialog
TextPickerDialog

10. DatePickerDialog 日期选择器弹框

DatePickerDialog
DatePickerDialog
DatePickerDialog

11. LoadingDialog 加载类弹出框

LoadingDialog
LoadingDialog
LoadingDialog
LoadingDialog

12. LoadingProgress 进度条加载弹框

LoadingProgress
LoadingProgress
LoadingProgress

13. Toast 吐司

Toast
Toast
Toast
Toast

13. ToastTip 带图形的吐司

ToastTip
ToastTip
ToastTip
ToastTip
ToastTip

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • harmony-utils之PickerUtil,拍照、文件选择和保存,工具类
    • harmony-utils 简介与说明
    • API方法与使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档