web-dev-qa-db-de.com

WebView mit einem IFRAME-Android

Ich möchte einen HTML-Code <IFRAME> in ein WebView-Objekt laden, aber ich weiß nicht warum, er kann dies nicht.

Ich verwende folgenden Code zum Laden von <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);

Ich habe die Internet-Erlaubnis erwähnt:

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

Ich habe auch versucht, die Einstellung WebViewClient zu verwenden, wobei shouldOverrideUrlLoading immer false zurückgibt.

Aber es funktioniert einfach nicht.

Ich habe dies mit verschiedenen Websites versucht, d. H. Anderen Websites als google.com.

Ich teste dies auf Samsung Nexus S mit ICS 4.0.3

10
Shardul

So hat es geklappt.

Ich bemerkte, dass Log Cat mich warf 

WebKit-Berechtigungsproblem: EventHub.removeMessages (int what = 107) wird Nicht unterstützt, bevor WebViewCore eingerichtet ist

Um dies zu beheben, musste ich Android:hardwareAccelerated="true" im <application>-Tag von Manifest hinzufügen. 

Ich habe dies am ICS festgestellt, und es wurde festgestellt, dass das gleiche Problem nach Honeycomb-Geräten auftritt.

Ich hoffe, das hilft jemandem.

8
Shardul

Versuchen Sie es 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);
7
Vinayagam.D

der folgende Hack hat für mich zum Laden von iframes in webview gearbeitet. Hoffentlich könnte es noch nützlich sein

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

        }
    }
1
Muahmmad Tayyib