我有一个本地css文件,我加载到WebView中,显示没有问题。这是一个联系人屏幕,因此它有一个电话号码,电子邮件地址和一个网站。当我点击电话号码或电子邮件地址时,手机会打开拨号器或电子邮件应用程序(分别),没有任何问题,但我无法打开网站的URL。我已将我的webView设置和我的css文件包含在
下面WebView webView = (WebView) findViewById(R.id.webView);
webView.setWebViewClient(new WebViewClient());
webView.loadUrl("file://" + htmlManager.htmlFilePath(HtmlManager.kHtmlFilenameContactUs));
CSS
<div>
<table>
<tr>
<td>
<table>
<tr>
<td>Phone:</td>
<td>123.456.7890</td>
</tr>
<tr>
<td>Email:</td>
<td><a href="mailto:customerservice@abc.com" target="_blank">customerservice@abc.com</a></td>
</tr>
<tr>
<td>Website:</td>
<td><a href="http://www.google.com" target="_blank">www.google.com</a></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</body></html>
答案 0 :(得分:0)
你应该扩展WebViewClient
这样的东西
public static class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("mailto:")) {
MailTo mt = MailTo.parse(url);
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_EMAIL, new String[] { mt.getTo() });
i.putExtra(Intent.EXTRA_SUBJECT, mt.getSubject());
i.putExtra(Intent.EXTRA_CC, mt.getCc());
i.putExtra(Intent.EXTRA_TEXT, mt.getBody());
mContext.startActivity(Intent.createChooser(i, "Send mail..."));
return true;
} else if (url.startsWith("http://")) {
view.loadUrl(url);
return true;
}
return true;
}
};
不要忘记将您的客户端设置为WebView
webView.setWebViewClient(new MyWebViewClient ());
编辑:我刚注意到URI包含属性target =“_ blank”。比你应该
webView.getSettings().setSupportMultipleWindows(true);
或者使用像这样的
来删除target =“_ blank” webView.loadUrl("javascript:(function(){ /*code that removes attribute*/ })()");
取决于您是希望在新浏览器窗口中打开网址,还是在WebView