Android:如何在本地css文件中打开URL

时间:2013-05-23 13:39:33

标签: android css url webview

我有一个本地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>

1 个答案:

答案 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

中加载网址