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

标签 android css url webview

我有一个加载到 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>

最佳答案

你应该像这样扩展你的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 做肮脏的 hack 并删除 target="_blank"

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

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

关于Android:如何在本地 css 文件中打开 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16715468/

相关文章:

android - Robolectric 3 GooglePlayServicesNotAvailableException

android - 如何在 Android Studio 3.0.1 IDE 中显示后退/前进按钮

html - PartialViews - 不在编辑器/显示模板中使用共享 Site.css - ASP.NET MVC 3

javascript - 隐藏/显示导航栏时,刷新页面时导航栏可见,然后滚动时导航栏消失

Django URL - 如何通过干净的 URL 传递项目列表?

python - PyQt:setStyleSheet url() 中的特殊字符

javascript - 为什么 phantomjs 代码不通过数组?

android - 如何在单个 Activity 中收集 ArrayList

android - 使用 HTML5 标签播放视频

html - Bootstrap 3 背景图像多个部分