import Context from "android.content.Context";
import { UTSAndroid } from "io.dcloud.uts";
import WifiManager from "android.net.wifi.WifiManager";
import WifiInfo from "android.net.wifi.WifiInfo";
import Manifest from "android.Manifest";
import PackageManager from "android.content.pm.PackageManager";
import ScanResult from "android.net.wifi.ScanResult";
import BroadcastReceiver from "android.content.BroadcastReceiver";
import ActivityCompat from "androidx.core.app.ActivityCompat";
import IntentFilter from "android.content.IntentFilter";
import JSONObject from "com.alibaba.fastjson.JSONObject";
import Intent from "android.content.Intent";
import Thread from "java.lang.Thread";

import WifiConfiguration from 'android.net.wifi.WifiConfiguration';
import AuthAlgorithm from 'android.net.wifi.WifiConfiguration.AuthAlgorithm';
import KeyMgmt from 'android.net.wifi.WifiConfiguration.KeyMgmt';
import TextUtils from 'android.text.TextUtils';
import Build from 'android.os.Build';

import { UniWifiResult, GetConnectedWifiOptions, WifiConnectOption, WifiOption, UniWifiInfo } from "../interface.uts"



/**
	* 全局数据储存
	*/
class Global {
	static mReceiver : CustomBroadcastReceiver | null = null;
	static WIFI_AUTH_OPEN : string = "";
	static WIFI_AUTH_ROAM : String = "[ESS]";
	// 扫描wifi结果
	static scanList : AndroidUniWifiInfo[] = []
	// 获取wifi列表监听
	static onGetWifiListCallback : UTSCallback | null = null
	static supendGetWifiSuccess : ((res: UniWifiResult) => void) | null = null
	static supendGetWifiComplete : ((res: UniWifiResult) => void) | null = null
	// wifi链接监听
	static onWifiConnectCallbackList : UTSCallback[] = []
	static onWifiConnectWithPartialInfoCallbackList : UTSCallback[] = []
}


/**
	* 是否是标准的16进制字符
	*/
function isHex(key : string) : boolean {
	for (var i = key.length - 1; i >= 0; i--) {
		let c = key.charAt(i);
		if (!(c >= '0' && c <= '9' || c >= 'A' && c <= 'F' || c >= 'a'
			&& c <= 'f')) {
			return false;
		}
	}

	return true;
}

/**
	* 判断是否是wep格式的key
	*/
function isHexWepKey(wepKey : string) : boolean {
	let len = wepKey.length;

	// WEP-40, WEP-104, and some vendors using 256-bit WEP (WEP-232?)
	if (len != 10 && len != 26 && len != 58) {
		return false;
	}

	return isHex(wepKey);
}
/**
 * android 平台特有的Wifi信息对象，主要是加了加密信息这个字段
 */
export type AndroidUniWifiInfo = {
	SSID : string;
	BSSID ?: string;
	secure : boolean;
	signalStrength : number;
	frequency : number;
	securityType : string;
}

function wrapUniWifiInfoFromAndroid(androidInfo : AndroidUniWifiInfo) : UniWifiInfo {
	let ret : UniWifiInfo = {
		SSID: androidInfo.SSID,
		BSSID: androidInfo.BSSID,
		secure: androidInfo.secure,
		signalStrength: androidInfo.signalStrength,
		frequency: androidInfo.frequency,
	}
	return ret
}
/**
 * 从扫描结果中提取统一的wifi数据结构
 */
function wrapUniWifiInfoFromScan(scanResult : ScanResult) : AndroidUniWifiInfo {

	let ret : AndroidUniWifiInfo = {
		SSID: "",
		secure: false,
		signalStrength: 0,
		frequency: 0,
		securityType: "NONE"
	}
	if (scanResult != null) {
		// 如果是通过扫描列表得到的数据，进行封装
		ret.BSSID = scanResult.BSSID;
		ret.SSID = scanResult.SSID;

		ret.signalStrength = scanResult.level;
		ret.frequency = scanResult.frequency;

		// 是否安全，微信的标准是是否需要密码。 来源:https://developers.weixin.qq.com/community/develop/doc/00064cf1790458db19cddf9925ac00?highLine=WifiInfo
		ret.secure = false;
		let capabilities = scanResult.capabilities.trim();
		if ((capabilities.equals(Global.WIFI_AUTH_OPEN) || capabilities.equals(Global.WIFI_AUTH_ROAM))) {
			ret.secure = false;
		} else {
			ret.secure = true;
		}

		/*扩展字段*/
		ret.securityType = getSecurityType(scanResult);
	}

	return ret
}
/**
 * 从链接信息中提取统一的wifi数据结构
 */
