Android 棒棒糖中的多网络
我正在开发一个应用程序,当连接到特定ssid时,它会自动保存您的凭据并登录到大学wifi。一切正常。但当移动数据打开且wifi连接时,登录请求通过移动数据发送(因为wifi连接未激活)。 我阅读了文档并尝试了这个Android 棒棒糖中的多网络,android,networking,wifi,android-5.0-lollipop,cellular-network,Android,Networking,Wifi,Android 5.0 Lollipop,Cellular Network,我正在开发一个应用程序,当连接到特定ssid时,它会自动保存您的凭据并登录到大学wifi。一切正常。但当移动数据打开且wifi连接时,登录请求通过移动数据发送(因为wifi连接未激活)。 我阅读了文档并尝试了这个 if(Build.VERSION.SDK_INT >= 21){ ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.
if(Build.VERSION.SDK_INT >= 21){
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder requestBuilder = new NetworkRequest.Builder();
requestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
connectivityManager.registerNetworkCallback(requestBuilder.build(), new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
ConnectivityManager.setProcessDefaultNetwork(network);
}
});
}
new LoginTask().execute();
这不能解决我的问题。
有什么建议吗?我自己解决了这个问题
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
Network[] networks = connectivityManager.getAllNetworks();
NetworkInfo networkInfo;
Network network;
for (int i = 0; i < networks.length; i++){
network = networks[i];
networkInfo = connectivityManager.getNetworkInfo(network);
if ((networkInfo.getType() == ConnectivityManager.TYPE_WIFI) && (networkInfo.getState().equals(NetworkInfo.State.CONNECTED))) {
ConnectivityManager.setProcessDefaultNetwork(network);
break;
}
}
ConnectivityManager ConnectivityManager=(ConnectivityManager)context.getSystemService(context.CONNECTIVITY_服务);
Network[]networks=connectivityManager.getAllNetworks();
网络信息网络信息;
网络;
对于(int i=0;i
这是我在S5中唯一能用棉花糖的东西。我一开始也用requestNetwork
(适用于大多数手机)尝试了上述方法,但我从未收到过S5 M的onAvailable
回调