【发布时间】:2020-06-24 20:46:51
【问题描述】:
我目前正在尝试连接到 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 connection success 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, programmatically connect to different WiFi AP for internet
WiFi Network Connection keeps disconnecting on Android Q
Wifi Network Request Api connection issue in android 10 (Q)
Android Q, WifiNetworkSpecifier loosing Wifi immediately after connection is established
我无法找到解决方案。
我在网络请求中是否缺少任何导致断开连接的内容。或任何其他赞赏的解决方案。
谢谢。
【问题讨论】:
-
呃。您是否有表现出这种行为的特定 OnePlus 模型(或多个模型)?
-
我尝试了 4 种不同的型号,其中 3 台搭载 android 10 操作系统的 OnePlus 6t 设备和一台搭载 android 10 的 OnePlus 7 pro 都表现相同。
-
这个问题发生在我身上,让我很沮丧。我正在使用三星s10进行测试,我搜索了很多,一无所获。然后我尝试了另一个设备,发现它很有魅力。我寻找三星 S10 设备是否有问题,似乎自 Android 10 更新以来报告了很多问题。如果您使用的是 S10,请查看以下链接,(第三种解决方案适用于我):thedroidguy.com/…
-
我也有同样的问题。我在三星 S9+ 和 Galaxy S6 平板电脑上进行了测试。两者都有相同的问题。连接到选定的 wifi ssid(在说明符中输入),回调转到 onAvailable 并“已连接”,但立即断开连接。两者都是 API 29。(Q,10)根据众多 SO 答案,我尝试了许多请求修饰符的组合。我使用了 3 个不同的 wifi 连接,2 个在路由器上(wep 和 wpa),一个来自 D1 mini AP。到目前为止,没有任何效果。到目前为止,文档、在线论坛和 SO 上的所有研究都没有取得任何进展。
标签: android wifi android-10.0 android-connectivitymanager