Joh*_*es 10 android android-10.0
@RequiresApi(api = Build.VERSION_CODES.Q)
public void openSystemDialogToConnectToWifi(String ssid, ConnectivityManager.NetworkCallback callback) {
WifiNetworkSpecifier.Builder builder = new WifiNetworkSpecifier.Builder();
builder.setSsid(ssid);
builder.setWpa2Passphrase("secret");
WifiNetworkSpecifier wifiNetworkSpecifier = builder.build();
NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder();
networkRequestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
networkRequestBuilder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED);
networkRequestBuilder.addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED);
networkRequestBuilder.setNetworkSpecifier(wifiNetworkSpecifier);
NetworkRequest networkRequest = networkRequestBuilder.build();
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
cm.requestNetwork(networkRequest, callback);
}
Run Code Online (Sandbox Code Playgroud)
这是我用来从我的应用程序连接到新 Wifi 的代码。我得到了一个 IP 地址,wifi 符号在状态栏中非常短暂地可见。下一刻,Wifi-Symbol 消失,系统对话框再次可见,连接到 wifi。
当我调试回调时,它会按照以下顺序执行方法:
所有方法什么都不做(只需调用 super.method())
硬件:一加 6 与 Android Q
我之前遇到过同样的问题,后来修改了“ NetworkRequest ”如下
WifiNetworkSpecifier specifier = new WifiNetworkSpecifier.Builder()
.setSsid(ssid)
.setWpa2Passphrase(password)
.build();
NetworkRequest networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.addCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED)
.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_FOREGROUND)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING)
.setNetworkSpecifier(specifier)
.build();
Run Code Online (Sandbox Code Playgroud)
我刚刚删除了“ onCapabilityChanged() ”回调中给出的一些不需要的/默认的网络功能。现在 wifi 没有波动,也没有发生故障转移。
| 归档时间: |
|
| 查看次数: |
1316 次 |
| 最近记录: |