@ohos.net.statistics (Traffic Management) (System API)

The statistics module provides APIs to query real-time or historical data traffic by the specified network interface card (NIC) or user ID (UID).

NOTE The initial APIs of this module are supported since API version 10. Newly added APIs will be marked with a superscript to indicate their earliest API version. This topic describes only system APIs provided by the module. For details about its public APIs, see @ohos.net.statistics (Traffic Management).

Modules to Import

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

statistics.on('netStatsChange')10+

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

Subscribes to traffic change events.

System API: This is a system API.

Required permissions: ohos.permission.GET_NETWORK_STATS

System capability: SystemCapability.Communication.NetManager.Core

Parameters

Name Type Mandatory Description
type string Yes Event type. This field has a fixed value of netStatsChange.
callback Callback<NetStatsChangeInfo> Yes Callback invoked when the traffic changes.

Error codes

For details about the error codes, see Traffic Management Error Codes.

ID Error Message
201 Permission denied.
202 Non-system applications use system APIs.
401 Parameter error.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.

Example

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;

Unsubscribes from traffic change events.

System API: This is a system API.

Required permissions: ohos.permission.GET_NETWORK_STATS

System capability: SystemCapability.Communication.NetManager.Core

Parameters

Name Type Mandatory Description
type string Yes Event type. This field has a fixed value of netStatsChange.
callback Callback<NetStatsChangeInfo> No Callback invoked when the traffic changes.

Error codes

For details about the error codes, see Traffic Management Error Codes.

ID Error Message
201 Permission denied.
202 Non-system applications use system APIs.
401 Parameter error.
2100002 Operation failed. Cannot connect to service.
2100003 System internal error.

Example

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);
// You can pass the callback of the on method to cancel listening for a certain type of callback. If you do not pass the callback, you will cancel listening for all callbacks.
statistics.off('netStatsChange', callback);
statistics.off('netStatsChange');

statistics.getTrafficStatsByIface10+

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

Obtains the historical data traffic of the specified NIC. This API uses an asynchronous callback to return the result.

System API: This is a system API.

Required permissions: ohos.permission.GET_NETWORK_STATS

System capability: SystemCapability.Communication.NetManager.Core

Parameters

Name Type Mandatory Description
ifaceInfo IfaceInfo Yes NIC information. For details, see IfaceInfo.
callback AsyncCallback<NetStatsInfo> Yes Callback used to return the result. If the operation is successful, error is undefined and statsInfo is the historical data traffic of the NIC. Otherwise, error is an error object.

Error codes

For details about the error codes, see Traffic Management Error Codes.

ID Error Message
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.

Example

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>;

Obtains the historical data traffic of the specified NIC. This API uses a promise to return the result.

System API: This is a system API.

Required permissions: ohos.permission.GET_NETWORK_STATS

System capability: SystemCapability.Communication.NetManager.Core

Name Type Mandatory Description
ifaceInfo IfaceInfo Yes NIC information. For details, see IfaceInfo.

Return value

Type Description
Promise<NetStatsInfo> Promise used to return the result, which is the historical data traffic of the specified NIC.

Error codes

For details about the error codes, see Traffic Management Error Codes.

ID Error Message
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.

Example

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;

Obtains the historical data traffic of the specified application. This API uses an asynchronous callback to return the result.

System API: This is a system API.

Required permissions: ohos.permission.GET_NETWORK_STATS

System capability: SystemCapability.Communication.NetManager.Core

Parameters

Name Type Mandatory Description
uidInfo UidInfo Yes Application information. For details, see UidInfo.
callback AsyncCallback<NetStatsInfo> Yes Callback used to return the result. If the operation is successful, error is undefined and statsInfo is the historical data traffic of the application. Otherwise, error is an error object.

Error codes

For details about the error codes, see Traffic Management Error Codes.

ID Error Message
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.

Example

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>;

Obtains the historical data traffic of the specified application. This API uses a promise to return the result.

System API: This is a system API.

Required permissions: ohos.permission.GET_NETWORK_STATS

System capability: SystemCapability.Communication.NetManager.Core

Parameters

Name Type Mandatory Description
uidInfo UidInfo Yes Application information. For details, see UidInfo.

Return value

Type Description
Promise<NetStatsInfo> Promise used to return the result, which is the historical data traffic of the specified NIC.

Error codes

For details about the error codes, see Traffic Management Error Codes.

ID Error Message
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.

Example

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+

Defines the parameters for querying historical traffic of an NIC.

System API: This is a system API.

System capability: SystemCapability.Communication.NetManager.Core

Name Type Mandatory Description
iface string Yes NIC name.
startTime number Yes Start time of the query, which is a timestamp in seconds.
endTime number Yes End time of the query, which is a timestamp in seconds.

UidInfo10+

Defines the parameters for querying historical traffic of an application.

System API: This is a system API.

System capability: SystemCapability.Communication.NetManager.Core

Name Type Mandatory Description
ifaceInfo IfaceInfo<IfaceInfo> Yes NIC information, including the NIC name and query time range.
uid number Yes Application UID.

NetStatsInfo10+

Defines the historical traffic information.

System API: This is a system API.

System capability: SystemCapability.Communication.NetManager.Core

Name Type Mandatory Description
rxBytes number Yes Downlink traffic, in bytes.
txBytes number Yes Uplink traffic, in bytes.
rxPackets number Yes Number of downlink packets.
txPackets number Yes Number of uplink packets.

NetStatsChangeInfo11+

Defines the NIC status and usage of an application.

System API: This is a system API.

System capability: SystemCapability.Communication.NetManager.Core

Name Type Mandatory Description
iface string Yes NIC name.
uid number No Application UID.