Android, как переопределить проверку подключения к Интернету при подключении к Wi-Fi сети?

Я заметил на Marshmallow (например, Nexus 6P), а также на недавно обновленных телефонах Lollipop (например, Galaxy S5), что, когда я подключаюсь к Wi-Fi-сети, у которой нет интернета, сеть не будет полностью подключена, пока пользователь не примет приглашение Заявив, что сеть не имеет доступа в Интернет.

Есть ли способ программно обойти эту проверку и разрешить подключение wifi независимо от доступа в Интернет?

Не пытались, но вы можете попробовать перенаправить www.google.com и 8.8.8.8 до 127.0.0.1 (вы можете использовать iptables или изменить /system/hosts ). Вы также можете попробовать копать исходный код AOSP (это единственные проверки isReachable (), которые я нашел в AOSP).

Если вы решите найти AOSP, вы можете начать здесь

PS Вам понадобится root для обработки iptables и / system / hosts.

Вы можете попробовать это

Чтобы проверить доступность сети:

 private Boolean isNetworkAvailable() { ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); return activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting(); } 

Чтобы проверить доступ в Интернет (активный Wi-Fi включен или нет):

 public Boolean isOnline() { try { Process p1 = java.lang.Runtime.getRuntime().exec("ping -c 1 www.google.com"); int returnVal = p1.waitFor(); boolean reachable = (returnVal==0); return reachable; } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return false; } 

Проверьте эти ссылки ..

Проверить подключение к Интернету

 public final boolean isInternetOn() { ConnectivityManager connec = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); // ARE WE CONNECTED TO THE NET if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED || connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED ) { // MESSAGE TO SCREEN FOR TESTING (IF REQ) //Toast.makeText(this, connectionType + ” connected”, Toast.LENGTH_SHORT).show(); return true; } else if ( connec.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED || connec.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED ) { return false; } return false; } 

Проверьте подключение к Интернету с URL-адресом, если он доступен

 public static boolean hasActiveInternetConnection(Context context) { if (isNetworkAvailable(context)) { try { HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection()); urlc.setRequestProperty("User-Agent", "Test"); urlc.setRequestProperty("Connection", "close"); urlc.setConnectTimeout(1500); urlc.connect(); return (urlc.getResponseCode() == 200); } catch (IOException e) { Log.e(LOG_TAG, "Error checking internet connection", e); } } else { Log.d(LOG_TAG, "No network available!"); } return false; } 
Intereting Posts
Android gradle ndk jni build с внешней библиотекой и собственной отладкой (ARToolkit) Wi-Fi P2P. Сообщите всем сверстникам о каком-либо событии API Google Адресов Google, getAutocompletePredictions возвращает статус «PLACES_API_ACCESS_NOT_CONFIGURED» Разработка кросс-платформенного мобильного приложения Project.properties в проекте android Является ли dp таким же, как dip? Событие Android onChange не запускается в contentObserver для хромовой истории на android 5 (Lollypop) Как загрузить массив строки во фрагмент? Получите вложенный объект JSON с помощью GSON с помощью модифицированной Повторение идентификатора регистрации для GCM Что лучше для разработки Android – Eclipse Helios или Eclipse Galileo? Android: создайте TextView, который мигает при нажатии Как создать и отобразить информацию в файле simple_list_item_2? Что эквивалентно фрагменту Activity.isFinishing ()? Eclipse Android Exception: исключение из обработанной очереди событий Больше никаких дескрипторов