目录

DevicePhoneManager

Class Info

public class DevicePhoneManager

设备通话管理类。

Public Method Summary

Qualifier and Type

Method Name and Description

void

hangupCalling(ComponentName admin)

挂断当前通话。

boolean

setDataRoamingDisabled(ComponentName admin, boolean isDisabled)

禁用/启用漫游数据业务。

boolean

isDataRoamingDisabled(ComponentName admin)

查询漫游数据业务禁用状态。

boolean

setAccessPointNameDisabled(ComponentName admin, boolean isDisabled)

禁用/启用 APN。

boolean

isApnChangeDisabled(ComponentName admin)

查询 APN 禁用状态。

boolean

addMdmNumberList(ComponentName admin, ArrayList<String> numbers, int blockMode, boolean isOutgoing, boolean isBlockList)

设置通话黑白名单。

boolean

removeMdmNumberList(ComponentName admin,ArrayList<String> numbers, int blockMode, boolean isOutgoing, boolean isRemoveAll)

从通话黑白名单中移除电话号码。

boolean

isBlockNumber(ComponentName admin, String number, boolean isOutgoing)

查询电话号码是否在通话黑名单里面。

boolean

setRoamingCallDisabled(ComponentName admin, boolean isDisabled)

禁止/允许漫游状态通话。

boolean

isRoamingCallDisabled(ComponentName admin)

查询是否禁止漫游状态通话。

boolean

setNonEmergencyCallDisabled(ComponentName admin, boolean isDisabled)

禁止/允许非紧急号码通话。

boolean

isNonEmergencyCallDisabled(ComponentName admin)

查询是否禁止非紧急号码通话。

boolean

setPhoneCallLimitation(ComponentName admin, boolean isOutgoing, int dateType, int limitNumber)

设置通话次数限制策略。

boolean

removePhoneCallLimitation(ComponentName admin, boolean isOutgoing, int dateType)

移除通话次数限制策略。

boolean

isPhoneCallLimitationSet(ComponentName admin, boolean isOutgoing)

查询是否设置了通话次数限制。

boolean

setPhoneNumberShowDisabled(ComponentName admin, boolean isDisabled)

禁用/启用电话号码显示功能。

boolean

isPhoneNumberShowDisabled(ComponentName admin)

查询号码显示功能是否被禁用。

boolean

setCallStatusNotificationApp(ComponentName admin, String packageName)

设置接收通话状态通知的应用。

String

getCallStatusNotificationApp()

获取接收通话状态通知的应用包名。

boolean

setMultiCallingDisabled(ComponentName admin, boolean isDisabled)

禁用/启用多路通话功能。

boolean

isMultiCallingDisabled(ComponentName admin)

查询多路通话功能状态

Public Methods

[h2]hangupCalling

Supported Devices

Device Type

OS Version

手机、平板

EMUI 4.1及以上或HarmonyOS 2.0及以上

Method

public void hangupCalling(ComponentName admin)

挂断当前通话,包括三方通话以及会议电话等。

注意:需要申请com.huawei.permission.sec.MDM_PHONE权限。

Parameters

Name

Description

admin

调用该接口的APK的组件名称,不能为null。

Return

Type

Description

void

-

Throws

Name

Description

SecurityException

  • 此APK未经设备管理激活。
  • 无com.huawei.permission.sec.MDM_PHONE权限。
  • 此APK不属于当前用户。

IllegalArgumentException

参数admin为null时。

[h2]setDataRoamingDisabled

Supported Devices

Device Type

OS Version

手机、平板

EMUI 5.1及以上或HarmonyOS 2.0及以上

Method

public boolean setDataRoamingDisabled(ComponentName admin, boolean isDisabled)

禁用漫游数据业务。禁用漫游数据业务后,漫游数据设置项不可用,用户不能再进行相关设置。

注意:需要申请com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

Parameters

Name

Description

admin

调用该接口的组件名称,不能为null。

isDisabled

  • true:禁用漫游数据业务。
  • false:不禁用漫游数据业务。

Return

Type

Description

boolean

  • true:配置成功。
  • false:配置失败。

Throws

Name

Description

SecurityException

  • 此APK未经设备管理激活。
  • 无com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

[h2]isDataRoamingDisabled

Supported Devices

Device Type

OS Version

手机、平板

EMUI 5.1及以上或HarmonyOS 2.0及以上

Method

public boolean isDataRoamingDisabled(ComponentName admin)

