2012-01-21 3 views
9

Voglio caricare un codice HTML <IFRAME> all'interno di un WebView, ma non so perché, non è in grado di farlo.WebView con un IFRAME android

Sto usando seguente codice per caricare <IFRAME>

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

Ecco che cosa ho provato.

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

ho menzionato il permesso internet:

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

Ho anche provato le impostazioni WebViewClient con shouldOverrideUrlLoading ritorno sempre false.

Ma non funziona.

Ho provato questo con siti diversi, ad esempio siti diversi da, google.com.

sto testando questo ICS su, Samsung Nexus S in esecuzione 4.0.3

risposta

8

Questo è come ha funzionato.

ho notato Log gatto mi stava gettando

WebKit problema di autorizzazione: EventHub.removeMessages (int cosa = 107) è non supportato prima della WebViewCore è impostato

Per risolvere questo problema, Ho dovuto aggiungere android:hardwareAccelerated="true" nel tag <application> di Manifest.

Si è verificato questo problema su ICS e si è riscontrato che lo stesso problema si verificherà dopo i dispositivi Honeycomb.

Spero che questo possa aiutare qualcuno.

+0

ciao, che cosa questo androide: hardwareAccelerated = "vero" significa? –

+0

@Shardul: vedi screenshot: http://i.imgur.com/OyCxlwh.png, hardwareAccelerated = true è impostato ma iframe non è in grado di caricare la pagina google.com – YumYumYum

+0

ciao questo android: hardwareAccelerated = "true" proprietà non è trova nel tag applicazione – SAndroidD

6

prova con il codice qui sotto:

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 domanda. Se si imposta 'setPluginState (WebSettings.PluginState.ON);' e dopo si esegue anche 'setPluginState (WebSettings.PluginState.ON_DEMAND);' quest'ultimo sovrascriverà il precedente, giusto? O imposti l'uno o l'altro e non entrambi. –

0

seguente mod ha lavorato per me per iframe loading in webview.Hope qualcuno ancora potrebbe trovare utile

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

     } 
    }