# @ohos.enterprise.telephonyManager(通话管理) 本模块提供通话管理能力。 > **说明**: > > 本模块首批接口从API version 20开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > > 本模块接口仅适用于Stage模型。 > > 本模块接口仅对设备管理应用开放,调用接口前需激活该应用,详情请参考[MDM Kit开发指南](../../mdm/mdm-kit-guide.md)。 > > 全局通用限制类策略由restrictions提供,若要全局禁用通话,请参考[@ohos.enterprise.restrictions(限制类策略)](js-apis-enterprise-restrictions.md)。 ## 导入模块 ```ts import { telephonyManager } from '@kit.MDMKit'; ``` ## telephonyManager.setSimDisabled setSimDisabled(admin: Want, slotId: number): void 禁用指定卡槽的SIM卡。 **需要权限:** ohos.permission.ENTERPRISE_MANAGE_TELEPHONY **系统能力:** SystemCapability.Customization.EnterpriseDeviceManager **模型约束:** 此接口仅可在Stage模型下使用。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------ | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | | admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | | slotId | number | 是 | 卡槽ID,目前仅支持单卡槽设备和双卡槽设备,取值范围为0或1,其中0表示卡槽1,1表示卡槽2。 | **错误码**: 请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | | 9200001 | The application is not an administrator application of the device. | | 9200002 | The administrator application does not have permission to manage the device. | | | 201 | Permission verification failed. The application does not have the permission required to call the API. | **示例:** ```ts import { Want } from '@kit.AbilityKit'; import { telephonyManager } from '@kit.MDMKit'; let wantTemp: Want = { //需根据实际情况进行替换 bundleName: 'com.example.myapplication', abilityName: 'EntryAbility' }; try { let slotId: number = 0; telephonyManager.setSimDisabled(wantTemp, slotId); console.info(`Succeeded in setting slotId: ${slotId} disabled.`); } catch (err) { console.error(`Failed to set slotId disabled. Code: ${err.code}, message: ${err.message}`); } ``` ## telephonyManager.setSimEnabled setSimEnabled(admin: Want, slotId: number): void 解除指定卡槽的SIM卡禁用。 **需要权限:** ohos.permission.ENTERPRISE_MANAGE_TELEPHONY **系统能力:** SystemCapability.Customization.EnterpriseDeviceManager **模型约束:** 此接口仅可在Stage模型下使用。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------------ | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | | admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | | slotId | number | 是 |卡槽ID,目前仅支持单卡槽设备和双卡槽设备,取值范围为0或1,其中0表示卡槽1,1表示卡槽2。 | **错误码**: 请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | | 9200001 | The application is not an administrator application of the device. | | 9200002 | The administrator application does not have permission to manage the device. | | 201 | Permission verification failed. The application does not have the permission required to call the API. | **示例:** ```ts import { Want } from '@kit.AbilityKit'; import { telephonyManager } from '@kit.MDMKit'; let wantTemp: Want = { //需根据实际情况进行替换 bundleName: 'com.example.myapplication', abilityName: 'EntryAbility' }; try { let slotId: number = 0; telephonyManager.setSimEnabled(wantTemp, slotId); console.info(`Succeeded in setting slotId: ${slotId} enabled.`); } catch (err) { console.error(`Failed to set slotId enabled. Code: ${err.code}, message: ${err.message}`); } ``` ## telephonyManager.isSimDisabled isSimDisabled(admin: Want, slotId: number): boolean 查询指定卡槽是否禁用。 **需要权限:** ohos.permission.ENTERPRISE_MANAGE_TELEPHONY **系统能力:** SystemCapability.Customization.EnterpriseDeviceManager **模型约束:** 此接口仅可在Stage模型下使用。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | ------------------------------------------------------- | ---- | -------------------------------------- | | admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | | slotId | number | 是 |卡槽ID,目前仅支持单卡槽设备和双卡槽设备,取值范围为0或1,其中0表示卡槽1,1表示卡槽2。 | **返回值:** | 类型 | 说明 | | ---------------------------------- | ------------------------- | | boolean | 指定卡槽的禁用状态。true表示已被禁用,false表示未被禁用。| **错误码**: 请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | | 9200001 | The application is not an administrator application of the device. | | 9200002 | The administrator application does not have permission to manage the device. | | 201 | Permission verification failed. The application does not have the permission required to call the API. | **示例:** ```ts import { Want } from '@kit.AbilityKit'; import { telephonyManager } from '@kit.MDMKit'; let wantTemp: Want = { //需根据实际情况进行替换 bundleName: 'com.example.myapplication', abilityName: 'EntryAbility' }; try { let slotId: number = 0; let result: boolean = telephonyManager.isSimDisabled(wantTemp, slotId); console.info(`Succeeded in querying slotId: ${slotId} is disabled or not, result: ${result}`); } catch (err) { console.error(`Failed to query sim is disabled or not. Code: ${err.code}, message: ${err.message}`); } ``` ## telephonyManager.addOutgoingCallPolicyNumbers addOutgoingCallPolicyNumbers(admin: Want, policy: adminManager.Policy, numbers: Array\): void 添加通话呼出的允许或禁用名单,如果不添加名单,任意号码都可以呼出,添加后只有名单内的号码允许或禁止呼出。 以下情况下,通过本接口添加通话呼出的允许或禁用名单,会报策略冲突: 1. 已经通过[setDisallowedPolicy](js-apis-enterprise-restrictions.md#restrictionssetdisallowedpolicy)接口禁用了设备通话能力,再通过本接口添加通话呼出的禁用或允许名单,返回203错误码。通过[setDisallowedPolicy](js-apis-enterprise-restrictions.md#restrictionssetdisallowedpolicy)接口解除禁用设备通话能力后,可解除冲突。 2. 已经通过本接口设置了通话呼出的禁用名单,再通过本接口添加通话呼出允许名单,返回9200010错误码。通过[removeOutgoingCallPolicyNumbers](#telephonymanagerremoveoutgoingcallpolicynumbers)接口将之前设置的通话呼出禁用名单移除后,可解除冲突。 3. 已经通过本接口设置了通话呼出的允许名单,再通过本接口添加通话呼出禁用名单,返回9200010错误码。通过[removeOutgoingCallPolicyNumbers](#telephonymanagerremoveoutgoingcallpolicynumbers)接口将之前设置的通话呼出允许名单移除后,可解除冲突。 **需要权限:** ohos.permission.ENTERPRISE_MANAGE_TELEPHONY **系统能力:** SystemCapability.Customization.EnterpriseDeviceManager **设备行为差异:** 该接口在Phone和Tablet设备中可正常调用,在其他设备中返回801错误码。 **模型约束:** 此接口仅可在Stage模型下使用。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | ------------------------------------------------------- | ---- | -------------------------------------- | | admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | | policy | [adminManager.Policy](js-apis-enterprise-adminManager.md#policy20) | 是 | 允许或禁用名单策略。BLOCK_LIST为禁用名单,TRUST_LIST为允许名单。 | | numbers | Array\ | 是 | 通话号码列表,当前仅支持全号码匹配。数组总长度不能超过1000。例如,若当前允许名单数组中已有100个号码,则最多支持通过该接口再添加900个。 | **错误码**: 以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | | 9200001 | The application is not an administrator application of the device. | | 9200002 | The administrator application does not have permission to manage the device. | | 9200010 | A conflict policy has been configured. | | 9200012 | Parameter verification failed. | | 201 | Permission verification failed. The application does not have the permission required to call the API. | | 203 | This function is prohibited by enterprise management policies. | | 801 | Capability not supported. Failed to call the API due to limited device capabilities. | **示例:** ```ts import { Want } from '@kit.AbilityKit'; import { telephonyManager } from '@kit.MDMKit'; import { adminManager } from '@kit.MDMKit'; let wantTemp: Want = { //需根据实际情况进行替换 bundleName: 'com.example.myapplication', abilityName: 'EntryAbility' }; try { let policy: adminManager.Policy = adminManager.Policy.BLOCK_LIST; let numbers: Array = [ //需根据实际情况进行替换 "13112345678" ]; telephonyManager.addOutgoingCallPolicyNumbers(wantTemp, policy, numbers); console.info('Succeeded in adding outgoing call policy.'); } catch (err) { console.error(`Failed to add outgoing call policy. Code: ${err.code}, message: ${err.message}`); } ``` ## telephonyManager.removeOutgoingCallPolicyNumbers removeOutgoingCallPolicyNumbers(admin: Want, policy: adminManager.Policy, numbers: Array\): void 移除通话呼出的允许或禁用名单,若在该名单尚未设置时进行移除,则会移除失败。 以下情况下,通过本接口移除通话呼出的允许或禁用名单,会报策略冲突: 已经通过[setDisallowedPolicy](js-apis-enterprise-restrictions.md#restrictionssetdisallowedpolicy)接口禁用了设备通话能力,再通过本接口移除通话呼出的禁用或允许名单,返回203错误码。通过[setDisallowedPolicy](js-apis-enterprise-restrictions.md#restrictionssetdisallowedpolicy)接口解除禁用设备通话能力后,可解除冲突。 **需要权限:** ohos.permission.ENTERPRISE_MANAGE_TELEPHONY **系统能力:** SystemCapability.Customization.EnterpriseDeviceManager **设备行为差异:** 该接口在Phone和Tablet设备中可正常调用,在其他设备中返回801错误码。 **模型约束:** 此接口仅可在Stage模型下使用。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | ------------------------------------------------------- | ---- | -------------------------------------- | | admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | | policy | [adminManager.Policy](js-apis-enterprise-adminManager.md#policy20) | 是 | 允许或禁用名单策略。BLOCK_LIST为禁用名单,TRUST_LIST为允许名单。 | | numbers | Array\ | 是 | 待移除的通话号码数组。数组总长度不能超过1000。 | **错误码**: 以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | | 9200001 | The application is not an administrator application of the device. | | 9200002 | The administrator application does not have permission to manage the device. | | 9200012 | Parameter verification failed. | | 201 | Permission verification failed. The application does not have the permission required to call the API. | | 203 | This function is prohibited by enterprise management policies. | | 801 | Capability not supported. Failed to call the API due to limited device capabilities. | **示例:** ```ts import { Want } from '@kit.AbilityKit'; import { telephonyManager } from '@kit.MDMKit'; import { adminManager } from '@kit.MDMKit'; let wantTemp: Want = { //需根据实际情况进行替换 bundleName: 'com.example.myapplication', abilityName: 'EntryAbility' }; try { let policy: adminManager.Policy = adminManager.Policy.BLOCK_LIST; let numbers: Array = [ //需根据实际情况进行替换 "13112345678" ]; telephonyManager.removeOutgoingCallPolicyNumbers(wantTemp, policy, numbers); console.info('Succeeded in removing outgoing call policy.'); } catch (err) { console.error(`Failed to remove outgoing call policy. Code: ${err.code}, message: ${err.message}`); } ``` ## telephonyManager.getOutgoingCallPolicyNumbers getOutgoingCallPolicyNumbers(admin: Want, policy: adminManager.Policy): Array\ 获取通话呼出的允许或禁用名单。 **需要权限:** ohos.permission.ENTERPRISE_MANAGE_TELEPHONY **系统能力:** SystemCapability.Customization.EnterpriseDeviceManager **设备行为差异:** 该接口在Phone和Tablet设备中可正常调用,在其他设备中返回801错误码。 **模型约束:** 此接口仅可在Stage模型下使用。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | ---------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | | admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | | policy | [adminManager.Policy](js-apis-enterprise-adminManager.md#policy20) | 是 | 允许或禁用名单策略。 BLOCK_LIST为禁用名单,TRUST_LIST为允许名单。 | **返回值:** | 类型 | 说明 | | ---------------------------------------- | ----------------------- | | Array\ | 通话呼出禁用或允许名单的号码数组。 | **错误码**: 以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | | 9200001 | The application is not an administrator application of the device. | | 9200002 | The administrator application does not have permission to manage the device. | | | 201 | Permission verification failed. The application does not have the permission required to call the API. | | 801 | Capability not supported. Failed to call the API due to limited device capabilities. | **示例:** ```ts import { Want } from '@kit.AbilityKit'; import { telephonyManager } from '@kit.MDMKit'; import { adminManager } from '@kit.MDMKit'; let wantTemp: Want = { //需根据实际情况进行替换 bundleName: 'com.example.myapplication', abilityName: 'EntryAbility' }; try { let policy: adminManager.Policy = adminManager.Policy.BLOCK_LIST; let numbers: Array = telephonyManager.getOutgoingCallPolicyNumbers(wantTemp, policy); console.info(`Succeeded in getting outgoing call policy. result: ${JSON.stringify(numbers)}`); } catch (err) { console.error(`Failed to get outgoing call policy. Code: ${err.code}, message: ${err.message}`); } ``` ## telephonyManager.addIncomingCallPolicyNumbers addIncomingCallPolicyNumbers(admin: Want, policy: adminManager.Policy, numbers: Array\): void 添加通话呼入的允许或禁用名单,如果不添加名单,则任意号码都可以呼入,添加后仅名单内的号码允许或禁止呼入。 以下情况下,通过本接口添加通话呼入的允许或禁用名单,会报策略冲突: 1. 已经通过[setDisallowedPolicy](js-apis-enterprise-restrictions.md#restrictionssetdisallowedpolicy)接口禁用了设备通话能力,再通过本接口添加通话呼入的禁用或允许名单,返回203错误码。通过[setDisallowedPolicy](js-apis-enterprise-restrictions.md#restrictionssetdisallowedpolicy)接口解除禁用设备通话能力后,可解除冲突。 2. 已经通过本接口设置了通话呼入的禁用名单,再通过本接口添加通话呼入允许名单,返回9200010错误码。通过[removeIncomingCallPolicyNumbers](#telephonymanagerremoveincomingcallpolicynumbers)接口将之前设置的通话呼入禁用名单移除后,可解除冲突。 3. 已经通过本接口设置了通话呼入的允许名单,再通过本接口添加通话呼入禁用名单,返回9200010错误码。通过[removeIncomingCallPolicyNumbers](#telephonymanagerremoveincomingcallpolicynumbers)接口将之前设置的通话呼入允许名单移除后,可解除冲突。 **需要权限:** ohos.permission.ENTERPRISE_MANAGE_TELEPHONY **系统能力:** SystemCapability.Customization.EnterpriseDeviceManager **设备行为差异:** 该接口在Phone和Tablet设备中可正常调用,在其他设备中返回801错误码。 **模型约束:** 此接口仅可在Stage模型下使用。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | --------- | ------------------------------------------------------- | ---- | -------------------------------------- | | admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | | policy | [adminManager.Policy](js-apis-enterprise-adminManager.md#policy20) | 是 | 允许或禁用名单策略。BLOCK_LIST为禁用名单,TRUST_LIST为允许名单。 | | numbers | Array\ | 是 | 通话号码列表,当前仅支持全号码匹配。数组总长度不能超过1000。例如,若当前允许名单数组中已有100个号码,则最多支持通过该接口再添加900个。 | **错误码**: 以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | | 9200001 | The application is not an administrator application of the device. | | 9200002 | The administrator application does not have permission to manage the device. | | 9200010 | A conflict policy has been configured. | | 9200012 | Parameter verification failed. | | 201 | Permission verification failed. The application does not have the permission required to call the API. | | 203 | This function is prohibited by enterprise management policies. | | 801 | Capability not supported. Failed to call the API due to limited device capabilities. | **示例:** ```ts import { Want } from '@kit.AbilityKit'; import { telephonyManager } from '@kit.MDMKit'; import { adminManager } from '@kit.MDMKit'; let wantTemp: Want = { //需根据实际情况进行替换 bundleName: 'com.example.myapplication', abilityName: 'EntryAbility' }; try { let policy: adminManager.Policy = adminManager.Policy.BLOCK_LIST; let numbers: Array = [ //需根据实际情况进行替换 "13112345678" ]; telephonyManager.addIncomingCallPolicyNumbers(wantTemp, policy, numbers); console.info('Succeeded in adding incoming call policy.'); } catch (err) { console.error(`Failed to add incoming call policy. Code: ${err.code}, message: ${err.message}`); } ``` ## telephonyManager.removeIncomingCallPolicyNumbers removeIncomingCallPolicyNumbers(admin: Want, policy: adminManager.Policy, numbers: Array\): void 移除通话呼入的允许或禁用名单,若在该名单尚未设置时进行移除,则会移除失败。 以下情况下,通过本接口移除通话呼入的允许或禁用名单,会报策略冲突: 1. 已经通过[setDisallowedPolicy](js-apis-enterprise-restrictions.md#restrictionssetdisallowedpolicy)接口禁用了设备通话能力,再通过本接口移除通话呼入的禁用或允许名单,返回203错误码。通过[setDisallowedPolicy](js-apis-enterprise-restrictions.md#restrictionssetdisallowedpolicy)接口解除禁用设备通话能力后,可解除冲突。 **需要权限:** ohos.permission.ENTERPRISE_MANAGE_TELEPHONY **系统能力:** SystemCapability.Customization.EnterpriseDeviceManager **设备行为差异:** 该接口在Phone和Tablet设备中可正常调用,在其他设备中返回801错误码。 **模型约束:** 此接口仅可在Stage模型下使用。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | ------------------------------------------------------- | ---- | -------------------------------------- | | admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | | policy | [adminManager.Policy](js-apis-enterprise-adminManager.md#policy20) | 是 | 允许或禁用名单策略。BLOCK_LIST为禁用名单,TRUST_LIST为允许名单。 | | numbers | Array\ | 是 | 待移除的通话号码数组。数组总长度不能超过1000。 | **错误码**: 以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | | 9200001 | The application is not an administrator application of the device. | | 9200002 | The administrator application does not have permission to manage the device. | | 9200012 | Parameter verification failed. | | 201 | Permission verification failed. The application does not have the permission required to call the API. | | 203 | This function is prohibited by enterprise management policies. | | 801 | Capability not supported. Failed to call the API due to limited device capabilities. | **示例:** ```ts import { Want } from '@kit.AbilityKit'; import { telephonyManager } from '@kit.MDMKit'; import { adminManager } from '@kit.MDMKit'; let wantTemp: Want = { //需根据实际情况进行替换 bundleName: 'com.example.myapplication', abilityName: 'EntryAbility' }; try { let policy: adminManager.Policy = adminManager.Policy.BLOCK_LIST; let numbers: Array = [ //需根据实际情况进行替换 "13112345678" ]; telephonyManager.removeIncomingCallPolicyNumbers(wantTemp, policy, numbers); console.info('Succeeded in removing incoming call policy.'); } catch (err) { console.error(`Failed to add remove incoming call policy. Code: ${err.code}, message: ${err.message}`); } ``` ## telephonyManager.getIncomingCallPolicyNumbers getIncomingCallPolicyNumbers(admin: Want, policy: adminManager.Policy): Array\ 获取通话呼入的允许或禁用名单。 **需要权限:** ohos.permission.ENTERPRISE_MANAGE_TELEPHONY **系统能力:** SystemCapability.Customization.EnterpriseDeviceManager **设备行为差异:** 该接口在Phone和Tablet设备中可正常调用,在其他设备中返回801错误码。 **模型约束:** 此接口仅可在Stage模型下使用。 **参数:** | 参数名 | 类型 | 必填 | 说明 | | ---------- | ------------------------------------------------------- | ---- | ------------------------------------------------------------ | | admin | [Want](../apis-ability-kit/js-apis-app-ability-want.md) | 是 | 企业设备管理扩展组件。 | | policy | [adminManager.Policy](js-apis-enterprise-adminManager.md#policy20) | 是 | 允许或禁用名单策略。BLOCK_LIST为禁用名单,TRUST_LIST为允许名单。 | **返回值:** | 类型 | 说明 | | ---------------------------------------- | ----------------------- | | Array\ | 通话呼入禁用或允许名单的号码数组。 | **错误码**: 以下错误码的详细介绍请参见[企业设备管理错误码](errorcode-enterpriseDeviceManager.md)和[通用错误码](../errorcode-universal.md)。 | 错误码ID | 错误信息 | | -------- | ------------------------------------------------------------ | | 9200001 | The application is not an administrator application of the device. | | 9200002 | The administrator application does not have permission to manage the device. | | | 201 | Permission verification failed. The application does not have the permission required to call the API. | | 801 | Capability not supported. Failed to call the API due to limited device capabilities. | **示例:** ```ts import { Want } from '@kit.AbilityKit'; import { telephonyManager } from '@kit.MDMKit'; import { adminManager } from '@kit.MDMKit'; let wantTemp: Want = { //需根据实际情况进行替换 bundleName: 'com.example.myapplication', abilityName: 'EntryAbility' }; try { let policy: adminManager.Policy = adminManager.Policy.BLOCK_LIST; let numbers: Array = telephonyManager.getIncomingCallPolicyNumbers(wantTemp, policy); console.info(`Succeeded in getting incoming call policy. result: ${JSON.stringify(numbers)}`); } catch (err) { console.error(`Failed to get incoming call policy. Code: ${err.code}, message: ${err.message}`); } ```