harmony-utils之AssetUtil,关键资产存储服务工具类
2025-06-25 00:28:20
131次阅读
0个评论
最后修改时间:2025-07-20 15:24:24
harmony-utils之AssetUtil,关键资产存储服务工具类
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
//全局初始化方法,在UIAbility的onCreate方法中初始化 AppUtil.init()
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
AppUtil.init(this.context);
}
API方法与使用
canIUse 当前设备是否支持该模块
let canIUse = AssetUtil.canIUse();
ToastUtil.showToast(`当前设备是否支持该模块:${canIUse}`);
add 新增一条关键资产
AssetUtil.add("key_harmony", "我是异步知产X!").then(() => {
ToastUtil.showToast(`新增资产成功!`);
});
AssetUtil.addSync("key_harmony_sync", "我是同步知产X!");
ToastUtil.showToast(`新增资产成功!`);
get 查询关键资产
let rStr = await AssetUtil.get("key_harmony");
ToastUtil.showToast(`取值: ${rStr}`);
let sStr = AssetUtil.getSync("key_harmony_sync");
ToastUtil.showToast(`同步:${sStr}`);
remove 删除关键资产
AssetUtil.remove("key_harmony").then(() => {
ToastUtil.showToast("移除成功!");
});
AssetUtil.removeSync("key_harmony_sync");
ToastUtil.showToast("移除成功!");
示例代码
import { router } from '@kit.ArkUI';
import { DateUtil, FileUtil, ImageUtil, LogUtil, PreferencesUtil, StrUtil, ToastUtil } from '@pura/harmony-utils';
import { DescribeBean } from '../../model/DescribeBean';
import { BusinessError } from '@kit.BasicServicesKit';
import { image } from '@kit.ImageKit';
import { MockSetup } from '@ohos/hamock';
import { TitleBarView } from '../../component/TitleBarView';
import { camera, cameraPicker } from '@kit.CameraKit';
import { picker } from '@kit.CoreFileKit';
import { CameraOptions, PickerUtil } from '@pura/picker_utils';
/**
* 拍照、文件(文件、图片、视频、音频)选择和保存,工具类
*/
@Entry
@Component
struct Index {
private scroller: Scroller = new Scroller();
@State describe: DescribeBean = router.getParams() as DescribeBean;
@State uriStr: string = ''
@State filePath: string = ''; //本地图片path
@State cacheUri: string = ''; //缓存本地Uri,上次保存的Uri。
@MockSetup
mock() {
this.describe = new DescribeBean("PickerUtil", "拍照、文件(文件、图片、视频、音频)选择和保存,工具类");
}
async aboutToAppear(): Promise<void> {
this.cacheUri = PreferencesUtil.getStringSync("picker_cache_uri");
let pixelMap = await ImageUtil.getPixelMapFromMedia($r("app.media.test_as4"))
this.filePath = await ImageUtil.savePixelMap(pixelMap, FileUtil.getFilesDirPath(""), "漂亮小姐姐.png")
LogUtil.error("filePath: " + this.filePath);
}
build() {
Column() {
TitleBarView({ describe: this.describe })
Divider()
Scroll(this.scroller) {
Column() {
Button("cameraEasy()")
.btnStyle()
.onClick(async () => {
PickerUtil.cameraEasy().then((uri) => {
this.uriStr = `调用相机,返回uri:\n${uri}`;
}).catch((err: BusinessError) => {
this.uriStr = `调用相机,异常:\n${JSON.stringify(err)}`;
});
})
Button("camera()")
.btnStyle()
.onClick(async () => {
let options: CameraOptions = {
mediaTypes: [cameraPicker.PickerMediaType.PHOTO],
cameraPosition: camera.CameraPosition.CAMERA_POSITION_BACK
}
PickerUtil.camera(options).then((result) => {
this.uriStr = `调用相机,返回uri:\n${result.resultUri}`;
}).catch((err: BusinessError) => {
this.uriStr = `调用相机,异常:\n${JSON.stringify(err)}`;
});
})
Button("selectPhoto()")
.btnStyle()
.onClick(() => {
PickerUtil.selectPhoto().then((uris) => {
this.uriStr = `调用相册,返回uris:\n${uris.join('\n')}`;
}).catch((err: BusinessError) => {
this.uriStr = `调用相册,异常:\n${JSON.stringify(err)}`;
});
})
Button("savePhoto()")
.btnStyle()
.onClick(() => {
let imgName = `大漂亮_${DateUtil.getTodayTime()}.png`;
let imgName1 = `小漂亮_${DateUtil.getTodayTime()}.png`;
PickerUtil.savePhoto([imgName, imgName1]).then(async (uris) => {
let uri = uris[0];
this.uriStr = `调用保存图片,返回uris:\n${uri}`
let file = FileUtil.openSync(uri);
FileUtil.copyFile(this.filePath, file.fd).then(() => {
this.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(() => {
this.uriStr = `保存图片,返回uris:\n${uris[1]}`
ToastUtil.showToast("图片2保存成功");
})
}).catch((err: BusinessError) => {
this.uriStr = `调用保存图片,异常:\n${JSON.stringify(err)}`
})
})
Button("selectDocument()")
.btnStyle()
.onClick(() => {
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) => {
this.uriStr = `调用文件管理,返回uris:\n${uris.join('\n')}`
}).catch((err: BusinessError) => {
this.uriStr = `调用文件管理,异常:\n${JSON.stringify(err)}`
});
})
Button("saveDocumentEasy()")
.btnStyle()
.onClick(() => {
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(() => {
this.uriStr = `文件保存成功,返回uris:\n${path}`;
ToastUtil.showToast("文件保存成功!");
}).catch((err: BusinessError) => {
this.uriStr = `文件保存,异常:\n${JSON.stringify(err)}`;
})
}).catch((err: BusinessError) => {
this.uriStr = `调用保存文件,异常:\n${JSON.stringify(err)}`;
})
})
Button("saveDocument()")
.btnStyle()
.onClick(() => {
let fileName = `test_${DateUtil.getTodayTime()}.txt`;
PickerUtil.saveDocument({newFileNames:[fileName]}).then((uris) => {
let uri = uris[0];
this.cacheUri = uri
PreferencesUtil.put("picker_cache_uri", this.cacheUri);
let txtStr = `“harmony-utils 一款高效的OpenHarmony/HarmonyOS工具包,封装了常用工具类,提供一系列简单易用的方法。帮助开发者快速构建鸿蒙应用。\n\n`;
FileUtil.writeEasy(uri, txtStr).then(() => {
this.uriStr = `文件保存成功,返回uris:\n${uri}`;
ToastUtil.showToast("文件保存成功!");
}).catch((err: BusinessError) => {
this.uriStr = `文件保存,异常:\n${JSON.stringify(err)}`;
})
}).catch((err: BusinessError) => {
this.uriStr = `调用保存文件,异常:\n${JSON.stringify(err)}`;
})
})
Button("selectAudio()")
.btnStyle()
.onClick(() => {
PickerUtil.selectAudio().then((uris) => {
this.uriStr = `调用文件管理,返回uris:\n${uris.join('\n')}`;
}).catch((err: BusinessError) => {
this.uriStr = `调用文件管理,异常:\n${JSON.stringify(err)}`;
});
})
Button("saveAudio()")
.btnStyle()
.onClick(() => {
let fileName = `AudioViewPicker001.mp3`;
PickerUtil.saveAudio([fileName]).then((uris) => {
let uri = uris[0];
this.uriStr = `音频文件,返回uris:\n${uri}`;
}).catch((err: BusinessError) => {
this.uriStr = `调用保存文件,异常:\n${JSON.stringify(err)}`;
})
})
Text(this.uriStr)
.visibility(StrUtil.isNotEmpty(this.uriStr) ? Visibility.Visible : Visibility.None)
.textStyle()
.margin(12)
Blank().layoutWeight(1)
}
.margin({ top: 5, bottom: 5 })
}
.layoutWeight(1)
}
.width('100%')
.height('100%')
.justifyContent(FlexAlign.Start)
.backgroundColor($r('app.color.main_background'))
}
}
@Styles
function btnStyle() {
.width('90%')
.margin({ top: 10, bottom: 5 })
}
@Styles
function textStyle() {
.width('95%')
.padding(10)
.shadow(ShadowStyle.OUTER_DEFAULT_XS)
.margin({ top: 5, bottom: 10 })
.border({ width: 1, color: Color.Grey, radius: 10, style: BorderStyle.Dashed })
}
创作不易,请给童长老点赞👍
https://github.com/787107497/harmony-utils
https://gitee.com/tongyuyan/harmony-utils
OpenHarmony三方库
童长老CSDN博客
00
- 0回答
- 6粉丝
- 0关注
相关话题
- harmony-utils之DateUtil,日期工具类
- harmony-utils之ArrayUtil,集合工具类
- harmony-utils之CharUtil,字符工具类
- harmony-utils之DialogUtil,弹窗工具类
- harmony-utils之EmitterUtil,Emitter工具类
- harmony-utils之NotificationUtil,通知工具类
- harmony-utils之NumberUtil,Number工具类
- harmony-utils之ObjectUtil,对象工具类
- harmony-utils之LogUtil,日志工具类
- harmony-utils之ECDSA,ECDSA工具类
- harmony-utils之WantUtil,Want工具类
- harmony-utils之SHA,SHA工具类
- harmony-utils之RegexUtil,正则工具类
- harmony-utils之ToastUtil,吐司工具类
- harmony-utils之JSONUtil,JSON工具类