WebView с IFRAME android
Я хочу загрузить HTML <IFRAME>
внутри WebView
, но я не знаю почему, он не может этого сделать.
я использую следующий код, чтобы загрузить <IFRAME>
webView.loadData("<iframe src="http://www.google.com"></iframe>", "text/html",
"utf-8");
вот что я пробовал.
WebSettings webViewSettings = webView.getSettings();
webViewSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webViewSettings.setJavaScriptEnabled(true);
webViewSettings.setPluginsEnabled(true);
webViewSettings.setBuiltInZoomControls(true);
webViewSettings.setPluginState(PluginState.ON);
я упомянул разрешение на интернет:
<uses-permission android:name="android.permission.INTERNET" />
Я также пробовал настройки WebViewClient
С shouldOverrideUrlLoading
всегда возвращает false.
но это просто не работает.
Я пробовал это с разными сайтами, т. е. сайты, отличные от, google.com.
Я тестирую это, Samsung Nexus S работает ICS 4.0.3
3 ответов
вот как это получилось.
Я заметил, что Log cat бросал меня
проблема с разрешением WebKit: EventHub.removeMessages (int что = 107) является не поддерживается до настройки WebViewCore
чтобы исправить это, я должен был добавить android:hardwareAccelerated="true"
на <application>
тег в Манифесте.
я испытывал это на ICS и обнаружил, что та же проблема будет возникать после сотовых устройств.
надеюсь, это поможет кому-то из.
попробуйте с приведенным ниже кодом:
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);
следующий хак работал для меня для загрузки iframes в webview.Надеюсь, кто-то еще может найти его полезным
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);}
}
}