1. ホーム
  2. アンドロイド

[解決済み】setWebViewClientとsetWebChromeClientの違いは何ですか?

2022-04-04 17:42:38

質問

とはどう違うのですか? setWebViewClient vs. setWebChromeClient Androidでは?

解決方法を教えてください。

からの ソースコード :

// Instance of WebViewClient that is the client callback.
private volatile WebViewClient mWebViewClient;
// Instance of WebChromeClient for handling all chrome functions.
private volatile WebChromeClient mWebChromeClient;

// SOME OTHER SUTFFF.......

/**
 * Set the WebViewClient.
 * @param client An implementation of WebViewClient.
 */
public void setWebViewClient(WebViewClient client) {
    mWebViewClient = client;
}

/**
 * Set the WebChromeClient.
 * @param client An implementation of WebChromeClient.
 */
public void setWebChromeClient(WebChromeClient client) {
    mWebChromeClient = client;
}

WebChromeClientを使用すると、Javascriptのダイアログ、ファビコン、タイトル、進行状況を処理することができます。この例を見てください。 WebViewにalert()サポートを追加する

一見したところ、違いが多すぎる WebViewClient &です。 WebChromeClient . しかし、基本的には、あまり多くの機能を必要としないが、HTMLをレンダリングするWebViewを開発する場合、単に WebViewClient . 一方、(例えば)レンダリングしているページのファビコンをロードしたい場合は、レンダリングする前に WebChromeClient オブジェクトをオーバーライドし onReceivedIcon(WebView view, Bitmap icon) .

たいていの場合、そういうことを気にしたくなければ......こうすればいいんです。

webView= (WebView) findViewById(R.id.webview); 
webView.setWebChromeClient(new WebChromeClient()); 
webView.setWebViewClient(new WebViewClient()); 
webView.getSettings().setJavaScriptEnabled(true); 
webView.loadUrl(url); 

そして、あなたのWebViewは(理論的には)すべての機能が(アンドロイドのネイティブブラウザとして)実装されていることになります。