背景
近期发现一款很有意思的HarmonyOS 三方库, 地址 @pura/harmony-utils(V1.4.0) , 作者是"桃花镇童长老", 我这里也是直接通过该作者公布的源码进行案例编写进行,写了到目前写了一部分demo ,感觉确实很有帮助,这里呢也是开始写一个系列的演示demo 供大家参考。如有帮助可以在OpenHarmony中进行下载安装进行使用哦

案例demo导航展示

↓↓↓↓↓↓接下来言归正传 ↓↓↓↓
上一篇讲了 WantUtil 的基础快捷方法,这篇来讲两块更有意思的内容:
一是通过 URI 常量跳转更多系统设置页面;二是拉起系统浏览器打开网页、跳转应用市场详情页、拉起短信界面。
方法总览





URI 常量跳转——覆盖更多设置页
WantUtil.toSetting() 加上 URI 参数可以跳到更多指定的设置子页面:
// 显示和亮度设置
this.Btn('toSetting(URI_DISPLAY) 显示和亮度', '#9B59B6', () => {
this.launch('toSetting(URI_DISPLAY)', () => WantUtil.toSetting(WantUtil.URI_DISPLAY));
})
// 日期时间设置
this.Btn('toSetting(URI_DATE_AND_TIME) 日期时间', '#8E44AD', () => {
this.launch('toSetting(URI_DATE_AND_TIME)', () => WantUtil.toSetting(WantUtil.URI_DATE_AND_TIME));
})
// 隐私与安全
this.Btn('toSetting(URI_PRIVACY) 隐私与安全', '#76448A', () => {
this.launch('toSetting(URI_PRIVACY)', () => WantUtil.toSetting(WantUtil.URI_PRIVACY));
})
// 关于本机
this.Btn('toSetting(URI_ABOUT_DEVICE) 关于本机', '#6C3483', () => {
this.launch('toSetting(URI_ABOUT_DEVICE)', () => WantUtil.toSetting(WantUtil.URI_ABOUT_DEVICE));
})
// 辅助功能
this.Btn('toSetting(URI_ACCESSIBILITY_FEATURE) 辅助功能', '#5B2C6F', () => {
this.launch('toSetting(URI_ACCESSIBILITY_FEATURE)', () => WantUtil.toSetting(WantUtil.URI_ACCESSIBILITY_FEATURE));
})
// 生物识别与密码
this.Btn('toSetting(URI_BIOMETRICS_AND_PASSWORD) 生物识别', '#4A235A', () => {
this.launch('toSetting(URI_BIOMETRICS_AND_PASSWORD)', () => WantUtil.toSetting(WantUtil.URI_BIOMETRICS_AND_PASSWORD));
})
// 系统和更新
this.Btn('toSetting(URI_SYSTEM_AND_UPDATES) 系统和更新', '#2C3E50', () => {
this.launch('toSetting(URI_SYSTEM_AND_UPDATES)', () => WantUtil.toSetting(WantUtil.URI_SYSTEM_AND_UPDATES));
})
// 输入法设置
this.Btn('toSetting(URI_SET_INPUT) 输入法设置', '#2E4057', () => {
this.launch('toSetting(URI_SET_INPUT)', () => WantUtil.toSetting(WantUtil.URI_SET_INPUT));
})
// 语言设置
this.Btn('toSetting(URI_SET_LANGUAGE) 语言设置', '#1B2631', () => {
this.launch('toSetting(URI_SET_LANGUAGE)', () => WantUtil.toSetting(WantUtil.URI_SET_LANGUAGE));
})
// 用户和账户
this.Btn('toSetting(URI_USERS_ACCOUNTS) 用户和账户', '#212F3C', () => {
this.launch('toSetting(URI_USERS_ACCOUNTS)', () => WantUtil.toSetting(WantUtil.URI_USERS_ACCOUNTS));
})
这些 URI 都定义在 WantUtil 的静态常量上,用 WantUtil.URI_XXX 访问,不需要自己背 URI 字符串。
URI 常量速查表:
| 常量名 | 跳转目标 | 使用场景 |
|---|---|---|
URI_DISPLAY | 显示和亮度 | 字体大小建议 |
URI_DATE_AND_TIME | 日期和时间 | 时区相关提示 |
URI_PRIVACY | 隐私与安全 | 权限管理引导 |
URI_ABOUT_DEVICE | 关于本机 | 显示设备信息 |
URI_ACCESSIBILITY_FEATURE | 辅助功能 | 无障碍设置 |
URI_BIOMETRICS_AND_PASSWORD | 生物识别与密码 | 指纹/面容设置 |
URI_SYSTEM_AND_UPDATES | 系统和更新 | 版本更新提示 |
URI_SET_INPUT | 输入法设置 | 切换输入法引导 |
URI_SET_LANGUAGE | 语言和地区 | 多语言应用引导 |
URI_USERS_ACCOUNTS | 用户和账户 | 账号登录相关 |
拉起系统浏览器
@State inputUrl: string = 'https://www.harmonyos.com';
// 输入 URL
TextInput({ text: this.inputUrl, placeholder: 'URL' })
.width('100%').height(38).fontSize(13)
.onChange(v => { this.inputUrl = v; })
// 用默认浏览器打开
this.Btn('toWebBrowser(url) 默认浏览器', '#E74C3C', () => {
this.launch(`toWebBrowser("${this.inputUrl}", false)`, () => WantUtil.toWebBrowser(this.inputUrl, false));
})
// 让用户选择浏览器
this.Btn('toWebBrowser(url, true) 选择浏览器', '#C0392B', () => {
this.launch(`toWebBrowser("${this.inputUrl}", true)`, () => WantUtil.toWebBrowser(this.inputUrl, true));
})
两个参数:
url— 要打开的网址,要带https://前缀showChooser—true弹出浏览器选择框;false用系统默认浏览器直接打开
如果用户设备上安装了多个浏览器,传 true 让用户自己选更合适。
跳转应用市场详情页
@State inputBundleName: string = 'com.huawei.hmos.browser';
TextInput({ text: this.inputBundleName, placeholder: '应用包名' })
.width('100%').height(38).fontSize(13)
.onChange(v => { this.inputBundleName = v; })
this.Btn('toAppGalleryDetail(bundleName)', '#F39C12', () => {
this.launch(`toAppGalleryDetail("${this.inputBundleName}")`, () => WantUtil.toAppGalleryDetail(this.inputBundleName));
})
传入要打开的应用包名(bundleName),会拉起应用市场并跳到该应用的详情页。
常见使用场景:
- 提示用户去市场更新到最新版本
- 推荐相关应用
- 引导用户给应用评分
拉起文件管理器
this.Btn('toFileManagement() 打开文件管理器', '#E67E22', () => {
this.launch('toFileManagement()', () => WantUtil.toFileManagement());
})
直接拉起系统文件管理器,适合提示用户清理文件、查找下载内容等场景。
拉起短信界面
@State inputPhone: string = '10086';
@State inputContact: string = '客服';
Row({ space: 8 }) {
TextInput({ text: this.inputPhone, placeholder: '电话' })
.layoutWeight(1).height(38).fontSize(13)
.onChange(v => { this.inputPhone = v; })
TextInput({ text: this.inputContact, placeholder: '联系人名称' })
.layoutWeight(1).height(38).fontSize(13)
.onChange(v => { this.inputContact = v; })
}
// 带联系人名称的短信
this.Btn(`startMMS("${this.inputPhone}", "${this.inputContact}")`, '#8E44AD', () => {
this.launch(`startMMS("${this.inputPhone}", "${this.inputContact}")`,
() => WantUtil.startMMS(this.inputPhone, this.inputContact));
})
// 仅传号码
this.Btn('startMMS("10086") 仅号码', '#76448A', () => {
this.launch('startMMS("10086")', () => WantUtil.startMMS('10086'));
})
两个参数:
phone— 收件人电话号码(必填)contactName— 联系人显示名称(可选,不传只显示号码)
适合"发送验证码"、"联系客服"等场景,拉起短信 App 并预填收件人。
完整的 WantUtil 跳转能力速查
| 方法 | 用途 |
|---|---|
toSetting() | 设置首页 |
toSetting(URI_XXX) | 指定设置子页 |
toAppSetting() | 本应用设置 |
toNotificationSetting() | 通知设置 |
toWifiSetting() | WiFi设置 |
toBluetoothSetting() | 蓝牙设置 |
toNfcSetting() | NFC设置 |
toNetworkSetting() | 移动网络 |
toVolumeSetting() | 声音振动 |
toStorageSetting() | 存储设置 |
toBatterySetting() | 电池设置 |
toWebBrowser(url) | 系统浏览器 |
toAppGalleryDetail(pkg) | 应用市场详情 |
toFileManagement() | 文件管理器 |
startMMS(phone, name) | 短信界面 |
写在最后
WantUtil 的跳转能力基本覆盖了应用开发中 90% 的系统跳转需求,不需要自己去拼 Want 对象和 URI 字符串。
特别是 toAppSetting() + 权限引导这个组合,是现在应用里的标准做法,强烈建议把 WantUtil 加入你的工具库。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/qq_33681891/article/details/161611267




