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?
问题:
回答1:
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
.
回答2:
Can you check if you have
android:hardwareAccelerated="true"
in your AndroidManifest file, in the <application>
tag of that activity.
回答3:
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" />
回答4:
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);
回答5:
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.