# Net Manager
- [简介](#简介)
- [目录](#目录)
- [约束](#约束)
- [接口说明](#接口说明)
- [使用说明](#使用说明)
- [相关仓](#相关仓)
## 简介
网络管理介绍:
网络管理模块作为电话子系统可裁剪部件,主要分为连接管理、策略管理、流量管理、网络共享、VPN管理、网络共享以及以太网连接等模块;如图1:网络管理架构图;
**图 1** 网络管理架构图

## 目录
```
foundation/communication/netmanager_base/
├─figures
├─frameworks
│ ├─js
│ │ └─napi
│ │ ├─common
│ │ ├─netconn
│ │ │ ├─include
│ │ │ └─src
│ │ ├─netpolicy
│ │ │ ├─include
│ │ │ └─src
│ │ └─netstats
│ │ ├─include
│ │ └─src
│ └─native
│ ├─dnsresolverclient
│ │ └─src
│ │ └─proxy
│ ├─netconnclient
│ │ └─src
│ │ └─proxy
│ ├─netmanagernative
│ ├─netpolicyclient
│ │ └─src
│ │ └─proxy
│ └─netstatsclient
│ └─src
│ └─proxy
├─interfaces
│ └─innerkits
│ ├─dnsresolverclient
│ │ └─include
│ │ └─proxy
│ ├─include
│ ├─netconnclient
│ │ └─include
│ │ └─proxy
│ ├─netmanagernative
│ │ └─include
│ ├─netpolicyclient
│ │ └─include
│ │ └─proxy
│ └─netstatsclient
│ └─include
│ └─proxy
├─sa_profile
├─services
│ ├─common
│ │ ├─include
│ │ └─src
│ ├─dnsresolvermanager
│ │ ├─include
│ │ │ └─stub
│ │ └─src
│ │ └─stub
│ ├─etc
│ │ └─init
│ ├─netconnmanager
│ │ ├─include
│ │ │ └─stub
│ │ └─src
│ │ └─stub
│ ├─netdcontroller
│ │ ├─include
│ │ └─src
│ ├─netmanagernative
│ │ ├─include
│ │ └─src
│ ├─netpolicymanager
│ │ ├─include
│ │ │ └─stub
│ │ └─src
│ │ └─stub
│ └─netstatsmanager
│ ├─include
│ │ └─stub
│ └─src
│ └─stub
├─test
│ ├─dnsresolvermanager
│ │ └─unittest
│ │ └─dns_resolver_manager_test
│ ├─netconnmanager
│ │ ├─mock
│ │ └─unittest
│ │ └─net_conn_manager_test
│ ├─netmanagernative
│ │ └─unittest
│ ├─netpolicymanager
│ │ └─unittest
│ │ └─net_policy_manager_test
│ └─netstatsmanager
│ └─unittest
│ └─net_stats_manager_test
└─utils
└─log
├─include
└─src
```
## 约束
- 开发语言:C++
- 软件层,需要以下子系统和服务配合使用:蜂窝数据、WiFi系统、安全子系统、软总线子系统、USB子系统、电源管理子系统等;
- 硬件层,需要搭载的设备支持以下硬件:可以进行独立蜂窝通信的Modem以及SIM卡;
## 接口说明
| 接口名 | 接口说明 | 所需权限 |
| :----------------------------------------------------------- | ------------------------------- | ---------------------------------- |
| `function` [setUidPolicy](#1.2) `(uid: number, policy: NetUidPolicy, callback: AsyncCallback): void` | 设置UID与对应的策略信息 | `ohos.permission.GET_NETWORK_INFO` |
| `function` [setUidPolicy](#1.3) `(uid: number, policy: NetUidPolicy): Promise` | 设置UID与对应的策略信息 | `ohos.permission.GET_NETWORK_INFO` |
| `function` [getUidPolicy](#1.4) `(uid: number, callback: AsyncCallback): void` | 根据UID获取对应的策略信息 | `ohos.permission.GET_NETWORK_INFO` |
| `function` [getUidPolicy](#1.5) `(uid: number): Promise` | 根据UID获取对应的策略信息 | `ohos.permission.GET_NETWORK_INFO` |
| `function` [getUids](#1.6) `(policy: NetUidPolicy, callback: AsyncCallback>): void` | 获取使用该策略信息的UID | `ohos.permission.GET_NETWORK_INFO` |
| `function` [getUids](#1.7) `(policy: NetUidPolicy): Promise>` | 获取使用该策略信息的UID | `ohos.permission.GET_NETWORK_INFO` |
| `function` [isUidNetAccess](#1.8) `(uid: number, metered: boolean, callback: AsyncCallback): void` | 根据UID与跃点情况确定是否可访问 | `ohos.permission.GET_NETWORK_INFO` |
| `function` [isUidNetAccess](#1.9) `(uid: number, metered: boolean): Promise` | 根据UID与跃点情况确定是否可访问 | `ohos.permission.GET_NETWORK_INFO` |
| `function` [isUidNetAccess](#1.10) `(uid: number, ifaceName: string, callback: AsyncCallback): void` | 根据UID与接口名确定是否可访问 | `ohos.permission.GET_NETWORK_INFO` |
| `function` [isUidNetAccess](#1.11) `(uid: number, ifaceName: string): Promise` | 根据UID与接口名确定是否可访问 | `ohos.permission.GET_NETWORK_INFO` |
| `function` [SetInterfaceConfiguration](#1.12) `(iface: string, ic: InterfaceConfiguration, callback: AsyncCallback): void` | 设置网络接口配置信息 | `ohos.permission.GET_NETWORK_INFO` |
| `function` [SetInterfaceConfiguration](#1.13) `(iface: string, ic: InterfaceConfiguration): Promise` | 设置网络接口配置信息 | `ohos.permission.GET_NETWORK_INFO` |
| `function` [GetInterfaceConfiguration](#1.14) `(iface: string, callback: AsyncCallback): void` | 获得该接口的配置信息 | `ohos.permission.GET_NETWORK_INFO` |
| `function` [GetInterfaceConfiguration](#1.15) `(iface: string): Promise` | 获得该接口的配置信息 | `ohos.permission.GET_NETWORK_INFO` |
| `function` [Whether2Activate](#1.16) `(iface: string, callback: AsyncCallback): void` | 判断接口是否已激活 | `ohos.permission.GET_NETWORK_INFO` |
| `function` [Whether2Activate](#1.17) `(iface: string): Promise` | 判断接口是否已激活 | `ohos.permission.GET_NETWORK_INFO` |
| `function` [GetActivateInterfaces](#1.18) `(callback: AsyncCallback>): void` | 获取活动的网络接口 | `ohos.permission.GET_NETWORK_INFO` |
| `function` [GetActivateInterfaces](#1.19) `(void): Promise>` | 获取活动的网络接口 | `ohos.permission.GET_NETWORK_INFO` |
| `function` [GetAddressesByName](#1.20) `(hostName: string, callback: AsyncCallback>): void` | 根据域名获取地址信息 | `ohos.permission.GET_NETWORK_INFO` |
| `function` [GetAddressesByName](#1.21) `(hostName: string): Promise>` | 根据域名获取地址信息 | `ohos.permission.GET_NETWORK_INFO` |
## 使用说明
以设置UID与对应的策略信息setUidPolicy接口为例:
`setUidPolicy(uid: number, policy: NetUidPolicy, callback: AsyncCallback): void`
设置UID与对应的策略信息,以`callback`的方式异步返回执行结果。
* 参数
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------------------------------------------------------------ | :--- | ------------------------------------------------------------ |
| `uid ` | `number` | 是 | UID |
| `policy ` | [NetUidPolicy](#NetUidPolicy) | 是 | 对应的策略信息 |
| `callback` | `AsyncCallback<`[NetPolicyResultCode](#NetPolicyResultCode)`>` | 是 | 设置UID与对应的策略信息的异步回调方法,回调值类型详情见[NetPolicyResultCode](#NetPolicyResultCode)说明。 |
* 示例
```js
netpolicy.setUidPolicy(100, 200, (err,data) => {
if(err){
console.log("data.setUidPolicy = "+ err);
return;
}
console.log("data.setUidPolicy success setUidPolicy = "+ data );
});
```
## 相关仓
netmanager_base
netmanager_ext
[电话服务子系统](https://gitee.com/openharmony/docs/blob/master/zh-cn/readme/%E7%94%B5%E8%AF%9D%E6%9C%8D%E5%8A%A1%E5%AD%90%E7%B3%BB%E7%BB%9F.md)
[ telephony_cellular_data](https://gitee.com/openharmony/telephony_cellular_data/blob/master/README.md)