【L0 API】Wifi API定义
WIFI模块 说明: 本模块首批接口从API version 1开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 简介 本模块主要提供WLAN基础功能,当前只支持STA的能力,提供给应用通过WLAN连接AP。 导入模块 import wifi from '@ohos.wifi'; enableWifi1
WIFI模块
说明: 本模块首批接口从API version 1开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
简介
本模块主要提供WLAN基础功能,当前只支持STA的能力,提供给应用通过WLAN连接AP。
导入模块
import wifi from '@ohos.wifi';
enableWifi1+
enableWifi(void): boolean
使能Wi-Fi模块。
返回值:
类型 | 说明 |
---|---|
boolean | 操作结果,true: 使能成功,false: 使能失败。 |
示例:
var err = wifi.enableWifi(); if (err == true) { console.log('enableWifi succ.'); } else { console.error('enableWifi fail.'); }
disableWifi1+
disableWifi(void): boolean
关闭Wi-Fi模块。
返回值:
类型 | 说明 |
---|---|
boolean | 操作结果,true: 关闭成功,false: 关闭失败。 |
示例:
var ret = wifi.disableWifi(); if (ret == true) { console.log('disableWifi succ.'); } else { console.error('disableWifi fail.'); }
isWifiActive 1+
查询Wi-Fi是否已使能。
isWifiActive(void): boolean
返回值:
类型 | 说明 |
---|---|
boolean | true: 已激活,false: 未激活。 |
示例:
var err = wifi.isWifiActive(); if (err == true) { console.log('wifi is active.'); } else { console.log('wifi is deactive.'); }
isConnected 1+
查询Wi-Fi是否已连接。
isConnected(void): boolean
返回值:
类型 | 说明 |
---|---|
boolean | true: 已连接,false: 未连接。 |
示例:
var err = wifi.isConnected(); if (err == true) { console.log('wifi is connected.'); } else { console.log('wifi is disconnected.'); }
scan1+
启动Wi-Fi扫描。
scan(void): boolean
返回值:
类型 | 说明 |
---|---|
boolean | true: 扫描动作执行成功,false: 扫描动作执行失败。 |
示例:
var err = wifi.scan(); if (err == true) { console.log('scan succ.'); } else { console.error('scan fail'); }
getScanInfos1+
getScanInfos(callback: Callback<Array<WifiScanInfo>>): void
获取Wi-Fi扫描结果。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
callback | Callback<Array<WifiScanInfo>> | 是 | 扫描到的热点列表结果回调函数。 |
示例:
wifi.getScanInfos({ callback: (infos) => { console.log('getScanInfoList callback success'); for (let i = 0; i < infos.length; i++) { console.log('getScanInfoList: ssid: ' + infos[i].ssid + ', bssid: ' + infos[i].bssid + ', capabilities: ' + infos[i].capabilities + ', securityType: ' + infos[i].securityType + ', rssi: ' + infos[i].rssi + ', band: ' + infos[i].band + ', frequency: ' + infos[i].frequency + ', channelWidth: ' + infos[i].channelWidth + ', timestamp: ' + infos[i].timestamp); } } });
WifiScanInfo1+
扫描的 Wi-Fi 信息。
参数名 | 类型 | 读写属性 | 说明 |
---|---|---|---|
ssid | string | 只读 | Wi-Fi ssid。 |
bssid | string | 只读 | Wi-Fi bssid。 |
capabilities | string | 只读 | 热点功能。 |
securityType | WifiSecurityType | 只读 | 安全类型。 |
rssi | number | 只读 | 信号强度。 |
band | number | 只读 | 频段。 |
frequency | number | 只读 | 频率。 |
channelWidth | number | 只读 | 信道带宽。 |
timestamp | number | 只读 | 时间戳。 |
WifiSecurityType1+
枚举,Wi-Fi安全类型。
系统能力:
名称 | 默认值 | 描述 |
---|---|---|
WIFI_SEC_TYPE_INVALID | 0x00 | 安全类型无效。 |
WIFI_SEC_TYPE_OPEN | 0x01 | 开放。 |
WIFI_SEC_TYPE_WEP | 0x02 | 有线等效保密 (WEP)。 |
WIFI_SEC_TYPE_PSK | 0x03 | 预共享密钥 (PSK)。 |
WIFI_SEC_TYPE_SAE | 0x04 | 同时进行等价身份验证 (SAE)。 |
enableNetwork1+
enableNetwork(networkId: number): boolean
启用设备配置。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
networkId | number | 是 | 设备配置Id号。 |
返回值:
类型 | 说明 |
---|---|
boolean | 操作结果,true为成功,false为失败。 |
示例:
var err = wifi.enableNetwork(networkId: 0); if (err == true) { console.log('enableNetwork succ.'); } else { console.error('enableNetwork fail.'); }
disableNetwork1+
disableNetwork(networkId: number): boolean
禁用设备配置。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
networkId | number | 是 | 设备配置Id号。 |
返回值:
类型 | 说明 |
---|---|
boolean | 操作结果,true为成功,false为失败。 |
示例:
var err = wifi.disableNetwork({ networkId: 0, }); if (err == true) { console.log('disableNetwork succ.'); } else { console.error('disableNetwork fail.'); }
connectToNetwork1+
connectToNetwork(networkId: number): boolean
连接到指定Id的网络。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
networkId | number | 是 | 设备配置Id号。 |
返回值:
类型 | 说明 |
---|---|
boolean | 操作结果,true为成功,false为失败。 |
示例:
var err = wifi.connectToNetwork(networkId: networkId); if (err == true) { console.log('connectToNetwork succ.'); } else { console.error('connectToNetwork fail'); }
addDeviceConfig1+
addDeviceConfig(config: WifiDeviceConfig): number
添加wlan设备配置。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
config | WifiDeviceConfig | 是 | Wi-Fi配置信息。 |
返回值:
类型 | 说明 |
---|---|
number | WLAN配置存储的ID。 |
示例:
let networkId = 0; var dnsServers = new ArrayBuffer(2); var data = new Int8Array(dnsServers); for(var i = 0; i < 2; i ++) { data[i] = 0x11; } var res = wifi.addDeviceConfig({ config:{ ssid: '15wifi', bssid:'12:34:56:78:9a:bc', preSharedKey: 'Rewhl15101', securityType: 4, ipType:0, isHiddenSsid: false, netId: 0 staticIp:{ ipAddress: 1678420160, gateway: 17475776, netmask: 16777215, dnsServers: dnsServers, }, }, }); if (res >= 0) { console.log('AddDeviceConfig succ. result: ' + res); networkId = res; } else { console.error('AddDeviceConfig fail'); }
WifiDeviceConfig1+
Wi-Fi 设备配置信息。
参数名 | 类型 | 读写属性 | 说明 |
---|---|---|---|
ssid | string | 只读 | Wi-Fi SSID:最大长度为 32。 |
bssid | string | 只读 | Wi-Fi bssid(MAC):长度为6。 |
preSharedKey | string | 只读 | Wi-Fi 密钥:最大长度为 64。 |
isHiddenSsid | boolean | 只读 | 隐藏或不隐藏SSID,false(默认):不隐藏。 |
securityType | WifiSecurityType | 只读 | 安全类型:引用定义WifiSecurityType。 |
creatorUid | number | 只读 | Wi-Fi 配置创建者的 UID。 |
disableReason | number | 只读 | 禁用原因。 |
netId | number | 只读 | 分配的网络 ID。 |
randomMacType | number | 只读 | 随机 Mac 类型。 |
randomMacAddr | string | 只读 | 随机MAC地址,长度为6。 |
ipType | IpType | 只读 | IP类型。 |
staticIp | IpConfig | 只读 | 静态 IP 配置。 |
IpConfig1+
Wi-Fi IP配置信息。
参数名 | 类型 | 读写属性 | 说明 |
---|---|---|---|
ipAddress | number | 只读 | IP地址。 |
gateway | number | 只读 | 网关。 |
dnsServers | ArrayBuffer | 只读 | dns服务器。 |
netmask | boolean | 只读 | 子网掩码。 |
IpType1+
枚举,Wi-Fi IP类型。
名称 | 默认值 | 描述 |
---|---|---|
STATIC | 0x00 | 静态配置的 IP 设置。 |
DHCP | 0x01 | 动态配置的 IP 设置。 |
UNKNOWN | 0x02 | 未分配 IP 详细信息。 |
getDeviceConfigs1+
getDeviceConfigs(): Array<WifiDeviceConfig>
获取wlan设备配置。
返回值:
类型 | 说明 |
---|---|
Array<WifiDeviceConfig> | Wi-Fi配置结果数组。 |
示例:
var config = Wifi.getDeviceConfigs(); if (config.length > 0) { for (let i = 0; i < config.length; i++) { console.log('getDeviceConfigs succ. ssid: '+config[i].ssid + ', bssid: ' +config[i].bssid +', preSharedKey: ' + config[i].preSharedKey + ', isHiddenSsid: ' + config[i].isHiddenSsid + ', securityType: ' + config[i].securityType + ', creatorUid: ' + config[i].creatorUid + ', disableReason: ' + config[i].disableReason + ', netId: ' + config[i].netId + ', randomMacType: ' + config[i].randomMacType + ', randomMacAddr: ' + config[i].randomMacAddr + ', ipType: ' + config[i].ipType + ', staticIp.ipAddress: ' + config[i].staticIp.ipAddress +', staticIp.gateway: '+config[i].staticIp.gateway +', netmask: ' + config[i].staticIp.netmask); } } else { console.error('getDeviceConfigs fail.'); }
removeDevice1+
removeDevice(networkId: number): boolean
移除Wi-Fi设备配置。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
networkId | number | 是 | 设备配置Id号。 |
返回值:
类型 | 说明 |
---|---|
boolean | 操作结果,true为成功,false为失败。 |
示例:
var err = Wifi.removeDevice({ networkId: 0, }); if (err == true) { console.log('removeDevice succ.'); } else { console.error('removeDevice fail.'); }
connectToDevice1+
connectToDevice(config: WifiDeviceConfig): boolean
连接到指定配置的网络。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
config | WifiDeviceConfig | 是 | 设备配置。 |
返回值:
类型 | 说明 |
---|---|
boolean | 操作结果,true为成功,false为失败 |
示例:
var dnsServers = new ArrayBuffer(2); var data = new Int8Array(dnsServers); for(var i = 0; i < 2; i ++) { data[i] = 0x11; } var err = wifi.connectToDevice({ config: { ssid: '15wifi', bssid:'12:34:56:78:9a:bc', preSharedKey: 'Rewhl15101', isHiddenSsid: false, securityType: 4, netId:0, ipType:0, staticIp:{ ipAddress:1678420160, gateway:17475776, netmask:16777215, dnsServers:dnsServers, }, }, }); if (err == true) { console.log('connectToDevice succ.'); } else { console.error('connectToDevice fail.'); }
disconnect1+
disconnect(void): boolean
断开当前连接。
返回值:
类型 | 说明 |
---|---|
boolean | 操作结果,true为成功,false为失败 |
示例:
var err = wifi.disconnect(); if (err == true) { console.log('disconnect succ.'); } else { console.log('disconnect fail.'); }
getLinkedInfo1+
getLinkedInfo(callback: Callback<WifiLinkedInfo>): void
获取Wi-Fi连接信息。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
callback | Callback<WifiLinkedInfo> | 是 | 连接信息的回调。 |
示例:
wifi.getLinkedInfo({callback: (info) => { console.log(TAG + 'getLinkedInfo success. ssid: ' + info.ssid + ', bssid: ' + info.bssid + ', networkId: ' + info.networkId + ', rssi: ' + info.rssi + ', band: ' + info.band + ', linkSpeed: ' + info.linkSpeed + ', frequency: ' + info.frequency + ', isHidden: ' + info.isHidden + ', isRestricted: ' + info.isRestricted + ', chload: ' + info.chload + ', snr: ' + info.snr + ', macAddress: ' + info.macAddress + ', ipAddress: ' + info.ipAddress + ', suppState: ' + info.suppState + ', connState: ' + info.connState); } });
WifiLinkedInfo1+
WLAN连接信息。
参数名 | 类型 | 读写属性 | 说明 |
---|---|---|---|
ssid | string | 只读 | Wi-Fi 热点的 SSID。 |
bssid | string | 只读 | 热点的BSSID。 |
networkId | number | 只读 | Wi-Fi连接的ID。 |
rssi | number | 只读 | 热点的信号强度(dBm)。 |
band | number | 只读 | WLAN接入点的频段。 |
linkSpeed | number | 只读 | WLAN接入点的频段。 |
frequency | number | 只读 | WLAN接入点的频率。 |
isHidden | boolean | 只读 | Wi-Fi 连接的接入点 (AP) 的 SSID 是否隐藏。 |
isRestricted | boolean | 只读 | Wi-Fi 连接是否限制数据量。 |
chload | number | 只读 | Wi-Fi 连接的负载值。值越大表示负载越高。 |
snr | number | 只读 | Wi-Fi 连接的信噪比 (SNR)。 |
macAddress | string | 只读 | 设备的 Wi-Fi MAC 地址。 |
ipAddress | number | 只读 | Wi-Fi 连接的 IP 地址。 |
suppState | SuppState | 只读 | Wi-Fi 连接的请求方的状态。 |
connState | ConnState | 只读 | Wi-Fi 连接的状态。 |
SuppState1+
枚举,supplicant状态。
名称 | 默认值 | 描述 |
---|---|---|
DISCONNECTED | 0x00 | 请求方已从ap端断开连接。 |
INTERFACE_DISABLED | 0x01 | 网络接口已禁用。 |
INACTIVE | 0x02 | 请求方已禁用。 |
SCANNING | 0x03 | 请求方正在扫描 Wi-Fi 连接。 |
AUTHENTICATING | 0x04 | 请求方正在使用指定的 AP 进行身份验证。 |
ASSOCIATING | 0x05 | 请求方正在与指定的 AP 关联。 |
ASSOCIATED | 0x06 | 请求方与指定的 AP 关联 |
FOUR_WAY_HANDSHAKE | 0x07 | 四方握手正在进行中 |
GROUP_HANDSHAKE | 0x08 | 组握手正在进行中 |
COMPLETED | 0x09 | 所有身份验证已完成 |
UNINITIALIZED | 0x0a | 无法与请求方建立连接 |
INVALID | 0x0b | 请求方处于未知或无效状态 |
ConnState1+
枚举, 连接状态。
名称 | 默认值 | 描述 |
---|---|---|
SCANNING | 0x00 | 请求方已从ap端断开连接。 |
CONNECTING | 0x01 | 网络接口已禁用。 |
AUTHENTICATING | 0x02 | 请求方已禁用。 |
OBTAINING_IPADDR | 0x03 | 正在获取 Wi-Fi 连接的 IP 地址。 |
CONNECTED | 0x04 | 无线网络连接已设置。 |
DISCONNECTING | 0x05 | Wi-Fi 连接正在断开中。 |
DISCONNECTED | 0x06 | 断开。 |
UNKNOWN | 0x07 | 无法设置 Wi-Fi 连接。 |
getDeviceMacAddress1+
getDeviceMacAddress(): string
获取设备mac地址。
返回值:
类型 | 说明 |
---|---|
string | 设备mac地址。 |
示例:
var mac = wifi.getDeviceMacAddress(); if (mac == null) { console.error('getDeviceMacAddress fail.'); } else { console.log('getDeviceMacAddress succ. mac: ' + mac); }
getIpInfo1+
getIpInfo(): IpInfo
获取IP信息。
返回值:
类型 | 说明 |
---|---|
IpInfo | ip信息。 |
示例:
var info = wifi.getIpInfo(); if (info == null) { console.error('getIpInfo fail.'); } else { console.log('getIpInfo succ. ipAddress: ' + info.ipAddress + ', gateway: ' + info.gateway + ', netmask: ' + info.netmask + ', primaryDns: ' + info.primaryDns + ', secondDns: ' + info.secondDns + ', serverIp: ' + info.serverIp + ', leaseDuration: ' + info.leaseDuration); }
IpInfo1+
无线网络 IP 信息。
参数名 | 类型 | 读写属性 | 说明 |
---|---|---|---|
ipAddress | number | 只读 | Wi-Fi 连接的IP地址。 |
gateway | number | 只读 | Wi-Fi 连接的网关。 |
netmask | number | 只读 | Wi-Fi 连接的子网掩码。 |
primaryDns | number | 只读 | Wi-Fi 连接的主 DNS 服务器 IP 地址。 |
secondDns | number | 只读 | Wi-Fi 连接的辅助 DNS 服务器 IP 地址。 |
serverIp | number | 只读 | Wi-Fi 连接的 DHCP 服务器 IP 地址。 |
leaseDuration | number | 只读 | Wi-Fi 连接的 IP 地址租用持续时间。 |
getSignalLevel1+
getSignalLevel(rssi: number, band: number): number
查询WLAN信号强度。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
rssi | number | 是 | 热点的信号强度(dBm)。 |
band | number | 是 | WLAN接入点的频段。 |
返回值:
类型 | 说明 |
---|---|
number | 信号强度,取值范围为[0, 4]。 |
示例:
var signalLevel = wifi.getSignalLevel(rssi: 1, band: 2); console.log('getSignalLevel succ. signalLevel: ' + signalLevel);
on('wifiScanStateChanged')1+
on(type: "wifiScanStateChanged", callback: Callback<wifiScanStateChangedInfo>): void
注册Wi-Fi扫描状态改变事件回调。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 固定填"wifiScanStateChanged"字符串。 |
callback | Callback<wifiScanStateChangedInfo> | 是 | 状态改变回调函数。 |
示例:
wifi.on({type: 'wifiScanStateChanged'}, {(data) => { console.log('RegisterScanStateChangedCb state: ' + data.state + ', size: ' + data.size); } });
wifiScanStateChangedInfo1+
扫描状态改变信息。
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
state | boolean | 是 | 扫描状态,false为失败,true为成功。 |
size | number | 是 | 扫描到的数量。 |
off('wifiScanStateChanged')1+
off(type: "wifiScanStateChanged", callback?: Callback<wifiScanStateChangedInfo>): void
注销Wi-Fi扫描状态改变事件回调。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 固定填"wifiScanStateChanged"字符串。 |
callback | Callback<wifiScanStateChangedInfo> | 否 | 状态改变回调函数。 |
示例:
wifi.off({type: 'wifiScanStateChanged'});
on('wifiConnectionChanged')1+
on(type: "wifiConnectionChanged", callback: Callback<wifiConnectionChangedInfo>): void
注册Wi-Fi连接状态改变事件回调。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 固定填"wifiConnectionChanged"字符串。 |
callback | Callback<wifiConnectionChangedInfo> | 是 | 状态改变回调函数。 |
示例:
wifi.on({type:'wifiConnectionChanged'}, {callback: (data) => { console.log('registerConnectionChangedCb state: ' + data.state + ', ssid: ' + data.info.ssid + ', bssid: ' + data.info.bssid + ', networkId: ' + data.info.networkId +', rssi: ' + data.info.rssi + ', band: ' + data.info.band + ', linkSpeed: ' + data.info.linkSpeed + ', frequency: ' + data.info.frequency + ', isHidden: ' + data.info.isHidden + ', isRestricted: ' + data.info.isRestricted + ', chload: ' + data.info.chload + ', snr: ' + data.info.snr + ', macAddress: ' + data.info.macAddress + ', ipAddress: ' + data.info.ipAddress + ', suppState: ' + data.info.suppState +', connState: '+data.info.connState ); },} );
wifiScanStateChangedInfo1+
连接状态改变信息。
参数名 | 类型 | 读写属性 | 说明 |
---|---|---|---|
state | number | 只读 | 扫描状态,0为失败,1为成功。 |
info | WifiLinkedInfo | 只读 | 连接信息。 |
off('wifiConnectionChanged')1+
off(type: "wifiConnectionChanged", callback?: Callback<wifiConnectionChangedInfo>): void
注销Wi-Fi连接状态改变事件回调。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 固定填"wifiConnectionChanged"字符串。 |
callback | Callback<wifiConnectionChangedInfo> | 否 | 状态改变回调函数。 |
示例:
wifi.off({type: 'wifiConnectionChanged'});
on('hotspotStateChanged')1+
on(type: "hotspotStateChanged", callback: Callback<number>): void
注册热点状态改变事件回调。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 固定填"hotspotStateChanged"字符串。 |
callback | Callback<number> | 是 | 状态改变回调函数。 |
示例:
wifi.on({type: 'hotspotStateChanged'}, {callback: (data) => { console.log('RegisterHotspotStateChangedCb state: ' + data); },} );
off('hotspotStateChanged')1+
off(type: "hotspotStateChanged", callback?: Callback<number>): void
注销热点状态改变事件回调。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 固定填"hotspotStateChanged"字符串。 |
callback | Callback<number> | 否 | 状态改变回调函数。 |
示例:
wifi.off({type: 'hotspotStateChanged'});
on('hotspotStaJoin')1+
on(type: "hotspotStaJoin", callback: Callback<StationInfo>): void
注册Wi-Fi sta连接改变事件回调。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 固定填"hotspotStaJoin"字符串。 |
callback | Callback<StationInfo> | 是 | 状态改变回调函数。 |
示例:
wifi.on({type: 'hotspotStaJoin'}, {callback: (data) => { console.log('registerHotspotStaJoinCb name: ' + data.name + ', macAddress: ' + data.macAddress + ', ipAddress: ' + data.ipAddress); },} );
StationInfo1+
Wi-Fi sta 信息。
参数名 | 类型 | 读写属性 | 说明 |
---|---|---|---|
name | string | 只读 | Wi-Fi 客户端的网络名称。 |
macAddress | string | 只读 | Wi-Fi 客户端的 MAC 地址。 |
ipAddress | string | 只读 | 无线网络客户端的 IP 地址。 |
off('hotspotStaJoin')1+
off(type: "hotspotStaJoin", callback?: Callback<StationInfo>): void
注销Wi-Fi sta连接改变事件回调。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 固定填"hotspotStaJoin"字符串。 |
callback | Callback<StationInfo> | 否 | 状态改变回调函数。 |
示例:
wifi.off({type: 'hotspotStaJoin'});
on('hotspotStaLeave')1+
on(type: "hotspotStaLeave", callback: Callback<StationInfo>): void
注册Wi-Fi sta断开改变事件回调。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 固定填"hotspotStaLeave"字符串。 |
callback | Callback<StationInfo> | 是 | 状态改变回调函数。 |
示例:
wifi.on({type: 'hotspotStaLeave'}, {callback: (data) => { console.log('registerHotspotStaLeaveCb name: ' + data.name + ', macAddress: ' + data.macAddress + ', ipAddress: ' + data.ipAddress); },} );
off('hotspotStaLeave')1+
off(type: "hotspotStaLeave", callback?: Callback<StationInfo>): void
注销Wi-Fi sta断开改变事件回调。
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 固定填"hotspotStaLeave"字符串。 |
callback | Callback<StationInfo> | 否 | 状态改变回调函数。 |
示例:
wifi.off({type: 'hotspotStaLeave'});
更多推荐
所有评论(0)