function wrapUniWifiInfoFromConnectInfo(connectInfo : WifiInfo) : UniWifiInfo {
	let ret : UniWifiInfo = {
		SSID: "",
		secure: false,
		signalStrength: 0,
		frequency: 0,
	}


	if (connectInfo.getSSID() != null) {
		let s = connectInfo.getSSID();
		// 微信不带，这里需要去掉引号
		if (s.length > 2 && s.charAt(0) == '"' && s.charAt(s.length - 1) == '"') {
			s = s.substring(1, s.length - 1);
		}
		ret.SSID = s;
	}

	ret.BSSID = connectInfo.getBSSID();
	//Android返回的值是-100~0，而微信API规范是0~100，值越大信号越好，需要+100拉齐
	ret.signalStrength = connectInfo.getRssi() + 100;
	ret.frequency = connectInfo.getFrequency();


	return ret
}


/**
 * 连接wifi时使用，根据用户输入内容包装为系统需要的wifi配置对象
 **/
@Suppress("DEPRECATION")
function wrapWifiConfiguration(SSID : string, password ?: string, passwordType : string) : WifiConfiguration {

	let config = new WifiConfiguration();
	config.status = WifiConfiguration.Status.ENABLED;
	config.allowedAuthAlgorithms.clear();
	config.allowedGroupCiphers.clear();
	config.allowedKeyManagement.clear();
	config.allowedPairwiseCiphers.clear();
	config.allowedProtocols.clear();
	config.SSID = "\"".concat(SSID).concat("\"");


	// nopass
	if ("NONE".equals(passwordType) || password == null) {
		config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
	}
	// wep
	else if ("WEP".equals(passwordType)) {
		if (password != null && !TextUtils.isEmpty(password)) {
			if (isHexWepKey(password)) {
				config.wepKeys[0] = password;
			} else {
				config.wepKeys[0] = "\"".concat(password).concat("\"");
			}
		}
		config.allowedAuthAlgorithms.set(AuthAlgorithm.OPEN);
		config.allowedAuthAlgorithms.set(AuthAlgorithm.SHARED);
		config.allowedKeyManagement.set(KeyMgmt.NONE);
		config.wepTxKeyIndex = 0;
	}
	// wpa
	else if ("WPA".equals(passwordType)) {
		config.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
		config.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
		config.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
		config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
		config.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
		config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP40);
		config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.WEP104);
		config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
		config.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
		config.preSharedKey = "\"".concat(password).concat("\"");
	}

	return config;
}


/**
 * 判断当前wifi的加密类型
 */
function getSecurityType(result : ScanResult) : string {
	if (result.capabilities.contains("WEP")) {
		return "WEP";
	} else if (result.capabilities.contains("PSK")) {
		return "WPA";
	} else if (result.capabilities.contains("EAP")) {
		return "EAP";
	}
	return "NONE";
}


function zeroCountNum(source ?: string) : number {
	if (source == null) {
		return 0
	}
	var splitted = source.split(":")
	var countNum = 0;
	for (perItem in splitted) {
		if (perItem == "00") {
			countNum += 1
		}
	}
	return countNum
}


/**
	* 自定义wifi变化广播监听器
	*/
@Suppress("UNUSED_PARAMETER", "DEPRECATION")
class CustomBroadcastReceiver extends BroadcastReceiver {

	mWifiManager : WifiManager | null = null;

	constructor(wifiManager : WifiManager) {
		super();
		this.mWifiManager = wifiManager;
	}

