|
2 / 2 / 4
Регистрация: 05.04.2013
Сообщений: 234
|
||||||
Как правильно вставить AlertDialog, если нет интернета?20.01.2015, 22:19. Показов 6193. Ответов 42
Метки нет (Все метки)
Здравствуйте!Как правильно вставить AlertDialog если нет интернета?
Т.е. я через webView (wv) гружу сайт и если есть инет,то все идет дальше и в wv грузится сайт. Если жк инет нет вылетает AlertDialog о том,что нужно включить инет и обновить страницу. Я пробовал вот так,но у меня диалог на диалог лезет...даже если например инет включен,то AlertDialog лезет на ProgressDialog.
0
|
||||||
| 20.01.2015, 22:19 | |
|
Ответы с готовыми решениями:
42
Как установить лицензионный Metro 2033, если нет интернета?
Всё правильно, а интернета нет. Чего не хватает? |
|
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
|
||||||
| 22.01.2015, 00:51 | ||||||
Сообщение было отмечено Kroshandowski как решение
Решение
1
|
||||||
|
2 / 2 / 4
Регистрация: 05.04.2013
Сообщений: 234
|
|
| 22.01.2015, 01:08 [ТС] | |
|
Armagedo, большое спасибо за время, потраченное на решение моего вопроса!
Небольшой оффтоп: Почему именно StrictMode решил проблему?
0
|
|
|
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
|
||
| 22.01.2015, 09:42 | ||
|
Это просто костыль, чтобы избежать android.os.NetworkOnMainThreadException Не более... И его не должно быть в готовом приложении.
0
|
||
|
2 / 2 / 4
Регистрация: 05.04.2013
Сообщений: 234
|
|
| 22.01.2015, 13:04 [ТС] | |
|
Armagedo, Мда
Все таки CoolMind был прав на счет AsyncTask. Почитал про StrictMode и действительно костылище для отладки и только. И там все тычат на использования AsyncTask.P.S. stackoverflow
0
|
|
|
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
|
||||||
| 22.01.2015, 13:12 | ||||||
|
Kroshandowski, спасибо за комплимент.
В общем, я у себя обычно использую предварительную проверку на наличие доступа к Wi-Fi или сотовой сети (без проверки наличия там Интернета). Это сразу отсеивает случаи, когда устройство в оффлайн-режиме. Функция такая:
Если брать вашу ситуацию, то можно попробовать всё равно сделать AsyncTask, но с вашей функцией, только вставить её в doInBackground (честно говоря, не пробовал, может быть, и не стоит так делать). По окончании в onPostExecute прописать скачивание в WebView. Либо, если вы используете Thread, там можно прописать выполнение кода в UI-потоке.
1
|
||||||
|
2 / 2 / 4
Регистрация: 05.04.2013
Сообщений: 234
|
|||||||||||
| 22.01.2015, 13:51 [ТС] | |||||||||||
|
CoolMind, спасибо,что поделились свои решением проверки. Просто я сейчас уже не знаю,что является наиболее верным решением моего случая и начитавшись в "Стеке","Хеше","Хабре","СтартАндройд е" или здесь на форуме о подобных проблемах и путях решения, теперь у меня такая каша в голове.
А если по теме, то AsyncTask я использовал для парсинга страниц с помощью Jsoup и вроде бы пока не вылетало и все работает. Если взять за основу стандартный шаблон AsyncTask'a:
Добавлено через 24 минуты Как-то так наверно ![]()
0
|
|||||||||||
|
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,083
|
||||||
| 22.01.2015, 14:03 | ||||||
|
Где ж вы ребята были когда я тут полгода назад спрашивал про проверку связи?
А какой метод лучше, isConnected которые? У меня используется немного измененный второй:
0
|
||||||
|
2 / 2 / 4
Регистрация: 05.04.2013
Сообщений: 234
|
|
| 22.01.2015, 14:46 [ТС] | |
|
CoolMind, попробовал ваше решение проверки и оно РАБОТАЕТ даже без StrictMode.
0
|
|
|
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
|
|
| 22.01.2015, 14:59 | |
|
Естественно, потому что оно не проверяет есть ли доступ в "СЕТЬ ИНТЕРНЕТ", а не просто в сеть (WI-FI, GSM, ...)
![]() Оно не использует соединенеие с глобальным ресурсом в основном потоке. Что, в принципе, - фонарный столб для проверки возможности загрузки из сети интернет и с полезностью, стремящейся к бесконечно малой величине
0
|
|
|
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,083
|
||
| 22.01.2015, 15:09 | ||
|
1
|
||
|
2 / 2 / 4
Регистрация: 05.04.2013
Сообщений: 234
|
||
| 22.01.2015, 15:29 [ТС] | ||
|
Armagedo, вы меня конечно извините,но некий сарказм, при объяснении новичку чего либо в той или иной сфере,не уместен.
P.S. Все что я написал выше,это не относится к понятию "Бомбануло" или "Обиделся". Критику я воспринимаю хорошо и даже прошу совета,как сделать лучше.
0
|
||
|
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
|
|
| 22.01.2015, 15:32 | |
|
Kroshandowski, ту функцию, которую я написал (взял со stackoverflow), можно использовать на первоначальном этапе для проверки, есть ли у устройства какое-то соединение. И если есть, можно делать дальнейшие проверки и загрузки. Как правильно упомянул Rube, требуется дополнительное разрешение. Поэтому вы можете не применять этот способ, как правильно отметил Armagedo. (Ещё раз: если есть подключение к Wi-Fi, но роутер не раздаёт Интернет, то проверка будет пройдена).
Более правильным будет вариант с проверкой по таймауту, предложенный Armagedo. В этому случае, если телефон ни к чему не подключён, всё равно будет тратиться одна секунда. Поэтому вам требуется либо совместить оба подхода, либо использовать только вариант Armagedo. Я не пробовал работу с Thread, только с AsyncTask, поэтому кратко прокомментирую. У него есть 5 методов (для последних версий Андроида): onPreExecute, doInBackground, onPostExecute, onCancelled (отсутствует в старых версиях), onProgressUpdate. Из них вам точно потребуются первые три. Стандартным способом считается вынос всей логики для работы с интерфейсом в методы onPreExecute и onPostExecute, а фоновой работы - в doInBackground. Обработка doInBackground обязательна. При этом советую не использовать упоминания контролов в doInBackground, по крайней мере, не обновляйте их. Интерфейсная часть там не должна присутствовать (за исключением того случая, когда контрол сам создаётся в doInBackground). Даже просто создание объектов, зависящих от контекста, рекомендую делать в onPreExecute. В общем, проверку Интернета можете сделать в doInBackground, а заполнение WebView - в onPostExecute. Но раз уж проверка основана во Thread, можно попробовать всё сделать во Thread.
1
|
|
|
2 / 2 / 4
Регистрация: 05.04.2013
Сообщений: 234
|
|
| 22.01.2015, 15:35 [ТС] | |
|
0
|
|
|
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,083
|
|
| 22.01.2015, 15:37 | |
|
ACCESS_NETWORK_STATE
0
|
|
|
2 / 2 / 4
Регистрация: 05.04.2013
Сообщений: 234
|
|
| 22.01.2015, 15:40 [ТС] | |
|
CoolMind, выходит,что проверку isConnected от Armagedo оставляем,а остальную часть переделываем под AsyncTask?
0
|
|
|
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
|
|
| 22.01.2015, 15:42 | |
|
Rube, ваш вариант IsConnected является частным случаем для 2 соединений. Он, конечно, верный, но проверяет только 2 соединения. Поэтому лучше использовать более общий случай (там цикл по всем соединениям).
Добавлено через 1 минуту Kroshandowski, видимо, так, но я не могу этого подтвердить, потому что не знаю, как ведёт себя программа, запускающая фоновый процесс из фонового процесса.
0
|
|
| 22.01.2015, 15:46 | |
|
Не по теме: Kroshandowski, у меня и мысли не было унижать или преумалять чьё-то решение.
0
|
|
|
2 / 2 / 4
Регистрация: 05.04.2013
Сообщений: 234
|
||
| 22.01.2015, 15:59 [ТС] | ||
|
Armagedo,
Не по теме:
1
|
||
|
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,083
|
|
| 22.01.2015, 19:46 | |
|
Запустил я эту проверку, вылетает на urlc.connect();
Кликните здесь для просмотра всего текста
01-22 21:42:04.121: E/AndroidRuntime(1477): FATAL EXCEPTION: main
01-22 21:42:04.121: E/AndroidRuntime(1477): android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardP olicy.onNetwork(StrictMode.java:1133) at java.net.InetAddress.lookupHostByName(In etAddress.java:385) at java.net.InetAddress.getAllByNameImpl(In etAddress.java:236) at java.net.InetAddress.getAllByName(InetAd dress.java:214) at libcore.net.http.HttpConnection.<init>(H ttpConnection.java:70) at libcore.net.http.HttpConnection.<init>(H ttpConnection.java:50) at libcore.net.http.HttpConnection$Address. connect(HttpConnection.java:340) at libcore.net.http.HttpConnectionPool.get( HttpConnectionPool.java:87) at libcore.net.http.HttpConnection.connect( HttpConnection.java:128) at libcore.net.http.HttpEngine.openSocketCo nnection(HttpEngine.java:316) at libcore.net.http.HttpEngine.connect(Http Engine.java:311) at libcore.net.http.HttpEngine.sendSocketRe quest(HttpEngine.java:290) at libcore.net.http.HttpEngine.sendRequest( HttpEngine.java:240) at libcore.net.http.HttpURLConnectionImpl.c onnect(HttpURLConnectionImpl.java:81) at com.example.function.isNetwork.isConnect ed(isNetwork.java:55) webview чтоли надо чтоб был?
0
|
|
|
2 / 2 / 4
Регистрация: 05.04.2013
Сообщений: 234
|
|||||||||||
| 22.01.2015, 19:49 [ТС] | |||||||||||
|
CoolMind, я убрал из этого варианта StrictMode и все остальное оставил как предложил Armagedo, и все работает. Теперь я думаю....совпадение,случайность или так и должно быть?
Rube, ну да webview отображает у меня html файлик из asset
0
|
|||||||||||
| 22.01.2015, 19:49 | |
|
Если нет интернета, то ожидать его появления
Заменить значения по WHERE, а если совпадений нет то вставить Как правильно написать тэг, чтобы IMG SRC=КАРТИНА загружал например другую картину если нет той на которую ссылался? Стоит ли скрывать robots txt или нет? Если стоит, то как это надо правильно сделать? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
начало и оглавление
-
Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование. . .
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|