@ohos.net.statistics (流量管理)(系统接口)

流量管理模块,支持基于网卡/UID 的实时流量统计和历史流量统计查询能力。

说明: 本模块首批接口从 API version 10 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 当前页面仅包含本模块的系统接口,其他公开接口参见@ohos.net.statistics (流量管理)

导入模块

import statistics from "@ohos.net.statistics";

statistics.on('netStatsChange')10+

on(type: 'netStatsChange', callback: Callback<NetStatsChangeInfo>): void

订阅流量改变事件通知。

系统接口:此接口为系统接口。

需要权限:ohos.permission.GET_NETWORK_STATS

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名 类型 必填 说明
type string 订阅事件,固定为'netStatsChange'。
callback Callback<NetStatsChangeInfo> 当流量有改变时触发回调函数。

错误码:

以下错误码的详细介绍参见statistics 错误码

错误码 ID 错误信息
201 Permission denied.
202 Non-system applications use system APIs.
401 Parameter error.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

import statistics from '@ohos.net.statistics';

class IFace {
  iface: string = ""
  uid?: number = 0
}
statistics.on('netStatsChange', (data: IFace) => {
  console.log('on netStatsChange' + JSON.stringify(data));
});

statistics.off('netStatsChange')10+

off(type: 'netStatsChange', callback?: Callback<NetStatsChangeInfo>): void;

取消订阅流量改变事件通知。

系统接口:此接口为系统接口。

需要权限:ohos.permission.GET_NETWORK_STATS

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名 类型 必填 说明
type string 注销订阅事件,固定为'netStatsChange'。
callback Callback<NetStatsChangeInfo> 当流量有改变时触发回调函数。

错误码:

以下错误码的详细介绍参见statistics 错误码

错误码 ID 错误信息
201 Permission denied.
202 Non-system applications use system APIs.
401 Parameter error.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.

示例:

import statistics from '@ohos.net.statistics';

class IFace {
  iface: string = ""
  uid?: number = 0
}
let callback: (data: IFace) => void = (data: IFace) => {
    console.log("on netStatsChange, iFace:" + data.iface + " uid: " + data.uid);
}
statistics.on('netStatsChange', callback);
// 可以指定传入on中的callback取消一个订阅,也可以不指定callback清空所有订阅。
statistics.off('netStatsChange', callback);
statistics.off('netStatsChange');

statistics.getTrafficStatsByIface10+

getTrafficStatsByIface(ifaceInfo: IfaceInfo, callback: AsyncCallback<NetStatsInfo>): void;

获取指定网卡历史流量信息,使用 callback 方式作为异步方法。

系统接口:此接口为系统接口。

需要权限:ohos.permission.GET_NETWORK_STATS

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名 类型 必填 说明
ifaceInfo IfaceInfo 指定查询的网卡信息,参见IfaceInfo
callback AsyncCallback<NetStatsInfo> 回调函数。成功时 statsInfo 返回包含网卡历史流量信息,error 为 undefined,否则为错误对象。

错误码:

以下错误码的详细介绍参见statistics 错误码

错误码 ID 错误信息
201 Permission denied.
202 Non-system applications use system APIs.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.
2103017 Read data from database failed.

示例:

import { BusinessError } from '@ohos.base';
import statistics from '@ohos.net.statistics';

let iFaceInfo: statistics.IfaceInfo | null = null;
if (iFaceInfo) {
  statistics.getTrafficStatsByIface(iFaceInfo as statistics.IfaceInfo, (error: BusinessError, statsInfo: statistics.NetStatsInfo) => {
    console.log(JSON.stringify(error));
    console.log(
      "getTrafficStatsByIface bytes of received = " +
      JSON.stringify(statsInfo.rxBytes)
    );
    console.log(
      "getTrafficStatsByIface bytes of sent = " +
      JSON.stringify(statsInfo.txBytes)
    );
    console.log(
      "getTrafficStatsByIface packets of received = " +
      JSON.stringify(statsInfo.rxPackets)
    );
    console.log(
      "getTrafficStatsByIface packets of sent = " +
      JSON.stringify(statsInfo.txPackets)
    );
  });
}

statistics.getTrafficStatsByIface10+

getTrafficStatsByIface(ifaceInfo: IfaceInfo): Promise<NetStatsInfo>;

获取指定网卡历史流量信息,使用 Promise 方式作为异步方法。

系统接口:此接口为系统接口。

需要权限:ohos.permission.GET_NETWORK_STATS

系统能力:SystemCapability.Communication.NetManager.Core

参数名 类型 必填 说明
ifaceInfo IfaceInfo 指定查询的网卡信息,参见IfaceInfo

返回值:

类型 说明
Promise<NetStatsInfo> 以 Promise 形式返回获取结果,返回网卡历史流量信息。

错误码:

以下错误码的详细介绍参见statistics 错误码

错误码 ID 错误信息
201 Permission denied.
202 Non-system applications use system APIs.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.
2103017 Read data from database failed.

示例:

import statistics from '@ohos.net.statistics';

