BindProcessToNetwork не работает на определенном устройстве - PullRequest
0 голосов
/ 15 марта 2019

У меня есть приложение, специально созданное для клиента и недоступное в Play Store, которое в основном выполняет некоторые сетевые вызовы, когда обнаруживает, что устройство подключено к их WiFi. Это должно происходить, даже если у него нет подключения internet , каждый запрос приложения направляется на локальный адрес.
Проблема связана с новой партией планшетов, приобретенной клиентом (Galaxy Tab Active 2, Android 8.1.0, номер сборки M1AJQ.T395XXU3BRJ5), которая всегда будет предпочитать соединение с доступом в Интернет по любой сети, о которой я говорю. привязать к.
WiFi -> Advanced -> Переключение на мобильные данные уже отключено, так что не должно быть.

Вот код, который я использую, который работал до сих пор:

ConnectivityManager cm = (ConnectivityManager) getApplication().getSystemService(Context.CONNECTIVITY_SERVICE);
Network[] networks = cm.getAllNetworks();
for (int i = 0, networksLength = networks.length; !bound && i < networksLength; i++) {
    Network network = networks[i];
    if (correctNetwork(network)) { //SSID check
        bound = cm.bindProcessToNetwork(network);
        Log.i(TAG, "Bound? " + bound);
    }
}

На всех своих предыдущих устройствах, на моем собственном телефоне и даже на Galaxy Tab Active 1 это работает: мы видим «Bound? True» в журналах, и каждое соединение осуществляется через правильную сеть. На Active 2 мы всегда видим «Bound? False», и он будет использовать соединение 4G. Отключение данных не вариант.

Если это ошибка Samsung, есть ли обходной путь? Или, может быть, альтернативный способ заставить HttpURLConnection использовать определенную сеть?

...