it-roy-ru.com

android-веб-просмотр с отображением пустой страницы

У меня есть приложение для Android, которое я разрабатываю, используя эмулятор, работающий на Android 2.3.3 со встроенным WebView в линейном расположении (вертикальное). Независимо от того, какой код я использую, он на самом деле ничего не делает. У меня есть разрешения для приложения Android, установленного на Интернет. Даже при попытке загрузить только HTML-код. Я получаю пустую белую страницу, без ошибок нет ничего. Ничего в logcat тоже нет.

WebView wview = (WebView)findViewById(R.id.webView1);
wview.getSettings().setJavaScriptEnabled(true);

Я попробовал все три из них, чтобы попытаться загрузить что-либо в веб-просмотр:

wview.loadUrl("http://www.google.com");
wview.loadData("<HTML><BODY><H3>Test</H3></BODY></HTML>","text/html","utf-8");
wview.loadDataWithBaseURL(null, "<HTML><BODY><H3>Test</H3></BODY></HTML>","text/html","utf-8",null);

Все три дают мне одинаковые результаты. Ничего такого.

Есть идеи?

15
Chris White
wbView.getSettings().setDomStorageEnabled(true);
22
zionpi

Я думаю, что если вы отредактируете часть своего кода, то все будет в порядке. Посмотрите, как я делаю это в моем случае ниже. Попробуйте для вас таким образом ...
Для отображения веб-страницы

final WebView wbView = (WebView) findViewById(R.id.WebView);

wbView.getSettings().setJavaScriptEnabled(true); 
wbView.loadUrl("https://play.google.com/store/apps");
wbView.clearView();
wbView.measure(100, 100);
wbView.getSettings().setUseWideViewPort(true);
wbView.getSettings().setLoadWithOverviewMode(true);

Для отображения HTML:
Смотрите этот учебник .. 

11
ridoy

Возможно, уже слишком поздно, но я хотел поделиться с вами своим опытом, потому что у меня была та же проблема, и я потратил на нее много времени. 

Поместите WebView вRelativeLayout, а не вFrameLayout.

То, что я проверил: моя WebView's onPageFinished() вызывалась каждый раз, но на экране я получил пустую страницу. От отладчика chrome://inspectWebView я смог «проверить» мою WebView, нажав кнопку inspect, и после этого WebView сразу же обновился. Мои мысли - WebView неправильно отображается в FrameLayout, и RelativeLayout решает проблему (даже вызовы invalidate() и requestLayout() не помогли).

11
Veaceslav Gaidarji

clearView устарела.

Использование:

webView.loadUrl("about:blank")
4
Yura Shinkarev

Я дал +1, потому что они оба были верной помощью для правильной работы веб-просмотра, но это не было решением моей проблемы.

Чего я не понял, так это того, что у меня был wrap_content для включения моего макета веб-просмотра, и это привело к тому, что он имел высоту 0px. Установив это в fill_parent, я решил проблему. (Веб-просмотр с белым фоном и приложение с белым фоном не позволяют определить его не полную высоту, когда он отображается как полная высота в дизайнере макетов.)

Спасибо за вашу помощь, хотя!

4
Chris White

вместо передачи нуля, вы должны передать ему пустую переменную String. например: ""
Поэтому вы должны назвать это так:
wview.loadDataWithBaseURL("", "<HTML><BODY><H3>Test</H3></BODY></HTML>","text/html","utf-8","");

3
AbdulHannan

измените wrap_content на fill_parent в макете веб-просмотра. это сработало для меня

2
Mehmet Sefa Balık

Я думаю, что вам нужно, это WebViewClient. После настройки webviewclient вызовите webview.loadUrl (_url); Что-то вроде этого ....

private void loadUrlInWebView(String _URL){
    WebView myWebView = (WebView) findViewById(R.id.webviewer);     

    WebSettings webSettings = myWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webSettings.setUseWideViewPort(true);
    webSettings.setLoadWithOverviewMode(true);

    myWebView.setWebViewClient(new MyWebViewClient());
    myWebView.loadUrl(_URL);
}

private class MyWebViewClient extends WebViewClient{
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {         

            view.loadUrl(url);

        return true;
    }

    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
    }
}
1
user4115463

Если это по-прежнему не работает, попробуйте добавить "http: //" или "https: //" перед веб-адресом, и он должен работать.

0
Shez Ratnani

Попробуйте увеличитьRAMдля вашего эмулируемого устройства. Это решило проблему для меня.

Я узнал об этом, просмотрев сообщения logcat в Android Monitor (Android Studio). Приведенные ниже сообщения дали мне представление о том, что было неправильно увеличиватьRAM:

W/art: Throwing OutOfMemoryError "Failed to allocate a 6635532 byte allocation with 1170528 free bytes and 1143KB until OOM"

W/JavaBrowserViewRendererHelper: Error allocating bitmap

E/chromium: [ERROR:Java_browser_view_renderer_helper.cc(132)] Error unlocking Java bitmap pixels.
0
Nelson

Вы можете использовать следующий код, это будет полезно:

WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new MyWebViewClient());

private class MyWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().equals("www.example.com")) {
            // This is my web site, so do not override; let my WebView load the page
            return false;
        }
        // Otherwise, the link is not for a page on my site, so launch another Activity that handles URLs
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        startActivity(intent);
        return true;
    }
}
0
Anchal Radhwani

используйте IP-адрес вместо веб-URL, затем переопределите веб-клиент, используя следующий метод обработки ошибок ssl

@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
    handler.proceed(); // Ignore SSL certificate errors
}
0
gite_rahul

Мое веб-представление показывало белый пустой квадрат поверх него , иногда полностью пустой. Это происходило только при загрузке определенных данных.

Изменение его на RelativeLayout и установка layout_height на match_parent работали для меня.

<RelativeLayout xmlns:Android=...
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <RelativeLayout
        Android:id="@+id/ll_title"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_alignParentTop="true"
        Android:layout_marginTop="3dp"
        Android:gravity="center_vertical"
        Android:orientation="horizontal">

        .....

    </RelativeLayout>

    <WebView
        Android:id="@+id/web_view"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:layout_below="@id/ll_title"
        Android:background="@color/colorYellow" />


    <ProgressBar
        Android:id="@+id/pb_spinning"
        style="?android:attr/progressBarStyleSmall"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_centerHorizontal="true"
        Android:layout_centerVertical="true"
        Android:visibility="gone" />

</RelativeLayout>
0
live-love