查询是否禁用了漫游数据业务。

Parameters

Name

Description

admin

调用该接口的组件名称,不能为null。

Return

Type

Description

boolean

  • true:漫游数据设置项已禁用。
  • false:漫游数据设置项未禁用。

Throws

Name

Description

SecurityException

此APK未经设备管理激活。

[h2]setAccessPointNameDisabled

Supported Devices

Device Type

OS Version

手机、平板

EMUI 5.1及以上或HarmonyOS 2.0及以上

Method

public boolean setAccessPointNameDisabled(ComponentName admin, boolean isDisabled)

禁用/启用 APN。禁用 APN 后,APN 设置项不可用,用户不能再进行相关设置。

注意:需要申请com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

Parameters

Name

Description

admin

调用该接口的组件名称,不能为null。

isDisabled

  • true:禁用APN。
  • false:不禁用APN。

Return

Type

Description

boolean

  • true:配置成功。
  • false:配置失败。

Throws

Name

Description

SecurityException

  • 此APK未经设备管理激活。
  • 无com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

[h2]isApnChangeDisabled

Supported Devices

Device Type

OS Version

手机、平板

EMUI 5.1及以上或HarmonyOS 2.0及以上

Method

public boolean isApnChangeDisabled(ComponentName admin)

查询是否禁用了 APN。

Parameters

Name

Description

admin

调用该接口的组件名称。

Return

Type

Description

boolean

true:APN已被禁用。

false:APN未被禁用。

Throws

Name

Description

SecurityException

此APK未经设备管理激活。

[h2]addMdmNumberList

Supported Devices

Device Type

OS Version

手机、平板

EMUI 5.1及以上或HarmonyOS 2.0及以上

Method

public boolean addMdmNumberList(ComponentName admin, ArrayList<String> numbers, int blockMode, boolean isOutgoing, boolean isBlockList)

设置通话黑名单和白名单。如果将号码添加至通话黑名单,设备将拦截此号码的来去电;如果设置了通话白名单,设备将拦截所有非白名单号码的来去电。来电和去电可分开设置,互不影响。

注意:

  1. 需要申请com.huawei.permission.sec.MDM_PHONE_MANAGER权限。
  2. APK设置numbers累计数量总和不能超过200,否则接口返回false。

Parameters

Name

Description

admin

调用该接口的组件名称,不能为null。

numbers

需要设置的电话号码,传入全数字号码。(上限200)

blockMode

号码匹配的可选模式:

  • 全匹配,黑白名单均适用:DevicePhoneManager.MATCH_ALL_MODE = 0;
  • 匹配开头,黑白名单均适用:DevicePhoneManager.MATCH_PREFIX_MODE = 1;
  • 拦截所有号码,黑名单适用:DevicePhoneManager.BLOCK_ALL_MODE = 2;
  • 允许所有号码,白名单适用:DevicePhoneManager.ALLOW_ALL_MODE = 3;
  • 其他 int 值非法。

isOutgoing

表示设置去电名单或来电名单。取值为“true”表示设置去电黑白名单;取值为“false”表示设置来电黑白名单。

isBlackList

表示设置通话黑名单或白名单。取值为“true”表示设置通话黑名单;取值为“false”表示设置通话白名单。

如果设备已设置通话黑名单,则无法再设置通话白名单。必须先调用removeMdmNumberList()接口移除已设置的通话黑名单。

反之,如果设备已设置通话白名单,则无法再设置通话黑名单。必须先调用removeMdmNumberList()接口移除已设置的通话白名单。

Return

Type

Description

boolean

  • true:配置成功。
  • false:配置失败。

Throws

Name

Description

SecurityException

  • 此APK未经设备管理激活。
  • 无com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

[h2]removeMdmNumberList

Supported Devices

Device Type

OS Version

手机、平板

EMUI 5.1及以上或HarmonyOS 2.0及以上

Method

public boolean removeMdmNumberList(ComponentName admin,ArrayList<String> numbers, int blockMode, boolean isOutgoing, boolean isRemoveAll)

从通话黑白名单中移除电话号码。

注意:需要申请com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

Parameters

Name

Description

admin

调用该接口的组件名称,不能为null。

numbers

需要移除的电话号码,传入全数字号码。

blockMode

