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?
wbView.getSettings().setDomStorageEnabled(true);
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 ..
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
dansRelativeLayout
et 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://inspect
WebView
, 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é).
clearView
est obsolète.
Utilisation:
webView.loadUrl("about:blank")
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!
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","");
remplacez wrap_content par fill_parent dans votre présentation WebView. ça a fonctionné pour moi
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();
}
}
Si cela ne fonctionne toujours pas, essayez d'ajouter "http: //" ou "https: //" avant l'adresse Web et cela devrait fonctionner.
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.
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;
}
}
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
}
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>