	override onReceive(_context : Context, intent : Intent) : void {


		if (intent.action == WifiManager.WIFI_STATE_CHANGED_ACTION) {
			let state =
				intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN)
			if (state == WifiManager.WIFI_STATE_ENABLED) {
				// 获取当前的connectInfo 并且进行数据封装
				// let uniWifiInfo = new UniWifiInfo(null)
				let uniWifiInfo : UniWifiInfo = {
					SSID: "",
					secure: false,
					signalStrength: 0,
					frequency: 0,
				}
				//做一些异步操作
				setTimeout(function () {
					// BroadcastReceiver 中不能执行耗时任务，需要使用setTimeout
					// @ts-ignore
					let winfo = this.mWifiManager!.getConnectionInfo();

					while (winfo.bssid == null || zeroCountNum(winfo.bssid) > 4) {
						Thread.sleep(1000)
						winfo = this.mWifiManager!.getConnectionInfo();
					}

					// 封装成数据对象
					uniWifiInfo = wrapUniWifiInfoFromConnectInfo(winfo)
					let res = {
						errMsg: 'onWifiConnected:ok',
						errCode: 0,
						wifi: uniWifiInfo
					}
					// wifi状态可用了，分发当前的链接状态给已注册的监听集合
					for (let perCallback in Global.onWifiConnectCallbackList) {
						perCallback(res);
					}
					// 封装仅SSID 数据对象
					var connectedWithPartialInfo = {
						SSID: uniWifiInfo.SSID
					}
					for (let perCallback in Global.onWifiConnectWithPartialInfoCallbackList) {
						perCallback(connectedWithPartialInfo);
					}

				}, 100);
			}

		}


		if (intent.action == WifiManager.SCAN_RESULTS_AVAILABLE_ACTION) {
			startWifiScaning = false;
			
			
			
			
			// wifi 扫描结果回调
			let results = this.mWifiManager!.scanResults;

			
			if (results != null) {
				Global.scanList = []
				for (let scanResult in results) {
					if (scanResult.SSID == null) {
						continue;
					}
					Global.scanList.push(wrapUniWifiInfoFromScan(scanResult));
				}

				// 挨个通知，所有的监听器
				if(Global.onGetWifiListCallback != null){
					const data = new JSONObject();
					data["wifiList"] = Global.scanList
					Global.onGetWifiListCallback?.(data);
					/**
					 * 确保onGetWifiList 只会被执行一次
					 */
					Global.onGetWifiListCallback = null
				}

			}

			let ret : UniWifiResult = {
				errCode: 0,
				errSubject: "uni-getWifiList",
				errMsg: "getWifiList:ok"
			}
			if(Global.supendGetWifiSuccess != null){
				Global.supendGetWifiSuccess?.(ret)
				Global.supendGetWifiSuccess = null
			}
			if(Global.supendGetWifiComplete != null){
				Global.supendGetWifiComplete?.(ret)
				Global.supendGetWifiComplete = null
			}
		}
	}

}



/************************* 下面是对外提供的函数 *************************/
/**
 * start wifi是否正在扫描
 */
var startWifiScaning = false

/**
 * 开启wifi
 */