号码匹配的可选模式:

  • 全匹配,黑白名单均适用:DevicePhoneManager.MATCH_ALL_MODE = 0;
  • 匹配开头,黑白名单均适用:DevicePhoneManager.MATCH_PREFIX_MODE = 1;
  • 拦截所有号码,黑名单适用:DevicePhoneManager.BLOCK_ALL_MODE = 2;
  • 允许所有号码,白名单适用:DevicePhoneManager.ALLOW_ALL_MODE = 3;

其他int值非法。

isOutgoing

表示移除去电名单或来电名单。取值为“true”移除去电名单内容,取值为“false”移除来电名单内容。

isRemoveAll

移除所有名单。

Return

Type

Description

boolean

  • true:移除成功。
  • false:失败。

Throws

Name

Description

SecurityException

  • 此APK未经设备管理激活。
  • 无com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

[h2]isBlockNumber

Supported Devices

Device Type

OS Version

手机、平板

EMUI 5.1及以上或HarmonyOS 2.0及以上

Method

public boolean isBlockNumber(ComponentName admin, String number, boolean isOutgoing)

查询电话号码是否在通话黑名单里面。

Parameters

Name

Description

admin

调用该接口的组件名称。

number

需要查询的电话号码。

isOutgoing

  • true:查询电话号码是否在去电黑名单里面。
  • false:查询电话号码是否在来电黑名单里面。

Return

Type

Description

boolean

  • true:电话号码在通话黑名单里面。
  • false:电话号码不在通话黑名单里面。

[h2]setRoamingCallDisabled

Supported Devices

Device Type

OS Version

手机、平板

EMUI 8.0及以上或HarmonyOS 2.0及以上

Method

public boolean setRoamingCallDisabled(ComponentName admin, boolean isDisabled)

禁止或允许手机在漫游状态下通话。双卡手机禁用,只禁用漫游卡,紧急号码不受限。

注意:需要申请com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

Parameters

Name

Description

admin

调用该接口的组件名称,不能为null。

isDisabled

  • true: 禁止。
  • false:允许。

Return

Type

Description

boolean

  • true:配置成功。
  • false:配置失败。

Throws

Name

Description

SecurityException

  • 此APK未经设备管理激活。
  • 无com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

[h2]isRoamingCallDisabled

Supported Devices

Device Type

OS Version

手机、平板

EMUI 8.0及以上或HarmonyOS 2.0及以上

Method

public boolean isRoamingCallDisabled(ComponentName admin)

查询是否禁止漫游状态通话。

Parameters

Name

Description

admin

调用该接口的组件名称,能为null。

Return

Type

Description

boolean

  • true:漫游状态通话被禁用。
  • false:漫游状态下允许通话。

Throws

Name

Description

SecurityException

此APK未经设备管理激活。

[h2]setNonEmergencyCallDisabled

Supported Devices

Device Type

OS Version

手机、平板

EMUI 8.0及以上或HarmonyOS 2.0及以上

Method

public boolean setNonEmergencyCallDisabled(ComponentName admin, boolean isDisabled)

禁止或允许非紧急号码通话。禁止后非紧急号码不能通话,紧急号码不受限。

注意:需要申请com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

Parameters

Name

Description

admin

调用该接口的组件名称,不能为null。

isDisabled

  • true: 禁止。
  • false:允许。

Return

Type

Description

boolean

  • true:配置成功。
  • false:配置失败。

Throws

Name

Description

SecurityException

  • 此APK未经设备管理激活。
  • 无com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

[h2]isNonEmergencyCallDisabled

Supported Devices

Device Type

OS Version

手机、平板

EMUI 8.0及以上或HarmonyOS 2.0及以上

Method

public boolean isNonEmergencyCallDisabled(ComponentName admin)

查询是否禁止非紧急号码通话。

Parameters

Name

Description

admin

调用该接口的组件名称,能为null。

Return

Type

Description

boolean

  • true:非紧急通话被禁用。
  • false:允许非紧急通话。

Throws

Name

Description

SecurityException

此APK未经设备管理激活。

[h2]setPhoneCallLimitation

Supported Devices

Device Type

OS Version

手机、平板

EMUI 8.0及以上或HarmonyOS 2.0及以上

Method

public boolean setPhoneCallLimitation(ComponentName admin, boolean isOutgoing, int dateType, int limitNumber)

可以分别设置天/周/月拨打或接听的通话次数。拨打和接听次数可以分开设置。紧急通话不受限制。

