关注

HarmonyOS 拉起系统浏览器与短信界面:WantUtil.toWebBrowser 与 startMMS 实战

背景

近期发现一款很有意思的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));
})

两个参数:

  1. url — 要打开的网址,要带 https:// 前缀
  2. showChoosertrue 弹出浏览器选择框;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'));
})

两个参数:

  1. phone — 收件人电话号码(必填)
  2. 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

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--