Предотвращение автоматического связывания электронных писем и URL-адресов в Android WebView

У меня есть WebView, который может содержать данные, которые, кажется, получают "автосвязь". Что-то, похожее на адрес электронной почты, становится кликабельным, хотя теперь оно находится внутри тега <a> или имеет атрибут onclick. Как отключить эту автоматическую привязку?

Я просмотрел документы WebView, а также документы WebSettings, но, похоже, не нашел ничего, что упоминало бы об этом поведении.

замещающий текст http://beautifulpixel.com/assets/5554_Fast-20100706-110228.png


person Alex Wayne    schedule 06.07.2010    source источник
comment
Почему вы хотите подавить это поведение? Кажется вполне разумным, что все адреса электронной почты на устройстве, основной целью которого является общение, должны быть доступны для отправки по электронной почте...   -  person Dan Davies Brackett    schedule 06.07.2010
comment
У меня есть 100% контроль над содержимым этого WebView. и я не хочу, чтобы он делал то, что я ему не говорю. Если я хочу, чтобы адрес электронной почты был кликабельным, я сделаю это так. Кроме того, в моей настройке он выделяется, но переопределяется обработчиками событий, которые не позволяют ему срабатывать здесь. В основном я хочу явного контроля над этим поведением. Тем более, что он также делает подсветку крестовины. А UIWebView в iPhone позволяет его отключить: developer.apple.com/iphone/library/documentation/uikit/   -  person Alex Wayne    schedule 06.07.2010


Ответы (5)


Я знаю, что это немного поздно, но для дальнейшего использования это может быть решение, которое будет работать независимо от того, создаются ли ссылки автоматически или определяются в теге <a>.

myWebView.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // return true; // will disable all links

        // disable phone and email links
        if(url.startsWith("mailto") || url.startsWith("tel")) {
            return true;
        }

        // leave the decision to the webview
        return false;
    }
});
person Paaske    schedule 22.02.2012
comment
Спасибо, это немного помогло мне. - person draksia; 14.05.2012

Чтобы сделать все адреса электронной почты, добавьте метатег:

<meta name="format-detection" content="email=no" />

Вы также можете отключить определение физического адреса и телефона:

<meta name="format-detection" content="telephone=no" />
<meta name="format-detection" content="address=no" />

Однако в моем собственном приложении мне понадобилось решение PhD, чтобы предотвратить привязку только одного электронного письма.

person Michael    schedule 16.05.2012

У меня была такая же проблема, пробовал так:

<a onClick=\"return false;\">[email protected]</a>

это не сработало.

Затем попробовал это:

<a href='javascript:void(0);'>800-644-9737</a>

и это сделало свое дело

person PhD    schedule 29.01.2012

Привет, Squeaggy, почему вы хотите исключить эту функциональность из веб-просмотра, но хитрым способом будет включение onClick="return false;" в тег привязки, который содержит адрес электронной почты или URL-адрес.

<a onClick=\"return false;\">[email protected]</a>
person Jorgesys    schedule 06.07.2010

Похоже, это неизменная функциональность WebView.

Вы можете сделать противоположное этому Есть ли какой-либо способ иметь URL-адреса и телефонные номера автоматической ссылки WebView в Android? и создать средство удаления ссылок javascript (вместо предлагаемого там инжектора ссылок).

Не уверен, что еще подойдет для этого.

person kiswa    schedule 06.07.2010