Android10 NetworkSpecifier 连接WiFi时遇到的诡异问题
程序员文章站
2022-12-04 20:27:07
Android10 NetworkSpecifier 连接WiFi时遇到的诡异问题为了兼容Android 10 Ap配网,使用了最新NetworkSpecifier 连接设备热点AP wifi,在上线灰度后,收到很多客户投诉,很多客户反馈华为手机底部不停重复弹出连接wifi 弹窗,测试后发现问题严重。前期以为华为兼容性问题,在华为官网和论坛请求都没有满意答复。经过了几天的郁闷,突然发现为系统缓存的原因。系统在wifi连接到设备的AP 热点后,大概过了30s,系统启动外网的检测机制,当发现该设备热点wi...
Android10 NetworkSpecifier 连接WiFi时遇到的诡异问题
为了兼容Android 10 Ap配网,使用了最新NetworkSpecifier 连接设备热点AP wifi,在上线灰度后,收到很多客户投诉,很多客户反馈华为手机底部不停重复弹出连接wifi 弹窗,测试后发现问题严重。
前期以为华为兼容性问题,在华为官网和论坛请求都没有满意答复。经过了几天的郁闷,突然发现为系统缓存的原因。
系统在wifi连接到设备的AP 热点后,大概过了30s,系统启动外网的检测机制,当发现该设备热点wifi无外网时,给该设备热点打上一个无外网的标签并且缓存到系统里面。当App调用API主动连接wifi名相同的热点时,系统读取到缓存认为这个wifi无网络,直接强行关闭弹窗,重新弹窗。
解决方案:手动去wifi管理页面,把缓存的相同wifi名删除掉即可
先前考虑过App内主动删除缓存的wifi,鉴于Android 高版本系统权限限制,App内无法删除用户在设置页手动连接的wifi,所以App内主动删除缓存wifi方案废弃了
如果大家有好的方案,欢迎交流
public void wifiConnect()
{
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q)
{
NetworkSpecifier specifier =
new WifiNetworkSpecifier.Builder()
.setSsidPattern(new PatternMatcher("WiFi名称", PatternMatcher.PATTERN_PREFIX))
.setWpa2Passphrase("WiFi密码")
.build();
NetworkRequest request =
new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.setNetworkSpecifier(specifier)
.build();
ConnectivityManager connectivityManager = (ConnectivityManager)
context.getSystemService(Context.CONNECTIVITY_SERVICE);
ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
// do success processing here..
}
@Override
public void onUnavailable() {
// do failure processing here..
}
};
connectivityManager.requestNetwork(request, networkCallback);
// Release the request when done.
// connectivityManager.unregisterNetworkCallback(networkCallback);
}
}
本文地址:https://blog.csdn.net/bawomingtian123/article/details/108984442
推荐阅读
-
Android10自动连接WiFi问题的解决
-
Android10 NetworkSpecifier 连接WiFi时遇到的诡异问题
-
在连接mysql时遇到的问题及解决(SSM)
-
wifi连接问题:密码正确但连接时supplicant state返回的是ERROR_AUTHENTICATING
-
Android10自动连接WiFi问题的解决
-
JDBC连接SQL Server 2008 R2时遇到的常见问题集解
-
关于在使用SSH协议进行远程连接时遇到的一些问题
-
Android10 NetworkSpecifier 连接WiFi时遇到的诡异问题
-
wifi连接问题:密码正确但连接时supplicant state返回的是ERROR_AUTHENTICATING
-
在连接mysql时遇到的问题及解决(SSM)