【问题标题】:WebView autodetect links, phone numbers and mail addressesWebView 自动检测链接、电话号码和邮件地址
【发布时间】:2019-01-27 01:04:19
【问题描述】:

您好,我有一个 WebView,我在其中使用以下代码加载一些 html 文本:

        text6.loadDataWithBaseURL("","<html>\n" +
            "<head>\n" +
            "<style type=\"text/css\">\n" +
            "@font-face {\n" +
            "    font-family: MyFont;\n" +
            "    src: url(\"file:///android_asset/fonts/Brandon_light.otf\")\n" +
            "}\n" +
            "body {\n" +
            "    font-family: MyFont;\n" +
            "    font-size: medium;\n" +
            "    text-align: center;\n" +
            MessageFormat.format("link: {0};color:{1}", ColorManager.generalColorHEX, ColorManager.colorNameActivityCellHEX)+
            "}\n" +
            "</style>\n" +
            "</head>\n" +
            MessageFormat.format("<body link={0}>", ColorManager.generalColorHEX) +
            MessageFormat.format("{0}", DataManager.surveyDesc) +
            "</body>\n" +
            "</html>",DataManager.mimeType, DataManager.encoding, "");

加载的文本可能包含电子邮件地址、电话号码和链接。 WebView 是否可以识别超链接并在点击时执行正确的操作(发送电子邮件、打开链接、拨打号码...)谢谢!

【问题讨论】:

    标签: android webview


    【解决方案1】:

    你可以用类似的东西覆盖 url。

    public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url.startsWith("tel:")) { 
        Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url)); 
        startActivity(intent);
        return true;
    }
    

    邮件等也一样,只需添加所需的 url。

    【讨论】:

    • 您好,问题是,例如电话号码不是以“tel:”开头的,而是一个数字
    • 嗯,我给出的答案回答了你的问题,因为你说这个数字已经是一个超链接。如果您有权访问原始数据,只需将适当的 uri 附加到字符串。如果您不这样做,则必须进行一些字符串/模式匹配来检测电话号码,然后将其设为超链接。
    • 对不起,我弄错了数字不是超级喜欢,我怎样才能把它变成超级链接?
    • 也许最好提出一个新问题或编辑此标题。我不完全确定最好的方法,我个人可能会对字符串使用正则表达式并解析电子邮件、电话模式等。
    猜你喜欢
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 2011-05-30
    相关资源
    最近更新 更多