0

我有一个加载到 WebView 中的本地 css 文件,它显示没有问题。这是一个联系屏幕,因此它有一个电话号码、电子邮件地址和一个网站。当我单击电话号码或电子邮件地址时,电话会毫无问题地打开拨号器或电子邮件应用程序(分别),但我无法打开网站的 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>
4

1 回答 1

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);

或者用这样的javascript做脏黑客并删除target =“_blank”

    webView.loadUrl("javascript:(function(){ /*code that removes attribute*/ })()");

取决于你是想在新的浏览器窗口中打开 URL,还是在你的WebView

于 2013-05-23T13:48:37.777 回答