注意:

  1. 需要申请com.huawei.permission.sec.MDM_PHONE_MANAGER权限。
  2. 该功能使用手机系统时间作为每次通话时间,固需要限制用户手动更改手机系统时间,可以和“禁用/启用更改系统日期和时间设置”接口配合使用,否则可能导致限制功能失效。

Parameters

Name

Description

admin

调用该接口的组件名称,不能为null。

isOutgoing

  • true:设置去电。
  • false:设置来电。

dateType

设置天/周/月:

  • 天:DevicePhoneManager .CALLS_LIMIT_TYPE_DAY = 0;
  • 周:DevicePhoneManager .CALLS_LIMIT_TYPE_WEEK = 1;
  • 月:DevicePhoneManager .CALLS_LIMIT_TYPE_MONTH = 2;

其他 int 值非法。

limitNumber

表示限制的次数。

Return

Type

Description

boolean

  • true:配置成功。
  • false:配置失败。

Throws

Name

Description

SecurityException

  • 此APK未经设备管理激活。
  • 无com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

[h2]removePhoneCallLimitation

Supported Devices

Device Type

OS Version

手机、平板

EMUI 8.0及以上或HarmonyOS 2.0及以上

Method

public boolean removePhoneCallLimitation (ComponentName admin, boolean isOutgoing, int dateType)

可以分别移除天/周/月拨打或接听的通话次数限制。

注意:需要申请com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

Parameters

Name

Description

admin

调用该接口的组件名称,不能为null。

isOutgoing

  • true:设置去电。
  • false:设置来电。

dateType

设置天/周/月:

  • 天:DevicePhoneManager .CALLS_LIMIT_TYPE_DAY = 0;
  • 周:DevicePhoneManager .CALLS_LIMIT_TYPE_WEEK = 1;
  • 月:DevicePhoneManager .CALLS_LIMIT_TYPE_MONTH = 2;

其他 int 值非法。

Return

Type

Description

boolean

  • true:配置成功。
  • false:配置失败。

Throws

Name

Description

SecurityException

  • 此APK未经设备管理激活。
  • 无com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

[h2]isPhoneCallLimitationSet

Supported Devices

Device Type

OS Version

手机、平板

EMUI 8.0及以上或HarmonyOS 2.0及以上

Method

public boolean isPhoneCallLimitationSet(ComponentName admin, boolean isOutgoing)

查询是否设置了通话次数限制。

Parameters

Name

Description

admin

调用该接口的组件名称,能为null。

isOutgoing

  • true:去电。
  • false:来电。

Return

Type

Description

boolean

  • true:设置了通话次数限制。
  • false:没有设置通话次数限制。

Throws

Name

Description

SecurityException

此APK未经设备管理激活。

[h2]setPhoneNumberShowDisabled

Supported Devices

Device Type

OS Version

手机、平板

EMUI 10.0.1及以上或HarmonyOS 2.0及以上

Method

public boolean setPhoneNumberShowDisabled(ComponentName admin, boolean isDisabled)

当应用调用此接口隐藏号码时,通话详情、通话记录、拨号盘界面等界面会隐藏电话号码。

注意:需要申请com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

Parameters

Name

Description

admin

调用该接口的组件名称。

isDisabled

  • true:启用号码隐藏功能。
  • false:关闭号码隐藏功能。

Return

Type

Description

boolean

  • true:设置成功。
  • false:设置失败。

Throws

Name

Description

SecurityException

  • 此APK未经设备管理激活。
  • 无com.huawei.permission.sec.MDM_PHONE_MANAGER权限。
  • 此APK不属于当前用户。

IllegalArgumentException

参数admin为null时。

[h2]isPhoneNumberShowDisabled

Supported Devices

Device Type

OS Version

手机、平板

EMUI 10.0.1及以上或HarmonyOS 2.0及以上

Method

public boolean isPhoneNumberShowDisabled(ComponentName admin)

查询号码显示功能是否被禁用。

Parameters

Name

Description

admin

调用该接口的组件名称,查询该应用配置的策略;参数为null时,获取所有应用设置的综合策略结果。

Return

Type

Description

boolean

  • true:号码显示功能被禁用。
  • false:号码显示功能被启用。

Throws

Name

Description

SecurityException

此APK不属于当前用户。

[h2]setCallStatusNotificationApp

Supported Devices

Device Type

OS Version

手机、平板

EMUI 11.0或HarmonyOS 2.0及以上

Method

public boolean setCallStatusNotificationApp(ComponentName admin, String packageName)

