# @ohos.nfc.cardEmulation (标准NFC-cardEmulation) 本模块主要提供NFC卡模拟业务,包括判断支持哪种卡模拟类型,HCE卡模拟的业务实现等。 > **说明:** > > 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 ## 导入模块 ``` import cardEmulation from '@ohos.nfc.cardEmulation'; ``` ## FeatureType 定义不同的NFC卡模拟类型。 > **说明:** > 从 API version 6 开始支持,从 API version 9 开始废弃,建议使用[hasHceCapability](#hashcecapability9)替代。 **系统能力:** SystemCapability.Communication.NFC.CardEmulation | 名称 | 值 | 说明 | | ---- | ---- | -------- | | HCE | 0 | HCE 卡模拟。 | | UICC | 1 | SIM 卡模拟。 | | ESE | 2 | ESE卡模拟。 | ## CardType9+ 定义卡模拟应用所使用的业务类型,是支付类型,还是其他类型。 **系统能力:** SystemCapability.Communication.NFC.CardEmulation | 名称 | 值 | 说明 | | ------- | --------- | ----------------- | | PAYMENT | "payment" | 卡模拟应用所使用的业务是支付类型。 | | OTHER | "other" | 卡模拟应用所使用的业务是其他类型。 | ## isSupported isSupported(feature: number): boolean 是否支持某种类型的卡模拟。 > **说明:** > 从 API version 6 开始支持,从 API version 9 开始废弃,建议使用[hasHceCapability](#hashcecapability9)替代。 **系统能力:** SystemCapability.Communication.NFC.CardEmulation **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------ | ---- | ---------------------------------------- | | feature | number | 是 | 卡模拟类型值,详细请见[FeatureType](#featuretype)枚举值。 | **返回值:** | **类型** | **说明** | | ------- | -------------------------------------- | | boolean | true: 支持该类型卡模拟, false: 不支持该类型卡模拟。 | ## hasHceCapability9+ hasHceCapability(): boolean 判断是否支持HCE功能。 **系统能力:** SystemCapability.Communication.NFC.CardEmulation **需要权限:** ohos.permission.NFC_CARD_EMULATION **返回值:** | **类型** | **说明** | | ------- | -------------------------------- | | boolean | true: 支持HCE, false: 不支持HCE。 | ## isDefaultService9+ isDefaultService(elementName: ElementName, type: CardType): boolean 判断指定的应用是否为指定业务类型的默认应用。 **系统能力:** SystemCapability.Communication.NFC.CardEmulation **需要权限:** ohos.permission.NFC_CARD_EMULATION **参数:** | 参数名 | 类型 | 必填 | 说明 | | ----------- | ---------------------------------------- | ---- | ----------------------- | | elementName | [ElementName](js-apis-bundleManager-elementName.md#elementname) | 是 | 应用的描述,由Bundle名称和组件名称组成。 | | type | [CardType](#cardtype9) | 是 | 卡模拟业务类型。 | **返回值:** | **类型** | **说明** | | ------- | ------------------------------------ | | boolean | true: 是默认支付应用, false: 不是默认支付应用。 | ## HceService8+ 提供HCE卡模拟的实现,主要包括接收对端读卡设备的APDU数据,并响应APDU数据到对端读卡设备。使用HCE相关接口前,必须先判断设备是否支持HCE卡模拟能力。暂不支持使用,仅做接口声明。 ### startHCE8+ startHCE(aidList: string[]): boolean 启动HCE业务功能。包括设置当前应用为前台优先,动态注册AID列表。暂不支持使用,仅做接口声明。 > **说明:** > 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[start](#start9)替代。 **需要权限:** ohos.permission.NFC_CARD_EMULATION **系统能力:** SystemCapability.Communication.NFC.CardEmulation **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | -------- | ---- | ----------------------- | | aidList | string[] | 是 | 动态注册卡模拟的AID列表。 | ### start9+ start(elementName: ElementName, aidList: string[]): void 启动HCE业务功能。包括设置当前应用为前台优先,动态注册AID列表。暂不支持使用,仅做接口声明。 **需要权限:** ohos.permission.NFC_CARD_EMULATION **系统能力:** SystemCapability.Communication.NFC.CardEmulation **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | -------- | ---- | ----------------------- | | elementName | ElementName | 是 | 服务能力的元素名称。 | | aidList | string[] | 是 | 动态注册卡模拟的AID列表。 | **错误码:** 以下错误码的详细介绍请参见[NFC错误码](../errorcodes/errorcode-nfc.md)。 | 错误码ID | 错误信息| | ------- | -------| | 3100301 | Card emulation running state is abnormal in service. | ### stopHCE8+ stopHCE(): boolean 停止HCE业务功能。包括退出当前应用前台优先,释放动态注册的AID列表。暂不支持使用,仅做接口声明。 > **说明:** > 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[stop](#stop)替代。 **需要权限:** ohos.permission.NFC_CARD_EMULATION **系统能力:** SystemCapability.Communication.NFC.CardEmulation ### stop9+ stop(elementName: ElementName): void; 停止HCE业务功能。包括退出当前应用前台优先,释放动态注册的AID列表。暂不支持使用,仅做接口声明。 **需要权限:** ohos.permission.NFC_CARD_EMULATION **系统能力:** SystemCapability.Communication.NFC.CardEmulation **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | -------- | ---- | ----------------------- | | elementName | ElementName | 是 | 服务能力的元素名称。 | **错误码:** 以下错误码的详细介绍请参见[NFC错误码](../errorcodes/errorcode-nfc.md)。 | 错误码ID | 错误信息| | ------- | -------| | 3100301 | Card emulation running state is abnormal in service. | ### on8+ on(type: "hceCmd", callback: AsyncCallback): void; 订阅回调,用于接收对端读卡设备发送的APDU数据。暂不支持使用,仅做接口声明。 **需要权限:** ohos.permission.NFC_CARD_EMULATION **系统能力:** SystemCapability.Communication.NFC.CardEmulation **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | ----------------------- | ---- | -------------------------------------------- | | type | string | 是 | 固定填"hceCmd"字符串。 | | callback | AsyncCallback | 是 | 订阅的事件回调,入参是符合APDU协议的数据,每个number十六进制表示,范围是0x00~0xFF。 | ### sendResponse8+ sendResponse(responseApdu: number[]): void; 发送APDU数据到对端读卡设备。暂不支持使用,仅做接口声明。 > **说明:** > 从 API version 8 开始支持,从 API version 9 开始废弃,建议使用[transmit](#transmit9)替代。 **需要权限:** ohos.permission.NFC_CARD_EMULATION **系统能力:** SystemCapability.Communication.NFC.CardEmulation **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------ | -------- | ---- | -------------------------------------------------- | | responseApdu | number[] | 是 | 发送到对端读卡设备的符合APDU协议的数据,每个number十六进制表示,范围是0x00~0xFF。 | ### transmit9+ transmit(response: number[]): Promise\; 发送APDU数据到对端读卡设备。暂不支持使用,仅做接口声明。 **需要权限:** ohos.permission.NFC_CARD_EMULATION **系统能力:** SystemCapability.Communication.NFC.CardEmulation **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------ | -------- | ---- | -------------------------------------------------- | | responseApdu | number[] | 是 | 发送到对端读卡设备的符合APDU协议的数据,每个number十六进制表示,范围是0x00~0xFF。 | **返回值:** | **类型** | **说明** | | ------- | -------------------------------------- | | Promise\ | 表示异步回调完成。 | **错误码:** 以下错误码的详细介绍请参见[NFC错误码](../errorcodes/errorcode-nfc.md)。 | 错误码ID | 错误信息| | ------- | -------| | 3100301 | Card emulation running state is abnormal in service. | ### transmit9+ transmit(response: number[], callback: AsyncCallback\): void; 发送APDU数据到对端读卡设备。暂不支持使用,仅做接口声明。 **需要权限:** ohos.permission.NFC_CARD_EMULATION **系统能力:** SystemCapability.Communication.NFC.CardEmulation **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | -------- | ---- | ----------------------- | | responseApdu | number[] | 是 | 发送到对端读卡设备的符合APDU协议的数据,每个number十六进制表示,范围是0x00~0xFF。 | | callback | AsyncCallback\ | 是 | 回调函数void | **错误码:** 以下错误码的详细介绍请参见[NFC错误码](../errorcodes/errorcode-nfc.md)。 | 错误码ID | 错误信息| | ------- | -------| | 3100301 | Card emulation running state is abnormal in service. | **示例:** ```js import cardEmulation from '@ohos.nfc.cardEmulation'; var isHceSupported = cardEmulation.isSupported(cardEmulation.FeatureType.HCE); if (!isHceSupported) { console.log('this device is not supported for HCE, ignore it.'); } var hasHceCap = cardEmulation.hasHceCapability(); if (!hasHceCap) { console.log('this device hasHceCapability false, ignore it.'); } var elementName = { "bundleName": "com.example.myapplication", "abilityName": "EntryAbility", }; var isDefaultService = cardEmulation.isDefaultService(elementName, cardEmulation.CardType.PAYMENT); console.log('is the app is default service for this card type: ' + isDefaultService); ```