Bootstrap

HarmonyOs next 跟着开发文档学习-判断api是否可以使用

文档总结,只选取部分重点内容信息,完整的内容信息需要自行去官网开发文档进行查看

一、官网开发文档

系统能力SystemCapability使用指南-API参考概述 - 华为HarmonyOS开发者icon-default.png?t=O83Ahttps://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/syscap-V5

二、判断该api是否可以使用,常用的两种方式:

(1)相同系统下:

方式一: 使用系统提供的canIUse进行判断

if (canIUse("SystemCapability.ArkUI.ArkUI.Full")) {
   console.log("该设备支持SystemCapability.ArkUI.ArkUI.Full");
} else {
   console.log("该设备不支持SystemCapability.ArkUI.ArkUI.Full");
}

方式二:使用import的方式,通过判断导入的模块是否为undefined的结果 

import geolocationManager from '@ohos.geoLocationManager';

if (geolocationManager) {
geolocationManager.getCurrentLocation((location) => {
    console.log('current location: ' + JSON.stringify(location));
});
} else {
console.log('该设备不支持位置信息');
}

方式三:通过Native api

#include <stdio.h>
#include <stdlib.h>
#include "syscap_ndk.h"

char syscap[] = "SystemCapability.ArkUI.ArkUI.Full";
bool result = canIUse(syscap);
if (result) {
    printf("SysCap: %s is supported!\n", syscap);
} else {
    printf("SysCap: %s is not supported!\n", syscap);
}

(2)相同系统下的不同设备

在相同的系统下,不同的设备适配的状况可能不一致

import userAuth from '@ohos.userIAM.userAuth';

const authenticator = userAuth.getAuthenticator();
const result = authenticator.checkAbility('FACE_ONLY', 'S1');

if (result == authenticator.CheckAvailabilityResult.AUTH_NOT_SUPPORT) {
    console.log('该设备不支持人脸识别');
}
//强行调用不支持的 API 会返回错误信息,但不会出现语法错误。
authenticator.execute('FACE_ONLY', 'S1', (err, result) => {
    if (err) {
        console.log(err.message);
        return;
    }
})

三、系统能力列表

在我们创建项目的时候,我们可以看到Device type那里有四种类型可选择,这是我们所开发的设备类型

;