当前位置: 首页 > news >正文

鸿蒙NEXT开发Want工具类(ArkTs)

import { AppUtil } from './AppUtil';
import { Want, wantConstant } from '@kit.AbilityKit';
import { PreviewUtil } from './PreviewUtil';
import { FileUtil } from './FileUtil';/*** Want 工具类* 提供跳转系统设置、拉起应用、文件管理等功能。* author: CSDN-鸿蒙布道师* since: 2025/04/16*/
export class WantUtil {// 定义常用 URI 常量static readonly URI_NOTIFICATION: string = "systemui_notification_settings"; // 通知设置页面static readonly URI_WIFI: string = "wifi_entry"; // WLAN 设置页面static readonly URI_BLUETOOTH: string = "bluetooth_entry"; // 蓝牙设置页面static readonly URI_NFC: string = "nfc_settings"; // NFC 设置页面static readonly URI_VOLUME: string = "volume_settings"; // 声音和振动static readonly URI_STORAGE: string = "storage_settings"; // 存储界面static readonly URI_BATTERY: string = "battery"; // 电池static readonly URI_NETWORK: string = "mobile_network_entry"; // 移动网络设置页面static readonly URI_HOTSPOT_DATA: string = "hotspot_data_settings"; // 个人热点界面static readonly URI_DISPLAY: string = "display_settings"; // 显示和亮度static readonly URI_APPLICATION_AND_SERVICE: string = "application_and_service_settings"; // 应用与元服务static readonly URI_PRIVACY: string = "privacy_settings"; // 隐私与安全static readonly URI_SYSTEM_AND_UPDATES: string = "system_and_updates"; // 系统和更新/*** 跳转系统设置页面* @param uri 目标页面的 URI(使用 WantUtil 的 URI 常量)* @returns Promise<void>*/static async toSetting(uri?: string): Promise<void> {const context = AppUtil.getContext();if (!context) {throw new Error("Context is not available.");}const want: Want = {bundleName: 'com.huawei.hmos.settings', // 设置应用 bundleNameabilityName: 'com.huawei.hmos.settings.MainAbility', // 设置应用 abilityNameuri: uri,parameters: {bundleName: context.abilityInfo.bundleName, // 拉起方应用包名},};return context.startAbility(want);}/*** 跳转通知设置页面* @returns Promise<void>*/static toNotificationSetting(): Promise<void> {return WantUtil.toSetting(WantUtil.URI_NOTIFICATION);}/*** 跳转 WLAN 设置页面* @returns Promise<void>*/static toWifiSetting(): Promise<void> {return WantUtil.toSetting(WantUtil.URI_WIFI);}/*** 跳转蓝牙设置页面* @returns Promise<void>*/static toBluetoothSetting(): Promise<void> {return WantUtil.toSetting(WantUtil.URI_BLUETOOTH);}/*** 跳转 NFC 设置页面* @returns Promise<void>*/static toNfcSetting(): Promise<void> {return WantUtil.toSetting(WantUtil.URI_NFC);}/*** 跳转声音和振动设置页面* @returns Promise<void>*/static toVolumeSetting(): Promise<void> {return WantUtil.toSetting(WantUtil.URI_VOLUME);}/*** 跳转存储设置页面* @returns Promise<void>*/static toStorageSetting(): Promise<void> {return WantUtil.toSetting(WantUtil.URI_STORAGE);}/*** 跳转电池设置页面* @returns Promise<void>*/static toBatterySetting(): Promise<void> {return WantUtil.toSetting(WantUtil.URI_BATTERY);}/*** 拉起系统浏览器* @param url 要打开的 URL* @returns Promise<void>*/static async toWebBrowser(url: string): Promise<void> {if (!url) {throw new Error("URL cannot be empty.");}const context = AppUtil.getContext();const want: Want = {action: 'ohos.want.action.viewData',entities: ['entity.system.browsable'],uri: url,parameters: {bundleName: context.abilityInfo.bundleName, // 拉起方应用包名},};return context.startAbility(want);}/*** 拉起应用市场对应的应用详情界面* @param bundleName 需要打开应用详情的应用的包名* @returns Promise<void>*/static async toAppGalleryDetail(bundleName: string): Promise<void> {if (!bundleName) {throw new Error("Bundle name cannot be empty.");}const want: Want = {action: 'ohos.want.action.appdetail',uri: `store://appgallery.huawei.com/app/detail?id=${bundleName}`,};return AppUtil.getContext().startAbility(want);}/*** 拉起系统文件管理器* @returns Promise<void>*/static async toFileManagement(): Promise<void> {const want: Want = {bundleName: 'com.huawei.hmos.filemanager',abilityName: 'MainAbility',};return AppUtil.getContext().startAbility(want);}/*** 拉起短信界面并指定联系人* @param telephone 联系人电话号码* @param contactsName 联系人姓名(可选)* @returns Promise<void>*/static async startMMS(telephone: string, contactsName: string = ''): Promise<void> {if (!telephone) {throw new Error("Telephone number cannot be empty.");}const want: Want = {bundleName: 'com.ohos.mms',abilityName: 'com.ohos.mms.MainAbility',parameters: {contactObjects: JSON.stringify([{ telephone, contactsName }]),pageFlag: 'conversation',},};return AppUtil.getContext().startAbility(want);}/*** 调用三方软件打开文件* @param uri 文件的 URI* @param write 是否有写入权限,默认为 true* @returns Promise<void>*/static async openFile(uri: string, write: boolean = true): Promise<void> {if (!uri) {throw new Error("URI cannot be empty.");}const fileExtention = FileUtil.getFileExtention(uri);const mimeType = PreviewUtil.getMimeType(fileExtention);const want: Want = {flags: write? (wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION): wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,action: 'ohos.want.action.sendData',uri: uri,type: mimeType,};return AppUtil.getContext().startAbility(want);}
}代码如下:
import { AppUtil } from './AppUtil';
import { Want, wantConstant } from '@kit.AbilityKit';
import { PreviewUtil } from './PreviewUtil';
import { FileUtil } from './FileUtil';/*** Want 工具类* 提供跳转系统设置、拉起应用、文件管理等功能。* author: CSDN-鸿蒙布道师* since: 2025/04/16*/
export class WantUtil {// 定义常用 URI 常量static readonly URI_NOTIFICATION: string = "systemui_notification_settings"; // 通知设置页面static readonly URI_WIFI: string = "wifi_entry"; // WLAN 设置页面static readonly URI_BLUETOOTH: string = "bluetooth_entry"; // 蓝牙设置页面static readonly URI_NFC: string = "nfc_settings"; // NFC 设置页面static readonly URI_VOLUME: string = "volume_settings"; // 声音和振动static readonly URI_STORAGE: string = "storage_settings"; // 存储界面static readonly URI_BATTERY: string = "battery"; // 电池static readonly URI_NETWORK: string = "mobile_network_entry"; // 移动网络设置页面static readonly URI_HOTSPOT_DATA: string = "hotspot_data_settings"; // 个人热点界面static readonly URI_DISPLAY: string = "display_settings"; // 显示和亮度static readonly URI_APPLICATION_AND_SERVICE: string = "application_and_service_settings"; // 应用与元服务static readonly URI_PRIVACY: string = "privacy_settings"; // 隐私与安全static readonly URI_SYSTEM_AND_UPDATES: string = "system_and_updates"; // 系统和更新/*** 跳转系统设置页面* @param uri 目标页面的 URI(使用 WantUtil 的 URI 常量)* @returns Promise<void>*/static async toSetting(uri?: string): Promise<void> {const context = AppUtil.getContext();if (!context) {throw new Error("Context is not available.");}const want: Want = {bundleName: 'com.huawei.hmos.settings', // 设置应用 bundleNameabilityName: 'com.huawei.hmos.settings.MainAbility', // 设置应用 abilityNameuri: uri,parameters: {bundleName: context.abilityInfo.bundleName, // 拉起方应用包名},};return context.startAbility(want);}/*** 跳转通知设置页面* @returns Promise<void>*/static toNotificationSetting(): Promise<void> {return WantUtil.toSetting(WantUtil.URI_NOTIFICATION);}/*** 跳转 WLAN 设置页面* @returns Promise<void>*/static toWifiSetting(): Promise<void> {return WantUtil.toSetting(WantUtil.URI_WIFI);}/*** 跳转蓝牙设置页面* @returns Promise<void>*/static toBluetoothSetting(): Promise<void> {return WantUtil.toSetting(WantUtil.URI_BLUETOOTH);}/*** 跳转 NFC 设置页面* @returns Promise<void>*/static toNfcSetting(): Promise<void> {return WantUtil.toSetting(WantUtil.URI_NFC);}/*** 跳转声音和振动设置页面* @returns Promise<void>*/static toVolumeSetting(): Promise<void> {return WantUtil.toSetting(WantUtil.URI_VOLUME);}/*** 跳转存储设置页面* @returns Promise<void>*/static toStorageSetting(): Promise<void> {return WantUtil.toSetting(WantUtil.URI_STORAGE);}/*** 跳转电池设置页面* @returns Promise<void>*/static toBatterySetting(): Promise<void> {return WantUtil.toSetting(WantUtil.URI_BATTERY);}/*** 拉起系统浏览器* @param url 要打开的 URL* @returns Promise<void>*/static async toWebBrowser(url: string): Promise<void> {if (!url) {throw new Error("URL cannot be empty.");}const context = AppUtil.getContext();const want: Want = {action: 'ohos.want.action.viewData',entities: ['entity.system.browsable'],uri: url,parameters: {bundleName: context.abilityInfo.bundleName, // 拉起方应用包名},};return context.startAbility(want);}/*** 拉起应用市场对应的应用详情界面* @param bundleName 需要打开应用详情的应用的包名* @returns Promise<void>*/static async toAppGalleryDetail(bundleName: string): Promise<void> {if (!bundleName) {throw new Error("Bundle name cannot be empty.");}const want: Want = {action: 'ohos.want.action.appdetail',uri: `store://appgallery.huawei.com/app/detail?id=${bundleName}`,};return AppUtil.getContext().startAbility(want);}/*** 拉起系统文件管理器* @returns Promise<void>*/static async toFileManagement(): Promise<void> {const want: Want = {bundleName: 'com.huawei.hmos.filemanager',abilityName: 'MainAbility',};return AppUtil.getContext().startAbility(want);}/*** 拉起短信界面并指定联系人* @param telephone 联系人电话号码* @param contactsName 联系人姓名(可选)* @returns Promise<void>*/static async startMMS(telephone: string, contactsName: string = ''): Promise<void> {if (!telephone) {throw new Error("Telephone number cannot be empty.");}const want: Want = {bundleName: 'com.ohos.mms',abilityName: 'com.ohos.mms.MainAbility',parameters: {contactObjects: JSON.stringify([{ telephone, contactsName }]),pageFlag: 'conversation',},};return AppUtil.getContext().startAbility(want);}/*** 调用三方软件打开文件* @param uri 文件的 URI* @param write 是否有写入权限,默认为 true* @returns Promise<void>*/static async openFile(uri: string, write: boolean = true): Promise<void> {if (!uri) {throw new Error("URI cannot be empty.");}const fileExtention = FileUtil.getFileExtention(uri);const mimeType = PreviewUtil.getMimeType(fileExtention);const want: Want = {flags: write? (wantConstant.Flags.FLAG_AUTH_WRITE_URI_PERMISSION | wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION): wantConstant.Flags.FLAG_AUTH_READ_URI_PERMISSION,action: 'ohos.want.action.sendData',uri: uri,type: mimeType,};return AppUtil.getContext().startAbility(want);}
}

