鸿蒙5.0实战案例:常见预置应用的跳转方式

往期推文全新看点(文中附带全新鸿蒙5.0全栈学习笔录)

✏️ 鸿蒙(HarmonyOS)北向开发知识点记录~

✏️ 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~

✏️ 鸿蒙应用开发与鸿蒙系统开发哪个更有前景?

✏️ 嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~

✏️ 对于大前端开发来说,转鸿蒙开发究竟是福还是祸?

✏️ 鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?

✏️ 记录一场鸿蒙开发岗位面试经历~

✏️ 持续更新中……


场景描述

三方应用实际使用过程中,可能需要跳转到系统的预置应用进行一系列的操作,本文档提供了跳转各个预置应用的方法以及配置的参数

  • 场景一:通过系统 api 跳转到各个预置应用
  • 场景二:通过 want 跳转的形式跳转到各个预置应用

场景一:

通过系统 api 跳转到各个预置应用

联系人

使用场景:

在应用内点击拉起联系人页面,比如发送短信的时候要选择联系人发送

效果图:

isMultiSelect为trueisMultiSelect为false

实现流程:

1.导入@ohos.contact模块2.调用contact的seletContacts接口拉起选择联系人页面3.配置isMultiSelect参数,true表示联系人多选,false表示联系人单选

核心代码:

//导入模块
import contact from '@ohos.contact';
//调用contact的seletContacts接口拉起选择联系人页面
contact.selectContacts({
          //isMultiSelect参数设为true就可以选多个联系人,设为false就只能选择单个联系人
          isMultiSelect:true
        },(err: BusinessError, data) => {
        });

电话

使用场景:

在应用内点击拉起电话服务页面,比如浏览器会有呼叫电话按钮,点击就可以通过下列方法拉起电话服务页面呼叫

效果图:

实现流程:

1.导入@ohos.telephony.call模块
2.首先通过call.hasVoiceCapability()判断设备具有语音通话能力,返回的参数isSupport : true为支持,false为不支持。
3.如果设别支持呼叫能力,则调用call.makeCall接口去拉起拨号界面
4.可以通过observer.on(‘callStateChange’)订阅通话状态,通话状态分为以下四种:

CALL_STATE_UNKNOWN 代表无效状态,当获取呼叫状态失败时返回,返回的state为-1。

CALL_STATE_IDLE代表没有正在进行的呼叫,返回的state为0。

CALL_STATE_RINGING代表来电正在振铃或等待,返回的state为1。

CALL_STATE_OFFHOOK代表至少有一个呼叫处于拨号、通话中或呼叫保持状态,并且没有新的来电振铃等待,返回的state为2。

核心代码:

//导入模块
import call from '@ohos.telephony.call'
     //通过call.hasVoiceCapability()判断设备具有语音通话能力
     let isSupport = call.hasVoiceCapability();
      if (isSupport) {
         // 调用call.makeCall拉起拨号界面:
        call.makeCall("110")
         /*observer.on('callStateChange')订阅通话状态 :
            CALL_STATE_UNKNOWN  代表 无效状态,当获取呼叫状态失败时返回,返回的state为-1。
            CALL_STATE_IDLE 代表 表示没有正在进行的呼叫,返回的state为0。
            CALL_STATE_RINGING 代表 表示来电正在振铃或等待,返回的state为1。
            CALL_STATE_OFFHOOK 代表 表示至少有一个呼叫处于拨号、通话中或呼叫保持状态,并且没有新的来电振铃或等待,返回的state为2。*/
          class SlotId {slotId: number = 0}
          class CallStateCallback {
            state: call.CallState = call.CallState.CALL_STATE_UNKNOWN;
            number: string = "";
          }
          let slotId: SlotId = {slotId: 0}
          observer.on("callStateChange", slotId, (data: CallStateCallback) => {
            console.log("call state change, data is:" + JSON.stringify(data));
          });
        }

系统设置

使用场景:

引导用户跳转到系统设置页进行权限,通知的相关设置,类似应用中常见的应用内跳转到设置进行通知开启或权限设置的操作。

相册

使用场景:

用户有时需要分享或保存图片、视频等用户文件,开发者可以通过系统预置的文件选择器(FilePicker),实现该能力。通过Picker访问相关文件,将拉起对应的应用,引导用户完成界面操作,接口本身无需申请权限。PhotoViewPicker:适用于图片或视频类型文件的选择与保存。优选使用PhotoAccessHelper的PhotoViewPicker来选择文件。当前PhotoViewPicker对接的选择资源来自于图库,保存位置为系统文件管理器的特定目录,因此使用save接口保存的图片或视频无法在图库中展示。如需在图库中展示,请使用安全控件创建媒体资源。

相机

使用场景:

用户在进行拍照、录像等操作时需要通过相机获取捕获图像的能力,开发者可以通过CameraKit相关相机接口对相机进行操作。拍照是相机的最重要功能之一,拍照模块基于相机复杂的逻辑,为了保证用户拍出的照片质量,在中间步骤可以设置分辨率、闪光灯、焦距、照片质量及旋转角度等信息。

场景二:

通过want跳转的形式跳转到各个预置应用

跳转各个预置应用需要配置的参数,见下表:

跳转的目标应用action目标应用包名 (bundleName)abilityNameuri
华为浏览器ohos.want.action.viewDatacom.huawei.hmos.browserMainAbility需要跳转到浏览器对应的哪个链接就配哪个uri(比如想要跳转百度首页就传https://www.baidu.com/ )如不传则跳到华为浏览器首页
文件管理不需传值com.huawei.hmos.filemanagerMainAbility不需传值
应用市场不需传值不需传值不需传值store://appgallery.huawei.com/app/detail?id=${this.appId} //appid要传agc平台申请上架时页面上给出的那个appid
日历应用不需传值com.huawei.hmos.calendarMainAbility不需传值
钱包应用不需传值com.huawei.hmos.walletMainAbility不需传值
运动健康不需传值com.huawei.hmos.healthMainAbility不需传值
云空间不需传值com.huawei.hmos.clouddriveMainAbility不需传值
小艺输入法不需传值com.huawei.hmos.inputmethodMainAbility不需传值
畅联应用不需传值com.huawei.hmos.meetimeMainAbility不需传值
备忘录不需传值com.huawei.hmos.notepadMainAbility不需传值

实现流程:

以浏览器跳转方式为例,其他应用的跳转参考上述表格配置对应want参数即可:在want中传入action,bundleName,abilityName以及uri跳到华为浏览器指定的uri页面,如不传则跳至华为浏览器首页。

核心代码:

let context = getContext(this) as common.UIAbilityContext;
          let want: Want = {
            action: "ohos.want.action.viewData",
            bundleName: 'com.huawei.hmos.browser',
            abilityName: 'MainAbility',
            uri: "https://developer.huawei.com/consumer/cn/doc/harmonyos-releases/releasenotes-overview-0000001602419138",//传对应想要跳转的uri
            //"entities": ["entity.system.browsable"]
          };
          console.log("want",want)
          context.startAbility(want)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值