web-dev-qa-db-fra.com

affichage web android affichant une page vierge

J'ai une application Android que je développe à l'aide de l'émulateur fonctionnant sous Android 2.3.3 avec une WebView intégrée dans une fenêtre transparente imbriquée dans une image linéaire (verticale). Peu importe le code que j'utilise, il ne fait jamais rien. J'ai des autorisations sur l'application Android définies sur INTERNET. Même en essayant de charger uniquement le code HTML. Je reçois une page blanche, aucune erreur, rien. Rien dans logcat aussi.

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

J'ai essayé tous les trois d'essayer de charger quoi que ce soit dans la vue Web:

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);

Tous les trois me donnent les mêmes résultats. Rien.

Des idées?

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

Je pense que si vous modifiez une partie de votre code, il sera ok.Look comment je le fais dans mon cas ci-dessous.Essayez pour vous de cette façon ..
Pour afficher une page Web

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);

Pour afficher le code HTML:
Voir ce tutoriel .. 

11
ridoy

C'est peut-être un peu trop tard, mais je voulais partager mon expérience avec vous, car j'avais le même problème et j'y passais beaucoup de temps. 

Mettez votre WebView dansRelativeLayoutet non dansFrameLayout.

Ce que j'ai testé: Ma WebView 's onPageFinished() a été appelée à chaque fois, mais à l'écran, une page blanche est apparue. À partir du débogueur chrome://inspectWebView, j'ai été en mesure de "cingler" ma WebView en appuyant sur le bouton inspect. Après cela, WebView a été immédiatement actualisé. Mes pensées - WebView n'est pas restitué correctement dans FrameLayout et RelativeLayout résout le problème (même les appels invalidate() et requestLayout() n'ont pas aidé).

11

clearView est obsolète.

Utilisation:

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

J'ai donné +1 parce que c'étaient des aides valables pour que la vue Web fonctionne correctement, mais ce n'était pas la solution à mon problème.

Ce que je ne savais pas, c’est que j’avais un wrap_content sur l’inclusion de ma mise en page Webview, ce qui lui donnait une hauteur de 0px. En définissant this à fill_parent, j'ai résolu le problème. (Webview avec un arrière-plan blanc et application avec un arrière-plan blanc, vous ne pouvez pas vraiment dire que ce n'est pas toute la hauteur quand elle apparaît comme une hauteur maximale dans le concepteur de disposition.)

Merci quand même pour vôtre aide!

4
Chris White

au lieu de passer null, vous devriez lui passer un String vide. ex: ""
Vous devriez donc l'appeler ainsi:
wview.loadDataWithBaseURL("", "<HTML><BODY><H3>Test</H3></BODY></HTML>","text/html","utf-8","");

3
AbdulHannan

remplacez wrap_content par fill_parent dans votre présentation WebView. ça a fonctionné pour moi

2
Mehmet Sefa Balık

Je pense que ce dont vous avez besoin est WebViewClient. Après avoir défini webviewclient, appelez 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

Si cela ne fonctionne toujours pas, essayez d'ajouter "http: //" ou "https: //" avant l'adresse Web et cela devrait fonctionner.

0
Shez Ratnani

Essayez d’augmenter le nombre de balisesREMpour votre périphérique émulé. Cela a résolu le problème pour moi.

J'ai découvert cela en consultant les messages logcat dans Android Monitor (Android Studio). Les messages ci-dessous me donnaient une idée de ce qui n'allait pas pour augmenterREM:

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

Vous pouvez utiliser le code suivant, cela vous sera utile:

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

utilisez l'adresse ip au lieu d'URL Web, puis remplacez le client Web en utilisant la méthode de traitement des erreurs ssl

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

Ma vue Web affichait un carré blanc au-dessus , parfois totalement vide. Cela ne s'est produit que lors du chargement de certaines données.

Le changer en RelativeLayout , et régler layout_height sur match_parent a fonctionné pour moi.

<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