2012-01-21 118 views
9

の中にHTML <IFRAME>をロードしたいのですが、その理由がわかりません。私は<IFRAME>IFRAMEを使用したWebView android

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" /> 

私はshouldOverrideUrlLoadingWebViewClientは常にfalseを返す設定をも試してみました。

しかし、それは機能していません。

これは、異なるサイト、つまりgoogle.com以外のサイトでこれを試しました。

私はこれはそれが働いたかである4.0.3

答えて

8

、サムスンネクサスSランニングICSこれを上のテストをしています。

私は、ログの猫は私に

WebKitのアクセス許可の問題が投げていた気づい:WebViewCoreは、この問題を解決するには

を設定する前に、(107 =何int型)EventHub.removeMessagesが サポートされていないが、私はandroid:hardwareAccelerated="true"をマニフェストの<application>タグに加えなければなりませんでした。

これはICSで発生していましたが、同じ問題がHoneycombデバイスで発生することが判明しました。

これはいくつかのことを助けることを願っています。

+0

やあ、何このアンドロイドwebview.Hopeに負荷のiframeのために私のために働きました「真実」はどういう意味ですか? –

+0

@Shardul:スクリーンショット:http://i.imgur.com/OyCxlwh.png、hardwareAccelerated = trueが設定されていますが、iframeでgoogle.comページを読み込めません。 – YumYumYum

+0

こんにちは、このandroid:hardwareAccelerated = "true"プロパティはありません。アプリケーションのタグで見つける – SAndroidD

6

以下のコードで試してみてください:hardwareAccelerated =:ハック以下

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

ちょうど質問。 'setPluginState(WebSettings.PluginState.ON);'を実行した後、 'setPluginState(WebSettings.PluginState.ON_DEMAND);を実行した場合、後者は以前の権利を上書きしますか?または、どちらか一方を設定し、両方を設定しない。 –

0

は、いくつかのいずれかは、まだ見つけるかもしれないことに有用

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

     } 
    } 
関連する問題