问题描述
在我的应用中,我尝试调用 ConnectivityManager.requestNetwork(networkRequest,networkCallback)
来提示用户连接到特定的 WiFi 网络。通常这会按预期工作;显示带有文本 Device to use with MyApp
的系统对话框,并找到 WiFi 网络。用户可以连接网络(或取消),网络连接成功。一切都按预期进行。
然而,这似乎只有在设备之前没有连接到网络的情况下才能正常工作。如果设备过去已经连接到该网络,则会一遍又一遍地显示 Device to use with MyApp
对话框。当它第一次显示时,我可以连接到网络并调用 onAvailable
回调。但是,在连接后立即再次显示该对话框。如果用户点击取消,则该对话框将关闭并且不会再次显示。但是,假设它们连接到网络,对话框总是会再次显示(甚至在 onAvailable
回调完成之前),并且模式会无限重复。
我只调用过一次 requestNetwork
,即使我在 onAvailable
回调中放置了一个断点,到该断点被击中时,第二个对话框已经显示。再一次,这种仅在网络保存到设备时发生;如果设备尚未连接到网络,则该对话框仅显示一次。
我的代码如下,但我认为它没有做任何不寻常的事情。我还需要做些什么来防止这种情况发生?
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
final NetworkSpecifier specifier =
new WifiNetworkSpecifier.Builder()
.setSsid(ssid)
.build();
final NetworkRequest request =
new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.setNetworkSpecifier(specifier)
.build();
mAndroidQNetworkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
Log.d(TAG,"Connected to "+ssid+"!");
}
@Override
public void onUnavailable() {
Log.d(TAG,"NOT Connected to "+ssid+"!");
}
};
mConnectivityManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
mConnectivityManager.requestNetwork(request,mAndroidQNetworkCallback);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)