2

通常、WebView 内でリンクがクリックされると、インテントによって Web ブラウザーまたはそのインテントをサポートする別のアクティビティが開きます。

WebView webView = new WebView(this);
setContentView(webView);
webView.loadUrl("http://google.com");

ただし、空の WebViewClient を設定しただけでは…</p>

WebView webView = new WebView(this);
webView.setWebViewClient(new WebViewClient() {});
setContentView(webView);
webView.loadUrl("http://google.com");

…リンクは WebView 内で開かれ、インテントは起動されません! どうして?

4

1 に答える 1

2

これは仕様によるものです。

http://developer.android.com/guide/webapps/webview.html#HandlingNavigation

ユーザーがクリックしたリンクを開くには、 を使用しWebViewClientてに を指定するだけです。例えば:WebViewsetWebViewClient()

WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.setWebViewClient(new WebViewClient());

それでおしまい。これで、ユーザーがクリックしたすべてのリンクが WebView に読み込まれます。

http://developer.android.com/reference/android/webkit/WebViewClient.html#shouldOverrideUrlLoading(android.webkit.WebView, java.lang.String)

WebViewClient が提供されていない場合、デフォルトで WebView は Activity Manager に URL の適切なハンドラーを選択するように要求します。WebViewClient が提供されている場合、true を返すとホスト アプリケーションが URL を処理することを意味し、false を返すと現在の WebView が URL を処理することを意味します。

shouldOverrideUrlLoadingデフォルトは返すfalse

于 2013-07-30T07:45:18.527 に答える