Как контролировать WebView?
вопрос: Как прочитать текст страницы загруженной в WebView?
на Activity нет никаких элементов управления, кроме WebView. я свободно прыгаю по сайту/сайтам, которые открываются не в стандартном браузере, а в том же WebView (при этом работают скрипты со страниц, например проводится многостраничная регистрация на сайте). мне бы хотелось знать, что отображается на страницах, чтобы отловить какое-то кодовое слово, признак, по которому я решу, что сеанс завершен и закрою Activity, сохранив, полученные данные в глобальных переменных. как я могу реализовать контроль, в каком методе разместить, какие функции использовать чтобы узнать содержимое загруженной страницы? сам победить пока не смог, инглишсцуковерибед. есть подозрение, что нужно использовать методы WebViewClient. хотелось бы использовать именно WebView, а не всяческие post-запросы, так как нужно оставить возможность развития и изменения серверной части (регистрационные данные и внешний вид страниц будет со временем меняться). |
Ответ: Как контролировать WebView?
Ох :) Ступил ты на тёмную сторону силы.
А теперь по теме: 1. В своей активити создаёшь вложенный класс и обзываешь например WebViewInjector 2. Создаёшь в нём метод, пускай PHP код:
PHP код:
5. В методе клиента onPageFinished вызываешь следующий код: PHP код:
|
Ответ: Как контролировать WebView?
Цитата:
хочу сказать большое спасибо за решение проблемы, ибо в этом вопросе, похоже ни здравый смысл, ни преподобный гугл на путь истинный наставить меня не смогли бы. |
Ответ: Как контролировать WebView?
Можно поинтересоваться, я конечно в этой сфере много не знаю, но вы правы - метод извратный, т.к. изначально вообще черезжоперный.
Почему бы не использовать сокеты, и установить соединение с веб хостом, который выдаст соответствующий код страницы? А потом уже можно этот код кормить в WebView - если такая возможность есть.. ? |
Ответ: Как контролировать WebView?
Цитата:
|
Ответ: Как контролировать WebView?
Через URLConnection можно всё прекрасно забирать. Но и там свои косяки/нюансы есть.
1. Надо открывать тред, тк начиная с 3.0 все сетевые операции нельзя проводить на основном треде (читай синхронно) 2. Если лезть по SSL придётся в 90% случаев лепить свой менеджер сертификатов и разрешать идти на неправильно подписанные хосты 3. WebView довольно часто не может правильно прохавать (особенно объёмный) HTML полученный при loadData(). При чём если пути к CSS/JS относительные, надо не забыть отдать корневой URL 4. Так как могут быть косяки с памятью из-за объёмов страницы, придётся всё писать в темповый файл, потом оттуда отдавать веб вьюхе |
Ответ: Как контролировать WebView?
Цитата:
для отображения локальных страниц (динамически создаваемых в строковых переменных или загружаемых из нижеуказанной папки приложения) я использую разметку css, но файлы графики webview естественно не видит. причем графика (и некоторые страницы в html) сохраняются тут: "/data/data/ru.jru.sru/files/" этого потребовал класс openFileInput (ничем другим пользоваться у меня пока не получается) разметка примерно такая: PHP код:
может мне просто url(*) поменять как-то? (с учетом положения файлов "/data/data/ru.jru.sru/files/") з.ы.: пробовал так: PHP код:
|
Ответ: Как контролировать WebView?
Цитата:
PHP код:
|
Ответ: Как контролировать WebView?
спасибо, работает. я этот вариант пробовал, но оказалось, что проблема в css-разметке (даже в png - прозрачные участки накладывались на одноцветный фон :) и казалось, что картинки не отображаются)
наглость, конечно, но еще вопрос можно? как WebView пролистать в конец страницы? я такой вариант пробовал: view.scrollTo(0, view.getContentHeight() - view.getHeight()); и такой: view.pageDown(true); не листает зараза, остается на месте ..( вернее пролистывается в конец и тут же возвращается в начало. зачем? |
Ответ: Как контролировать WebView?
Цитата:
Никогда не скроллил, но как вариант: PHP код:
|
Ответ: Как контролировать WebView?
отлично шевелится! а я почти 5 часов убил на поиски ответа в гугле и самостоятельные потуги что-то исправить, а скриптом так и не попробовал (веб-разработкой никогда не занимался, вот и не работает мозг в эту сторону).
|
Ответ: Как контролировать WebView?
Цитата:
|
Ответ: Как контролировать WebView?
Цитата:
|
Ответ: Как контролировать WebView?
да, что-то я не то опять ляпнул. если рассуждать чисто логически - id для строковых ресурсов, как я понял, генерируются в классе R при компиляции приложения, так что не должно быть возможности их замены уже в процессе исполнения. тяжело быть чайником ..( ну, буду грузить переменные вручную. тем более есть удобный механизм для хранения настроек Shared Preferences.
|
Часовой пояс GMT +4, время: 06:53. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot