Android: возможно ли изменить класс WebView, чтобы получить доступ к HTML загруженной страницы? - PullRequest
0 голосов
/ 05 апреля 2011

Мне нужно использовать WebView для загрузки определенных веб-страниц и динамического изменения CSS, прежде чем показывать их пользователю (что означает, что я должен удалить все теги <link> и добавить один с моим CSS). (Почему? Потому что я хочу адаптировать внешний вид определенного сайта - который не мой - для смартфонов)

Теперь я видел, что на подобные вопросы ответили, что единственный способ изменить html перед его отображением пользователю - это выполнить некоторый javascript в методе onPageFinished; это может быть решением, но я бы хотел рассмотреть и другие возможности.

Итак, мои вопросы:

1) Если я углублюсь в исходный код класса WebView, можно ли найти, где HTML-код загружается с сайта, чтобы у меня был прямой доступ к HTML-файлу, и я могу изменять его по своему усмотрению?

2) Если да, то является ли WebView классом, который обрабатывает связь и получает html? Если еще, какой это?

3) Предполагая, что то, что я спросил, возможно, вы думаете, что приложение будет работать лучше, если модификация html, сделанная таким образом, вместо использования javascript?

Ответы [ 2 ]

0 голосов
/ 10 декабря 2013

Вы можете сделать это легко, включив JavaScript в вашем веб-просмотре и выполнив

document.getElementsByTagName('html')[0].innerHTML

Проверьте этот ответ для подробной процедуры.

0 голосов
/ 05 апреля 2011

Вы можете использовать HttpClient для выполнения HTTP GET и получения ответа HTML, что-то вроде этого:

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(url);
HttpResponse response = client.execute(request);

String html = "";
InputStream in = response.getEntity().getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder str = new StringBuilder();
String line = null;
while((line = reader.readLine()) != null)
{
    str.append(line);
}
in.close();
html = str.toString();

Теперь вы можете развлекаться со своим String html и размещать его в Webview

    WebView webview=(WebView)findViewById(R.id.mywebview);
    webview.loadData(myModifiedHtml, "text/html", "UTF-8");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...