简体   繁体   中英

Iframe not loading in webview android

I have a webview. Everything is working fine but when I am opening a page which has iframe, the iframe is not getting visible. Are there any specific settings required?

First add Hardware Acceleration and add the following lines to your webView

webView.setWebChromeClient(new WebChromeClient());

EDIT 1

It will be hard to identify the problem but try adding WebChromeClient , WebViewClient and also don't forget to enable javascript before loading URL like this

webView= (WebView) findViewById(R.id.webview); 
webView.setWebChromeClient(new WebChromeClient()); 
webView.setWebViewClient(new WebViewClient()); 
webView.getSettings().setJavaScriptEnabled(true);

EDIT 2

If you really need to load content of iframe then Try using Jsoup to load html page but you have to find the iframe and fetch the content manually.

Document doc=...
Element iframe1 = doc.select("#iframe1").first();

if (iframe1!=null) {
   Document iframeContent = Jsoup.connect(iframe1.attr("src")).get();

  }

where iframe1 is id of your iframe .

This maybe a too late answer! I hope it will help someone.

Just try to set up a desktop user agent to your webview

String DESKTOP_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36";
webView.getSettings().setUserAgentString(DESKTOP_USER_AGENT);

Can you check if you have

android:hardwareAccelerated="true"

in your AndroidManifest file, in the <application> tag of that activity.

following hack worked for me for loading iframes in webview.Hope some one still might find it useful

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

    }
}

Also do not forget to add Internet permission in your manifest file.

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

If you modify webview configurations and use loadData function to load iframe, some iframes will not work in webview. So for the solution I have implemented AdvancedWebView library.

https://github.com/delight-im/Android-AdvancedWebView

Use loadHtml(URL) method with this webview and you can pass URL in parameter and you will be able to view iframe in webview.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM