我目前正在尝试连接到 wifi 网络。我使用了下面的代码。
WifiNetworkSpecifier specifier = new WifiNetworkSpecifier.Builder()
.setSsid(ssid)
.setBssid(MacAddress.fromString(bssid))
.setWpa2Passphrase(password)
.build();
NetworkRequest request = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.setNetworkSpecifier(specifier)
.build();
ConnectivityManager manager = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
manager.requestNetwork(request, new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(@NonNull Network network) {
ConnectivityManager.setProcessDefaultNetwork(network);
super.onAvailable(network);
NetworkInfo info = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if (info != null && info.isConnectedOrConnecting()) {
if (!emitter.isDisposed()) {
emitter.onSuccess(true);
}
} else {
if (!emitter.isDisposed()) {
emitter.onError(new RuntimeException("OS Disconnected"));
}
}
}
@Override
public void onUnavailable() {
super.onUnavailable();
if (!emitter.isDisposed()) {
emitter.onError(new RuntimeException("Could not connect Wifi"));
}
}
});
});
问题:上面的代码适用于 Pixel 手机和诺基亚,但在 Oneplus 设备上,我得到 toast连接成功toast,并且在此 wifi 断开连接后立即。wifi 符号在状态栏中非常短暂地可见。在下一刻,Wifi-Symbol 消失了,系统对话框再次可见,连接到 wifi。
已授予以下权限,并授予位置权限,并且在设备中也已启用。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
当我调试回调时,它正在通过此顺序中的方法:
- onAvailable()
- onCapabilitiesChanged()
- onBlockedStatusChanged(阻止:假)
- onCapabilitiesChanged()
- onLost()
我已经提到了这些
Android Q,以编程方式连接到不同的WiFi AP以进行互联网
WiFi网络连接在Android 10(Q)Android Q中不断断开Android Q
Wifi网络请求Api连接问题
,WifiNetworkSpecifier在连接建立后立即失去Wifi
我无法找到解决方案。
网络请求中是否缺少任何导致断开连接的内容。或任何其他赞赏的解决方案。
谢谢你。