WebView не отображает загруженный HTML на некоторых телефонах - PullRequest
1 голос
/ 07 сентября 2011

У меня есть WebView в одном из моих Activities, где я хочу загрузить страницу Html. Страница содержит jquery-mobile и некоторые html. Так что я делаю следующее в моем Activity:

    mWebView=(WebView) findViewById(R.id.MyWebView);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.setWebViewClient(new WebViewClient(){
           [...]
    });
    mWebView.loadUrl("http://www.mymobilepage.html");

Проблема в том, что страница загружается и отображается в эмуляторе и в HTC Desire, но при попытке загрузить ее на LG Optimus One ничего не отображается. События onPageStarted и onPageFinished оба запускаются в моем WebViewClient, но отображается только пустая страница, а также у меня нет ошибок в моем LogCat.

Заранее спасибо.

Ответы [ 5 ]

3 голосов
/ 15 сентября 2011

Когда вызывается onPageFinished, страница может отображаться не полностью.Документация гласит:

Уведомить хост-приложение о завершении загрузки страницы.Этот метод вызывается только для основного кадра.Когда вызывается onPageFinished (), изображение рендеринга может быть еще не обновлено.Чтобы получить уведомление о новом изображении, используйте onNewPicture (WebView, Picture).

Однако обратите внимание, что onNewPicture задокументировано как устаревшее и устаревшее.Я спрашиваю о замене / альтернативе здесь .

0 голосов
/ 18 сентября 2011

У меня была похожая проблема с этим, я обнаружил, что вызов clearview с последующей перезагрузкой, казалось, решил эту проблему - как в:

mWebView.clearView();
mWebView.loadUrl("http://yourmobilepage.something/");
mWebView.reload();
0 голосов
/ 17 сентября 2011

Проверяли ли вы код html / js в разных версиях на эмуляторе? Более новые версии Android имеют более новые версии WebKit, что может быть проблемой.

Я бы также проверил, установлен ли LogCat для отображения только сообщений об ошибках, или отладки + информация + предупреждение + сообщения об ошибках. Согласно this ошибки javascript должны отображаться как сообщения отладки.

0 голосов
/ 17 сентября 2011

Попробуйте это:

webView.post(new Runnable() {

        @Override
        public void run() {
            // Your code here...

        }
    });
0 голосов
/ 13 сентября 2011

Это должен быть комментарий, но так как в нем есть немного кода, я добавил его в качестве ответа.

Попробуйте изменить фон по умолчанию на прозрачный и оповещать, как только страница загрузится, просто чтобы быть уверенным, что хотя бы HTML интерпретируется:

    mWebView = (WebView) this.findViewById(R.id.webview);
    mWebView.setBackgroundColor(0);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(false);
    mWebView.setWebViewClient(new WebViewClient(){
        @Override
        public void onPageFinished(WebView view, String url)
        {
         super.onPageFinished(view, url);
         view.loadUrl("javascript:(function() { alert('hello'); })()");
        } });

и при загрузке веб-страницы:

    mWebView.clearView();
    mWebView.loadUrl("http://yourmobilepage.something/");

и дайте нам знать, если что-то случилось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...