相关文章:

  • 批量将文件或文件夹复制分发到多个不同的文件夹
  • 【从零实现高并发内存池】Page Cache 从理解设计到全面实现
  • ArkTS组件的三个通用(通用事件、通用属性、通用手势)
  • 【版本控制】idea中使用git
  • 详解与FTP服务器相关操作
  • UDP概念特点+编程流程
  • leetcode0329. 矩阵中的最长递增路径-hard
  • spring boot 文件上传
  • 实用类题目
  • 《AI大模型应知应会100篇》第20篇:大模型伦理准则与监管趋势
  • 人形机器人动作策略 ∼ 人类动作策略
  • 7.(vue3.x+vite)弹性布局(flex布局)
  • helm的go模板语法学习
  • Windows 图形显示驱动开发-WDDM 1.2功能—Windows 8 中的 DirectX 功能改进(一)
  • ETL数据集成平台在制造业有哪些应用场景
  • Android 10.0 第三方Launcher设置默认Launcher后导致Recent最近任务键无效
  • Gladinet CentreStack Triofox 远程RCE漏洞(CVE-2025-30406)
  • OpenCV数组的操作
  • 2023年CCF-C NCA:自适应麻雀搜索算法MASSA,深度解析+性能实测
  • 数据泄露防护系统:全面保护企业信息安全的功能解析
  • 台州网站seo外包/霸屏seo服务
  • 官方网站minecraft/seo顾问是干什么
  • 作作网站/优秀网站设计网站
  • 苏州网站建设科技有限公司/360优化大师app
  • 网站建设网上售票系统/福建seo顾问
  • 北京手机网站建设公司排名/郑州网络运营培训