Iframe not loading in webview android

前端 未结 5 415
终归单人心
终归单人心 2021-01-01 00:34

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?

相关标签:
5条回答
  • 2021-01-01 00:34

    Can you check if you have

    android:hardwareAccelerated="true"
    

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

    0 讨论(0)
  • 2021-01-01 00:43

    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" />
    
    0 讨论(0)
  • 2021-01-01 00:45

    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);
    
    0 讨论(0)
  • 2021-01-01 00:50

    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.

    0 讨论(0)
  • 2021-01-01 00:52

    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.

    0 讨论(0)
提交回复
热议问题