let iFaceInfo: statistics.IfaceInfo | null = null;
if (iFaceInfo) {
  statistics.getTrafficStatsByIface(iFaceInfo as statistics.IfaceInfo).then((statsInfo: statistics.NetStatsInfo) => {
    console.log(
      "getTrafficStatsByIface bytes of received = " +
      JSON.stringify(statsInfo.rxBytes)
    );
    console.log(
      "getTrafficStatsByIface bytes of sent = " +
      JSON.stringify(statsInfo.txBytes)
    );
    console.log(
      "getTrafficStatsByIface packets of received = " +
      JSON.stringify(statsInfo.rxPackets)
    );
    console.log(
      "getTrafficStatsByIface packets of sent = " +
      JSON.stringify(statsInfo.txPackets)
    );
  });
}

statistics.getTrafficStatsByUid10+

getTrafficStatsByUid(uidInfo: UidInfo, callback: AsyncCallback<NetStatsInfo>): void;

获取指定应用历史流量信息,使用 callback 方式作为异步方法。

系统接口:此接口为系统接口。

需要权限:ohos.permission.GET_NETWORK_STATS

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名 类型 必填 说明
uidInfo UidInfo 指定查询的应用信息,参见UidInfo
callback AsyncCallback<NetStatsInfo> 回调函数。成功时 statsInfo 返回包含应用历史流量信息,error 为 undefined,否则为错误对象。

错误码:

以下错误码的详细介绍参见statistics 错误码

错误码 ID 错误信息
201 Permission denied.
202 Non-system applications use system APIs.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.
2103017 Read data from database failed.

示例:

import { BusinessError } from '@ohos.base';
import statistics from '@ohos.net.statistics';

let uidInfo: statistics.UidInfo = {
  uid: 20010037,
  ifaceInfo: {
    iface: '',
    startTime: 1,
    endTime: 3,
  }
}

statistics.getTrafficStatsByUid(
  uidInfo,
  (error: BusinessError, statsInfo: statistics.NetStatsInfo) => {
    console.log(JSON.stringify(error));
    console.log(
      "getTrafficStatsByUid bytes of received = " +
      JSON.stringify(statsInfo.rxBytes)
    );
    console.log(
      "getTrafficStatsByUid bytes of sent = " +
      JSON.stringify(statsInfo.txBytes)
    );
    console.log(
      "getTrafficStatsByUid packets of received = " +
      JSON.stringify(statsInfo.rxPackets)
    );
    console.log(
      "getTrafficStatsByUid packets of sent = " +
      JSON.stringify(statsInfo.txPackets)
    );
  }
);

statistics.getTrafficStatsByUid10+

getTrafficStatsByUid(uidInfo: UidInfo): Promise<NetStatsInfo>;

获取指定应用历史流量信息,使用 Promise 方式作为异步方法。

系统接口:此接口为系统接口。

需要权限:ohos.permission.GET_NETWORK_STATS

系统能力:SystemCapability.Communication.NetManager.Core

参数:

参数名 类型 必填 说明
uidInfo UidInfo 指定查询的应用信息,参见UidInfo

返回值:

类型 说明
Promise<NetStatsInfo> 以 Promise 形式返回获取结果,返回应用历史流量信息。

错误码:

以下错误码的详细介绍参见statistics 错误码

错误码 ID 错误信息
201 Permission denied.
202 Non-system applications use system APIs.
401 Parameter error.
2100001 Invalid parameter value.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.
2103017 Read data from database failed.

示例:

import statistics from '@ohos.net.statistics'

let uidInfo: statistics.UidInfo = {
  uid: 20010037,
  ifaceInfo: {
    iface: '',
    startTime: 1,
    endTime: 3,
  }
}

statistics.getTrafficStatsByUid(uidInfo).then((statsInfo: statistics.NetStatsInfo) => {
  console.log("getTrafficStatsByUid bytes of received = " + JSON.stringify(statsInfo.rxBytes));
  console.log("getTrafficStatsByUid bytes of sent = " + JSON.stringify(statsInfo.txBytes));
  console.log("getTrafficStatsByUid packets of received = " + JSON.stringify(statsInfo.rxPackets));
  console.log("getTrafficStatsByUid packets of sent = " + JSON.stringify(statsInfo.txPackets));
})

IfaceInfo10+

查询网卡历史流量参数信息。

系统接口:此接口为系统接口。

系统能力:SystemCapability.Communication.NetManager.Core

名称 类型 必填 说明
iface string 查询的网卡名。
startTime number 查询的开始时间(时间戳;单位:秒)。
endTime number 查询的结束时间(时间戳;单位:秒)。

UidInfo10+

查询应用历史流量参数信息。

系统接口:此接口为系统接口。

系统能力:SystemCapability.Communication.NetManager.Core

名称 类型 必填 说明
ifaceInfo IfaceInfo<IfaceInfo> 需查询的网卡和时间参数信息。
uid number 需查询的应用 uid。

NetStatsInfo10+

获取的历史流量信息。

系统接口:此接口为系统接口。

系统能力:SystemCapability.Communication.NetManager.Core

名称 类型 必填 说明
rxBytes number 流量下行数据(单位:字节)。
txBytes number 流量上行数据(单位:字节)。
rxPackets number 流量下行包个数。
txPackets number 流量上行包个数。

NetStatsChangeInfo11+

监听和管理网络接口的状态和使用情况

系统接口:此接口为系统接口。

系统能力:SystemCapability.Communication.NetManager.Core

名称 类型 必填 说明
iface string 网卡名称。
uid number 应用UID。