2012-01-21 10 views
9

Quiero cargar un código HTML <IFRAME> dentro de un WebView, pero no sé por qué, no puede hacerlo.WebView con un android IFRAME

estoy usando siguiente código para cargar <IFRAME>

webView.loadData("<iframe src=\"http://www.google.com\"></iframe>", "text/html", 
       "utf-8"); 

Esto es lo que he tratado.

WebSettings webViewSettings = webView.getSettings(); 
webViewSettings.setJavaScriptCanOpenWindowsAutomatically(true); 
webViewSettings.setJavaScriptEnabled(true); 
webViewSettings.setPluginsEnabled(true); 
webViewSettings.setBuiltInZoomControls(true); 
webViewSettings.setPluginState(PluginState.ON); 

he mencionado el permiso internet:

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

también he intentado configuración del WebViewClient con shouldOverrideUrlLoading siempre volviendo falsa.

Pero simplemente no está funcionando.

He intentado esto con sitios diferentes, es decir, sitios que no sean, google.com.

estoy probando este ICS, Samsung Nexus S corriendo 4.0.3

Respuesta

8

Ésta es la forma en que funcionó.

me di cuenta Entrar gato me estaba tirando

WebKit problema de permisos: EventHub.removeMessages (int lo = 107) se no es compatible antes de la WebViewCore está configurado

Para solucionar este problema, Tuve que agregar android:hardwareAccelerated="true" en la etiqueta <application> de Manifest.

Estaba experimentando esto en ICS y se encontró que el mismo problema ocurrirá después de dispositivos Honeycomb.

Espero que esto ayude a alguien a salir.

+0

hola, lo que este androide: hardwareAccelerated = "verdadero" significa? –

+0

@Shardul: ver captura de pantalla: http://i.imgur.com/OyCxlwh.png, hardwareAccelerated = true está establecido pero iframe no puede cargar la página de google.com – YumYumYum

+0

hola esta propiedad android: hardwareAccelerated = "true" no está encontrar en la etiqueta de la aplicación – SAndroidD

6

intento con el código de abajo:

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); 
+0

Solo una pregunta. Si lo hace 'setPluginState (WebSettings.PluginState.ON);' y después de hacer 'setPluginState (WebSettings.PluginState.ON_DEMAND);' este último anulará el anterior ¿verdad? O establece uno o el otro y no ambos. –

0

este truco funcionó para mí para iframes carga en webview.Hope algunos todavía se puede encontrar útil

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

     } 
    }