通过设置应用包名,向应用发送通话状态通知的定向广播, 包名为空值时取消发送通话状态通知。

注意:需要申请com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

Parameters

Name

Description

admin

调用该接口的组件名称。

packageName

接收通话状态通知的应用包名, 包名为空值时取消发送通话状态通知。

Return

Type

Description

boolean

  • true:设置应用包名成功。
  • false:设置应用包名失败。

Throws

Name

Description

SecurityException

  • 此APK未经设备管理激活。
  • 无com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

IllegalArgumentException

参数错误。

如果需要获取通话状态通知结果,开发者需要在你的工程中定义一个广播接收器BroadcastReceiver。在AndroidManifest.xml中指定action为" action.huawei.CALL_STATUS_NOTIFICATION_FOR_MDM ",同时配置exported为false。

如:

<receiver
    android:name=".MdmOnReceiverCallStatusNotification"
    android:exported="false">
    <intent-filter>
        <action android:name="action.huawei.CALL_STATUS_NOTIFICATION_FOR_MDM" />
    </intent-filter>
</receiver>

在广播接收器中,开发者通过intent获取到Bundle对象,然后从Bundle对象中获取状态值。

Bundle中有以下字段:

boolean is_outgoing: true: 去电 false:来电

boolean is_connected: true:通话接通 false:通话未接通

int who_hang_up: 1: 我方挂断 2:对方挂断 3:其他场景挂断

int disconnected_cause_reason: 通话结束具体原因(有下面几种取值)

1: 本地挂断,如点击挂断按钮挂断电话。

2: 对方挂断。

3 :来电拒接。

4 :来电无人接听。

5: 主叫时拒接或无人接听,等待运营商提示后自动挂断。

6: 其他场景异常挂断。

通话状态通知结果字段获取只能通过下面方式:

Bundle. getBoolean("is_outgoing") 参数只能是is_outgoing

Bundle. getBoolean (“is_connected”) 参数只能是is_connected

Bundle. getInt("who_hang_up") 参数只能是who_hang_up

Bundle.getInt(“disconnected_cause_reason”) 参数只能是disconnected_cause_reason

示例代码:

public class MdmBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent == null) {
            return ;
        }
        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            boolean isOutGoing = bundle. getBoolean("is_outgoing");
            boolean isConnected = bundle. getBoolean("is_connected");
            int hungUp = bundle.getInt("who_hang_up");
            int causeReason = bundle.getInt("disconnected_cause_reason ");
            if (causeReason ==1) {
                //业务逻辑处理
            } else {
                //业务逻辑处理
            }
        }
    }
}

[h2]getCallStatusNotificationApp

Supported Devices

Device Type

OS Version

手机、平板

EMUI 11.0或HarmonyOS 2.0及以上

Method

public String getCallStatusNotificationApp()

获取接收通话状态通知的应用包名。

Parameters

Name

Description

void

-

Return

Type

Description

String

接收通话状态通知的应用包名。

Throws

Name

Description

SecurityException

此APK未经设备管理激活。

[h2]setMultiCallingDisabled

Supported Devices

Device Type

OS Version

手机、平板

EMUI 11.0或HarmonyOS 2.0及以上

Method

public boolean setMultiCallingDisabled(ComponentName admin, boolean isDisabled)

禁用/启用多路通话功能,禁用后同时只能进行一路通话。

注意:需要申请com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

Parameters

Name

Description

admin

调用该接口的组件名称。

isDisabled

  • true:禁用多路通话功能。
  • false:启用多路通话功能。

Return

Type

Description

boolean

  • true:禁用多路通话功能成功。
  • false:禁用多路通话功能失败。

Throws

Name

Description

SecurityException

  • 此APK未经设备管理激活。
  • 无com.huawei.permission.sec.MDM_PHONE_MANAGER权限。

IllegalArgumentException

参数错误。

[h2]isMultiCallingDisabled

Supported Devices

Device Type

OS Version

手机、平板

EMUI 11.0或HarmonyOS 2.0及以上

Method

public boolean isMultiCallingDisabled(ComponentName admin)

查询多路通话功能是否禁用。

Parameters

Name

Description

admin

调用该接口的组件名称,参数为null时,获取所有应用设置的综合策略结果。

Return

Type

Description

boolean

  • true:多路通话功能被禁用。
  • false:多路通话功能未禁用。

Throws

Name

Description

SecurityException

此APK未经设备管理激活。