|
2 / 2 / 4
Регистрация: 05.04.2013
Сообщений: 234
|
||||||
Как правильно вставить AlertDialog, если нет интернета?20.01.2015, 22:19. Показов 6190. Ответов 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 или нет? Если стоит, то как это надо правильно сделать? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости.
Решение:
Создан документ со следующими. . .
|
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово.
Решение:
Создан документ с единственным. . .
|
Сумма и количество положительных элементов в чётных строках массива
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Вычислить сумму и количество положительных элементов массива, расположенных в четных строках.
Решение:
Создан документ с. . .
|
Поиск произведения положительных чётных чисел в последовательности
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Дана произвольная последовательность целых чисел. Найти произведение положительных четных чисел данной последовательности.
. . .
|
|
Обработка трёх чисел: утроение и возведение в степень
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Даны три действительных числа. Утроить те из них, значения которых неотрицательны, и возвести в четвертую степень отрицательные.
. . .
|
Расчёт стоимости яблок по весу
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Написать программу вычисления стоимости некоторого количества (по весу) яблок.
Решение:
Создан документ, с табличной частью. . .
|
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни
1. Механизм отложенного высвобождения фосфора
Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ
Реализована разная скорость. . .
|
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2.
Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
|