棒棒糖的多网络

Sim*_*mar 3 networking android cellular-network wifi android-5.0-lollipop

我正在开发一个应用程序,可以保存您的凭据,并在连接到特定的ssid时自动登录到大学wifi.一切都很好.但是当移动数据打开并且wifi连接时,登录请求通过移动数据发送(因为wifi连接未激活).我阅读了文档并尝试了这一点.

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();
Run Code Online (Sandbox Code Playgroud)

这并不能解决我的问题.有什么建议?

Sim*_*mar 8

我自己解决了这个问题.

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;
        }
    }
Run Code Online (Sandbox Code Playgroud)