2012-01-21 38 views
9

Tôi muốn tải một HTML <IFRAME> bên trong một WebView, nhưng tôi không biết tại sao, nó không thể làm như vậy.WebView với một IFRAME android

Tôi đang sử dụng đoạn mã sau để tải <IFRAME>

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

Dưới đây là những gì tôi đã cố gắng.

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

tôi đã đề cập sự cho phép internet:

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

Tôi cũng đã cố gắng thiết lập các WebViewClient với shouldOverrideUrlLoading luôn trả về false.

Nhưng nó không hoạt động.

Tôi đã thử điều này với các trang web khác nhau, tức là các trang web khác, google.com.

Tôi đang thử nghiệm tính năng này, Samsung Nexus S đang chạy ICS 4.0.3

Trả lời

8

Đây là cách nó hoạt động.

tôi nhận thấy Log mèo đã ném tôi

WebKit vấn đề phép: EventHub.removeMessages (int gì = 107) được không được hỗ trợ trước khi WebViewCore được thiết lập

Để sửa lỗi này, Tôi phải thêm android:hardwareAccelerated="true" vào <application> thẻ kê khai.

Tôi đã trải nghiệm điều này trên ICS và phát hiện thấy rằng cùng một vấn đề sẽ xảy ra sau thiết bị Tổ ong.

Hy vọng điều này sẽ giúp ích một số.

+0

hi, những gì android này: hardwareAccelerated = "true" nghĩa là gì? –

+0

@Shardul: xem ảnh chụp màn hình: http://i.imgur.com/OyCxlwh.png, hardwareAccelerated = true được đặt nhưng khung nội tuyến không thể tải trang google.com – YumYumYum

+0

hi thuộc tính android: hardwareAccelerated = "true" này không tìm trong thẻ ứng dụng – SAndroidD

6

Hãy thử với mã dưới đây:

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

Chỉ là một câu hỏi. Nếu bạn làm 'setPluginState (WebSettings.PluginState.ON);' và sau đó bạn cũng làm 'setPluginState (WebSettings.PluginState.ON_DEMAND);' cái sau sẽ ghi đè quyền cũ? Hoặc bạn đặt một hoặc khác và không phải cả hai. –

0

sau Hack làm việc cho tôi để tải iframe trong webview.Hope số một vẫn có thể tìm thấy nó hữu ích

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

     } 
    } 
Các vấn đề liên quan