问题描述
根据 Android 10 标准指南,我使用 wifi 说明符与没有互联网的 AP 端点的物联网设备进行通信,当第一个物联网设备被配置但当我完成时,使用以下代码一切正常使用从 IOT(Wifi AP-SSID)注销的通信和断开连接,然后如果我尝试第二个 IOT 设备,我也有相同的(AP-SSID)然后它显示在对话框中连接,但是当我点击 AP-SSID 然后我不在 Network Callback(onAvailable) 中没有得到回调,因为我无法继续第二个面板。我观察到,如果我重新启动手机,然后尝试再次配置任何第一个面板,它会再次无缝地用于第一个 IOT 设备。
请建议我该怎么做或做错了什么。
@RequiresApi(api = Build.VERSION_CODES.Q)
private void connectUsingNetworkSuggestion(String ssid,String password) {
WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier.Builder()
.setSsid(ssid)
.setWpa2Passphrase(password)
.build();
NetworkRequest networkRequest = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.setNetworkSpecifier(wifiNetworkSpecifier)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.build();
ConnectivityManager connectivityManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
super.onAvailable(network);
connectivityManager.bindProcesstoNetwork(network);
Log.e(TAG,"onAvailable");
intiateTCPConnection();
}
@Override
public void onLosing(@NonNull Network network,int maxmsToLive) {
super.onLosing(network,maxmsToLive);
Log.e(TAG,"onLosing");
}
@Override
public void onLost(Network network) {
super.onLost(network);
Log.e(TAG,"losing active connection");
}
@Override
public void onUnavailable() {
super.onUnavailable();
Log.e(TAG,"onUnavailable");
}
};
this.networkCallback = networkCallback;
connectivityManager.requestNetwork(networkRequest,networkCallback);
}
为了与 IOT wifi(AP 网络)断开连接,我使用了以下代码:
private void disconnectAPNetwork() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ConnectivityManager manager = (ConnectivityManager) mContext.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
manager.unregisterNetworkCallback(networkCallback); // which is common
manager.bindProcesstoNetwork(null);
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)