@Suppress("DEPRECATION")
export function startWifi(option : WifiOption) {

	// 需要先开启wifi,才能使用后续的功能
	let requestCode = 1001;
	let permissionWifi = arrayOf("android.permission.ACCESS_FINE_LOCATION");
	
	let result : UniWifiResult = {
		errCode: 12001,
		errMsg: "startWifi:premission loss",
		errSubject: "uni-startWifi"
	}

	// 检查权限
	if (ActivityCompat.checkSelfPermission(UTSAndroid.getUniActivity()!, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

		ActivityCompat.requestPermissions(UTSAndroid.getUniActivity()!, permissionWifi, requestCode.toInt())
		// 尚不具备权限，返回错误
		let err = new UniError("uni-startWifi",12001,"startWifi:premission loss");
		option.fail?.(err)
		option.complete?.(err)

		return;
	}
	
	// 具备了权限，继续前进
	let wifiManager : WifiManager =
		UTSAndroid.getAppContext()!.getSystemService(Context.WIFI_SERVICE) as WifiManager
	// 用户没有开启wifi 总开关
	if (!wifiManager.isWifiEnabled()) {
		// wifi 没开启
		let err = new UniError("uni-startWifi",12005,"wifi not turned on");
		option.fail?.(err);
		option.complete?.(err);
		return;
	}
	// 初始化wifi 状态广播监听，后续所有的api，均基于此
	if(Global.mReceiver != null){
		// 说明已经注册过了
		result.errCode = 0
		result.errMsg = "startWifi:ok"
		
		option.success?.(result)
		option.complete?.(result)
		return 
	}
	
	
	Global.mReceiver = new CustomBroadcastReceiver(wifiManager)

	let filter = new IntentFilter()
	filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)
	// @ts-ignore
	filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION)
	// @ts-ignore
	filter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);

	UTSAndroid.getUniActivity()!.registerReceiver(Global.mReceiver, filter)

	/**
		* activity 被销毁时，取消注册
		*/
	UTSAndroid.onAppActivityDestroy(function () {

		if (Global.mReceiver != null) {
			UTSAndroid.getUniActivity()!.unregisterReceiver(Global.mReceiver)
			Global.mReceiver = null

			Global.scanList = []
			Global.onGetWifiListCallback = null
			Global.onWifiConnectCallbackList = []
			Global.onWifiConnectWithPartialInfoCallbackList = []
		}

	});
	startWifiScaning = true
	// 开始扫描
	wifiManager.startScan()

	result.errCode = 0
	result.errMsg = "startWifi:ok"

	option.success?.(result)
	option.complete?.(result)

}

/**
	* 获取wifi列表
	*/
@Suppress("DEPRECATION")
export function getWifiList(option : WifiOption) {


	if (Global.mReceiver == null) {
		// 还没调用startWifi 提示报错
		let err = new UniError("uni-getWifiList",12000,"getWifiList:fail:not invoke startWifi");
		
		option.fail?.(err)
		option.complete?.(err)

		return
	}

	let wifiManager : WifiManager =
		UTSAndroid.getAppContext()!.getSystemService(Context.WIFI_SERVICE) as WifiManager



	Global.supendGetWifiSuccess = option.success
	Global.supendGetWifiComplete = option.complete
	
	wifiManager.startScan()
	

}



/**
	* wifi 链接成功的回调注册
	*/
export function onWifiConnected(callback : UTSCallback) {
	Global.onWifiConnectCallbackList.push(callback)
}


export function onWifiConnectedWithPartialInfo(callback : UTSCallback) {
	Global.onWifiConnectWithPartialInfoCallbackList.push(callback)
}


/**
 * wifi 链接成功的回调取消注册
 */
export function offWifiConnected(callback? : UTSCallback) {
	
	if(callback == null){
		Global.onWifiConnectCallbackList = []
		return
	}
	
	let callbackIndex = Global.onWifiConnectCallbackList.indexOf(callback)
	if (callbackIndex >= 0) {
		Global.onWifiConnectCallbackList.splice(callbackIndex, 1);
	}
}

/**
 * 不具备详细信息的wifi 反注册
 */
export function offWifiConnectedWithPartialInfo(callback? : UTSCallback) {
	
	if(callback == null){
		Global.onWifiConnectWithPartialInfoCallbackList = []
		return
	}
	
	let callbackIndex = Global.onWifiConnectWithPartialInfoCallbackList.indexOf(callback)
	if (callbackIndex >= 0) {
		Global.onWifiConnectWithPartialInfoCallbackList.splice(callbackIndex, 1);
	}
}

/**
	* 注册Wifi列表的监听事件
	*/
export function onGetWifiList(callback : UTSCallback) {
	Global.onGetWifiListCallback = callback
}

/**
 * 取消注册Wifi列表的监听事件
 */
export function offGetWifiList(callback? : UTSCallback) {
	Global.onGetWifiListCallback = null
	Global.supendGetWifiComplete = null
	Global.supendGetWifiSuccess = null
}


/**
 * 真正执行wifi链接逻辑
 */
