Dienstag, Februar 18, 2020

WebView mit einem IFRAME android

Ich soll zum laden einer HTML – <IFRAME> innerhalb einer WebView, aber ich weiß nicht, warum, es ist nicht in der Lage, dies zu tun.

Ich bin mit dem folgenden code zu laden <IFRAME>

webView.loadData("<iframe src=\"http://www.google.com\"></iframe>", "text/html",
                "utf-8");

Hier ist was ich versucht habe.

WebSettings webViewSettings = webView.getSettings();
webViewSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webViewSettings.setJavaScriptEnabled(true);
webViewSettings.setPluginsEnabled(true);
webViewSettings.setBuiltInZoomControls(true);
webViewSettings.setPluginState(PluginState.ON);

Habe ich erwähnt, die internet-Berechtigung:

<uses-permission android:name="android.permission.INTERNET" />

Habe ich auch schon versucht Einstellungen der WebViewClient mit shouldOverrideUrlLoading immer false zurückgeben.

Aber es funktioniert einfach nicht.

Habe ich versucht, diese mit verschiedenen Websites, d.h. Websites, die andere als google.com.

Ich Teste das an, Samsung Nexus S läuft ICS 4.0.3

InformationsquelleAutor Shardul | 2012-01-21

3 Kommentare

  1. 9

    Dies ist, wie es funktioniert.

    Bemerkte ich Log Katze warf mich

    WebKit-permission-Problem: EventHub.removeMessages(int was = 107) ist
    nicht unterstützt, bevor die WebViewCore eingerichtet ist

    Um dies zu beheben, musste ich hinzufügen android:hardwareAccelerated="true" im <application> – tag der Manifest.

    Ich erlebte dies auf ICS und seine gefunden, der das gleiche Problem auftreten, post-Honeycomb-Geräte.

    Hoffe das wird einigen helfen nicht.

    • hi, was das android:hardwareAccelerated=“true“ bedeutet?
    • siehe Screenshot: i.imgur.com/OyCxlwh.png , hardwareAccelerated= “ true festgelegt ist, aber iframe kann nicht geladen werden google.com Seite
    • Hallo das android:hardwareAccelerated=“true“ – Eigenschaft ist nicht zu finden im application-tag
    • dieser wird standardmäßig auf true, wenn minSDK oder targetSDK >= 14, also nicht für mich lösen
  2. 7

    Versuchen, mit dem folgenden code:

    webView.setInitialScale(1);
    webView.setWebChromeClient(new WebChromeClient());
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setPluginState(WebSettings.PluginState.ON);
    webView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND);
    webView.setWebViewClient(new WebViewClient());
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);
    DisplayMetrics displaymetrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
    int height = displaymetrics.heightPixels;
    int width = displaymetrics.widthPixels;
    
    Log.e(SimpleBillsConstants.SIMPLE_BILLS, width + "-" + height);
    
    String data_html = "<!DOCTYPE html><html> <head> <meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"target-densitydpi=high-dpi\" /> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"> <link rel=\"stylesheet\" media=\"screen and (-webkit-device-pixel-ratio:1.5)\" href=\"hdpi.css\" /></head> <body style=\"background:black;margin:0 0 0 0; padding:0 0 0 0;\"> <iframe style=\"background:black;\" width=' "+width+"' height='"+height+"' src=\""+VIDEO_URL+"\" frameborder=\"0\"></iframe> </body> </html> ";
    
    webView.loadDataWithBaseURL("http://vimeo.com", data_html, "text/html", "UTF-8", null);
    • Nur so eine Frage. Wenn Sie setPluginState(WebSettings.PluginState.ON); und nach werden Sie auch tun setPluginState(WebSettings.PluginState.ON_DEMAND); letztere überschreibt die frühere Rechte? Oder Sie legen eine oder das andere und nicht beide.
  3. 1

    folgenden hack für mich gearbeitet für das laden von iframes in webview.Hoffe, dass einige noch es nützlich finden,

        String webContent="your data to be loaded in webview"
    if(webContent.contains("iframe")){
                    Matcher matcher = Pattern.compile("src=\"([^\"]+)\"").matcher(webContent);
                    matcher.find();
                    String src = matcher.group(1);
                    webContent=src;
    
                    try {
                        URL myURL = new URL(src);
                        webView.loadUrl(src);
    
                    } catch (MalformedURLException e) {
                        e.printStackTrace();
                    }
                }else {
    
                    webView.loadDataWithBaseURL(null, "<style>img{display: inline;height: auto;max-width: 100%;}</style>" + webContent, "text/html", "UTF-8", null);}
    
            }
        }

Kostenlose Online-Tests