场景描述

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

场景一:通过系统api跳转到各个预置应用

场景二:通过want跳转的形式跳转到各个预置应用

场景一:

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

联系人

使用场景:

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

效果图:

<p id="p74641843195318">isMultiSelect为true</p> <p id="p54642431531">isMultiSelect为false</p>
<p id="p066044596"><span><img id="image15663412598" src="figures/1f245876cd2c54654eb3d325a054cf0f_320x692-gif-900-0-90-f.gif"></span></p> <p id="p19788152815592"><span><img id="image1078842813592" src="figures/d982826b73d01eb514cfc088ee3f9fa2_320x692-gif-900-0-90-f.gif"></span></p>

实现流程:

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跳转的形式跳转到各个预置应用

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

<p id="p164931518105612">跳转的目标应用</p> <p id="p4493318115613">action</p> <p id="p1449312189564">目标应用包名 (bundleName)</p> <p id="p14493618195613">abilityName</p> <p id="p1449341875618">uri</p>
<p id="p24931918105614">华为浏览器</p> <p id="p64931518105613">ohos.want.action.viewData</p> <p id="p194933181563">com.huawei.hmos.browser</p> <p id="p11493118175612">MainAbility</p> <p id="p949401811562">需要跳转到浏览器对应的哪个链接就配哪个uri(比如想要跳转百度首页就传https://www.baidu.com/ )如不传则跳到华为浏览器首页</p>
<p id="p849451814564">文件管理</p> <p id="p13494018175615">不需传值</p> <p id="p8494181819567">com.huawei.hmos.filemanager</p> <p id="p1349491845617">MainAbility</p> <p id="p949411181563">不需传值</p>
<p id="p1494121875610">应用市场</p> <p id="p5494018115613">不需传值</p> <p id="p8494718125612">不需传值</p> <p id="p34941218115611">不需传值</p> <p id="p12494181885615">store://appgallery.huawei.com/app/detail?id=${this.appId} //appid要传agc平台申请上架时页面上给出的那个appid</p>
<p id="p14951918155615">日历应用</p> <p id="p9495101815569">不需传值</p> <p id="p3495181814561">com.huawei.hmos.calendar</p> <p id="p2495181895610">MainAbility</p> <p id="p11495718185614">不需传值</p>
<p id="p194952180561">钱包应用</p> <p id="p1349591885610">不需传值</p> <p id="p149519182564">com.huawei.hmos.wallet</p> <p id="p24952189569">MainAbility</p> <p id="p114951218195610">不需传值</p>
<p id="p18495101865614">运动健康</p> <p id="p19495111819566">不需传值</p> <p id="p18495191815568">com.huawei.hmos.health</p> <p id="p249581885614">MainAbility</p> <p id="p144950181568">不需传值</p>
<p id="p44955182560">云空间</p> <p id="p1649518189565">不需传值</p> <p id="p14951918165612">com.huawei.hmos.clouddrive</p> <p id="p1049512186567">MainAbility</p> <p id="p16495318145615">不需传值</p>
<p id="p7495318155611">小艺输入法</p> <p id="p154951118105611">不需传值</p> <p id="p174954187563">com.huawei.hmos.inputmethod</p> <p id="p1149571815615">MainAbility</p> <p id="p164956184562">不需传值</p>
<p id="p14951118205616">畅联应用</p> <p id="p14495171814567">不需传值</p> <p id="p8495118195616">com.huawei.hmos.meetime</p> <p id="p0495171835610">MainAbility</p> <p id="p8495101811564">不需传值</p>
<p id="p1649581813569">备忘录</p> <p id="p104952018195612">不需传值</p> <p id="p8496131855614">com.huawei.hmos.notepad</p> <p id="p2496111825614">MainAbility</p> <p id="p1749620188562">不需传值</p>

want跳转配置的所有参数参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-inner-ability-want-0000001774280570

实现流程:

以浏览器跳转方式为例,其他应用的跳转参考上述表格配置对应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)

HarmonyOS码上奇行
6.9k 声望2.8k 粉丝