function realWifiConnect(option : WifiConnectOption){
	
	if (Global.mReceiver == null || Global.scanList.length < 1) {
		
		let err = new UniError("uni-connectWifi",12000,"connectWifi:fail:not invoke startWifi");
		option.fail?.(err)
		option.complete?.(err)
		
		return
	}
	
	// 执行后续的逻辑
	let scanWifiInfo : AndroidUniWifiInfo | null = null
	for (let scanResult in Global.scanList) {
		if (scanResult.SSID.equals(option.SSID)) {
			scanWifiInfo = scanResult
		}
	}
	
	if (scanWifiInfo == null) {
		// 不在扫描列表中返回错误
		let err = new UniError("uni-connectWifi",12000,"connectWifi:fail:not invoke startWifi");
		option.fail?.(err)
		option.complete?.(err)
		return
	}
	
	let wifiConfigration = wrapWifiConfiguration(scanWifiInfo.SSID, option.password, scanWifiInfo.securityType);
	wifiConfigration.BSSID = scanWifiInfo.BSSID
	let wifiManager : WifiManager =
		UTSAndroid.getAppContext()!.getSystemService(Context.WIFI_SERVICE) as WifiManager
	
	// 如果已经存在了指定wifi 配置，移除之
	let targetExistConfig : WifiConfiguration | null = null
	let existingConfigs = wifiManager.getConfiguredNetworks();
	for (let existingConfig in existingConfigs) {
		if (existingConfig.SSID.equals("\"" + option.SSID + "\"")) {
			targetExistConfig = existingConfig
		}
	}
	// 如果wifi已经保存了当前ssid的配置，可能是别的应用添加的。android系统要求，需要删除掉重新添加
	if (targetExistConfig != null) {
		let removeRet = wifiManager.removeNetwork(targetExistConfig.networkId);
		
		if (!removeRet) {
			
			// add since 2023-03-28，如果当前系统大于等于android10， 则明确当前系统不支持
			if(Build.VERSION.SDK_INT > 28){
				// 系统大于android 9
				let err = new UniError("uni-connectWifi",12001,"connectWifi:system not support");
				option.fail?.(err)
				option.complete?.(err)
			}else{
				// 移除之前的配置失败了，返回错误，需要用户手动取消保存一下
				let err = new UniError("uni-connectWifi",12013,"connectWifi:wifi config may be expired");
				option.fail?.(err)
				option.complete?.(err)
			}
			
	
			return
		}
	
	}
	
	let currentConnect = wifiManager.getConnectionInfo()
	if (currentConnect.networkId >= 0) {
		wifiManager.disableNetwork(currentConnect.networkId)
	} else {
		wifiManager.removeNetwork(currentConnect.networkId)
	}
	wifiManager.disconnect()
	
	let connected = false;
	try {
	
		let netID = wifiManager.addNetwork(wifiConfigration);
		// 如果-1 说明没添加上，报错即可
		if (netID < 0) {
			
			let err = new UniError("uni-connectWifi",12002,"connectWifi:password error Wi-Fi");
	
			option.fail?.(err)
			option.complete?.(err)
	
			return
		}
	
	
		let enabled = wifiManager.enableNetwork(netID, true);
		if (!enabled) {
	
			let err = new UniError("uni-connectWifi",12007,"connectWifi:user denied");
				
			option.fail?.(err)
			option.complete?.(err)
	
			return
		}
		connected = wifiManager.reconnect();
	
	} catch (e) {
		connected = false;
		console.log(e);
	}
	
	if (!connected) {
		// 出错了，返回错误
		// 兜底的报错
		let err = new UniError("uni-connectWifi",12010,"connectWifi:fail:unknown error");
		option.fail?.(err)
		option.complete?.(err)
		return
	}
	
	let result : UniWifiResult = {
		errCode: 0,
		errMsg: "connectWifi:ok",
		errSubject: "uni-connectWifi",
	}
	
	wifiManager.saveConfiguration()
	//scanWifiInfo 根据 partialInfo 填充给返回字段
	if (option.partialInfo != null && option.partialInfo == true) {
		let wifiPartialInfo : UniWifiInfo = {
			SSID: scanWifiInfo.SSID
		}
		result.wifi = wifiPartialInfo
	} else {
		result.wifi = wrapUniWifiInfoFromAndroid(scanWifiInfo)
	}
	
	
	option.success?.(result)
	option.complete?.(result)
}

/**
 * 链接指定wifi
 */
