HarmonyOS鸿蒙Next中系统调用连接指定wifi的代码,系统会马上切换wifi,弹窗又会底部重新弹出,求助!!
HarmonyOS鸿蒙Next中系统调用连接指定wifi的代码,系统会马上切换wifi,弹窗又会底部重新弹出,求助!! 需求背景是要连接 Iot设备发出的AP热点。
同样的代码在oppo,vivo,小米手机上面运行正常,在华为(Android和鸿蒙系统)手机上面测试发现,弹窗后点击连接指定wifi,系统会马上切换wifi,弹窗又会底部重新弹出。
请问华为手机在连接指定wifi的时候需要怎么做,现在感觉像是华为手机的适配问题,Android和鸿蒙系统都存在此问题。
以下为实现代码
private fun android10andMoreVersionsWithoutOuterInternet(wifiSSID: String, wifiPassword: String?) {
// Android 10 (API level 29) -- Android Q (Android 10)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
val wifiNetworkSpecifier = WifiNetworkSpecifier.Builder()
.setSsid(wifiSSID)
.setWpa2Passphrase(wifiPassword?:"")
.build()
val networkRequest = NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.setNetworkSpecifier(wifiNetworkSpecifier)
.build()
connectivityManager =
BaseApplication.getInstance()?.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
networkCallback = object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
Log.d("xxxxxx", "Network available onAvailable")
super.onAvailable(network)
connectivityManager?.bindProcessToNetwork(network)
gotoNextScreen()
}
override fun onUnavailable() {
Log.d("xxxxxx", "Network unavailable onUnavailable")
super.onUnavailable()
callback?.onFail()
}
override fun onLosing(network: Network, maxMsToLive: Int) {
Log.d("xxxxxx", "onLosing")
super.onLosing(network, maxMsToLive)
}
override fun onLost(network: Network) {
Log.d("xxxxxx", "onLost")
super.onLost(network)
}
}
connectivityManager?.requestNetwork(networkRequest, networkCallback!!)
}
}
以下为手机型号
希望华为的大大们 帮忙看看,小弟比较急
更多关于HarmonyOS鸿蒙Next中系统调用连接指定wifi的代码,系统会马上切换wifi,弹窗又会底部重新弹出,求助!!的实战教程也可以访问 https://www.itying.com/category-93-b0.html
遇到相同问题,你解决了吗
更多关于HarmonyOS鸿蒙Next中系统调用连接指定wifi的代码,系统会马上切换wifi,弹窗又会底部重新弹出,求助!!的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
您好,您的问题需要进一步分析,请您通过在线提单进一步解决:https://developer.huawei.com/consumer/cn/support/feedback/#/,感谢您的反馈和支持。
在HarmonyOS鸿蒙Next中,系统调用连接指定WiFi的代码时,可能会遇到系统立即切换WiFi并导致弹窗重新弹出的问题。这通常是由于系统在切换WiFi时触发了网络状态变更事件,导致UI重新渲染或弹窗重新弹出。
要解决这个问题,可以通过以下方式:
-
异步处理连接:在调用连接WiFi的代码时,确保使用异步方式处理网络连接操作,避免阻塞主线程导致UI刷新。
-
监听网络状态:在连接WiFi之前,注册网络状态变化的监听器,确保在连接成功后进行相应的UI更新或弹窗控制。
-
延迟弹窗:在连接WiFi后,设置一定的延迟时间再进行弹窗显示,避免因网络切换过快导致弹窗重复弹出。
示例代码片段:
import wifi from '@ohos.wifi';
async function connectToWifi(ssid: string, password: string) {
try {
const config = {
ssid: ssid,
preSharedKey: password,
isHiddenSsid: false
};
await wifi.connectToNetwork(config);
// 延迟弹窗
setTimeout(() => {
showPopup();
}, 1000);
} catch (error) {
console.error('Failed to connect to WiFi:', error);
}
}
function showPopup() {
// 弹窗逻辑
}
通过上述方式,可以有效避免系统在切换WiFi时弹窗重复弹出的问题。
在HarmonyOS鸿蒙Next中,系统调用连接指定WiFi的代码后,系统会立即尝试切换WiFi。如果弹窗在底部重新弹出,可能是由于网络切换过程中触发了某些事件或回调。建议检查网络状态监听器或相关回调函数,确保在WiFi切换完成后正确处理UI更新。同时,确保没有重复调用连接WiFi的代码,避免多次触发弹窗。