3

Я работаю над приложением, которое автоматически сохраняет ваши учетные данные и журналы в университетском Wi-Fi при подключении к определенному ssid. Все работает нормально. Но когда мобильные данные включены и Wi-Fi подключается, запрос на вход отправляется через мобильные данные (поскольку соединение Wi-Fi неактивно). Я прочитал документацию и попробовал это.Multi Networking in Lollipop

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(); 

Это не решит мою проблему. Любые предложения?

ответ

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; 
     } 
    } 
+0

Это единственное, что сработало для меня для S5 с Marshmallow. Я сначала попробовал использовать вышеописанную функцию 'requestNetwork' (которая работала для большинства телефонов), но я никогда не получал обратный вызов' onAvailable' с S5 M – cbw