解決策は、shouldOverrideUrlLoadingをオーバーライドして、各種サービスの起動を明記する。
下記例では、urlが、「mailto:」で始まった時はメールアプリを起動する暗黙的インテントを発行し、TwitterやFacebookのシェアボタンをタップした時には、画面遷移先を読み込むようにしている。
wb = (WebView) findViewById(R.id.event_wb); wb.setWebChromeClient(new WebChromeClient()); wb.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView webView, String url) { Intent intent = null; if(url.substring(0, 7).equals("mailto:")) intent = new Intent(Intent.ACTION_SENDTO, Uri.parse(url)); else if(url.contains("twitter") || url.contains("facebook")) intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); if(intent != null) { startActivity(intent); webView.reload(); } return true; } }); WebSettings settings = wb.getSettings(); settings.setJavaScriptEnabled(true);