@Suppress("UNUSED_PARAMETER", "DEPRECATION")
export function connectWifi(option : WifiConnectOption) {

	if (option.maunal == true) {
		// 指定了手动模式
		let manunalIntent = new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS);
		UTSAndroid.getUniActivity()!.startActivity(manunalIntent);

		let result : UniWifiResult = {
			errCode: 0,
			errMsg: "connectWifi:ok",
			errSubject: "uni-connectWifi",
		}

		option.success?.(result)
		option.complete?.(result)
		return
	}

	
	
	// add since 2022-03-28 ，增加逻辑，如果正在扫描中，则可以等待5s
	if(startWifiScaning){
		let taskCount = 0
		let taskId:number  = 0
		taskId = setInterval(function(){
		
			taskCount += 1;
			if(taskCount >= 5 || startWifiScaning == false){
				// 超过10s了。或者扫描过程结束了
				clearInterval(taskId)
				realWifiConnect(option)
			}
		},2000)
		
		UTSAndroid.onAppActivityDestroy(function () {
			clearInterval(taskId)
		});
	}else{
		realWifiConnect(option)
	}

	

}


/**
	* 关闭wifi
	*/
export function stopWifi(option : WifiOption) {
	// 需要先开启wifi,才能使用后续的功能
	if (Global.mReceiver == null) {
		let err = new UniError("uni-stopWifi",12000,"stopWifi:not init");
		option.fail?.(err)
		option.complete?.(err)

		return
	}
	try {
		UTSAndroid.getUniActivity()!.unregisterReceiver(Global.mReceiver)
	} catch (e) {
		// 多次调用
		//TODO handle the exception
	}
	
	Global.onGetWifiListCallback = null
	Global.onWifiConnectWithPartialInfoCallbackList = []
	Global.onWifiConnectCallbackList = []
	Global.mReceiver = null
	
	let result : UniWifiResult = {
		errCode: 0,
		errSubject: "uni-stopWifi",
		errMsg: "stopWifi:ok"
	}

	option.success?.(result)
	option.complete?.(result)

}

/**
 * 获取当前连接中的wifi信息
 */
@Suppress("DEPRECATION")
export function getConnectedWifi(option : GetConnectedWifiOptions) {

	let wifiInfo : UniWifiInfo = {
		SSID: ""
	}

	
	if (Global.mReceiver == null) {
		// 还没调用startWifi 提示报错
		let err = new UniError("uni-getConnectedWifi",12000,"getConnectedWifi:fail:not invoke startWifi");
		option.fail?.(err)
		option.complete?.(err)

		return
	}

	// 需要先校验权限，没有位置权限无法获取wifi
	if (ActivityCompat.checkSelfPermission(UTSAndroid.getUniActivity()!, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
		// 尚不具备权限，返回错误
		let err = new UniError("uni-getConnectedWifi",12001,"getConnectedWifi:permission loss");
		option.fail?.(err)
		option.complete?.(err)
		return;
	}

	
	
	const context = UTSAndroid.getAppContext();
	if (context != null) {
		const wm = context.getSystemService(
			Context.WIFI_SERVICE
		) as WifiManager;
		// 测试android 12上可以使用
		//@ts-ignore
		const winfo = wm.getConnectionInfo();

		wifiInfo = wrapUniWifiInfoFromConnectInfo(winfo);
		
		let res : UniWifiResult = {
			errCode: 0,
			errMsg: "getConnectedWifi:ok",
			errSubject: "uni-getConnectedWifi",
		}

		// 判断一下是否wifi 关闭了
		if (option.partialInfo!= null) {
			let ret : UniWifiInfo = {
				SSID: wifiInfo.SSID
			}
			res.wifi = ret;
		} else {
			if (wifiInfo.BSSID == null || zeroCountNum(wifiInfo.BSSID) > 3) {
				let err = new UniError("uni-getConnectedWifi",12005,"getConnectedWifi:fail:wifi is disable");
				option.fail?.(err)
				option.complete?.(err)
				return
			}
			res.wifi = wifiInfo;
		}


		option.success?.(res)
		option.complete?.(res)
		return
	}
	
	let err = new UniError("uni-getConnectedWifi",12000,"getConnectedWifi:fail:not invoke startWifi");
	option.fail?.(err)
	option.complete?.(err)
}

