diff options
author | Daniel Gultsch <daniel@gultsch.de> | 2017-01-09 17:58:11 +0100 |
---|---|---|
committer | Daniel Gultsch <daniel@gultsch.de> | 2017-01-09 17:58:11 +0100 |
commit | b19572ba8cb91285da83605297982467fca4ae58 (patch) | |
tree | f6a785bfc942a6f1582d47cf9e4702a444f8af87 /src/main/java/eu/siacs/conversations/ui/adapter | |
parent | d192c529e03c9af9a4fbf51258a5c2261b423e2e (diff) |
use 7.1 web url pattern matching on old platforms as well. fixes #2228
Diffstat (limited to 'src/main/java/eu/siacs/conversations/ui/adapter')
-rw-r--r-- | src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index 3668cc54..3977dbd3 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -23,7 +23,6 @@ import android.text.style.RelativeSizeSpan; import android.text.style.StyleSpan; import android.text.util.Linkify; import android.util.DisplayMetrics; -import android.util.Patterns; import android.view.ActionMode; import android.view.Menu; import android.view.MenuItem; @@ -41,7 +40,9 @@ import android.widget.Toast; import java.lang.ref.WeakReference; import java.net.URL; import java.util.List; +import java.util.Locale; import java.util.concurrent.RejectedExecutionException; +import java.util.regex.Matcher; import java.util.regex.Pattern; import eu.siacs.conversations.Config; @@ -63,6 +64,7 @@ import eu.siacs.conversations.ui.widget.CopyTextView; import eu.siacs.conversations.ui.widget.ListSelectionManager; import eu.siacs.conversations.utils.CryptoHelper; import eu.siacs.conversations.utils.GeoHelper; +import eu.siacs.conversations.utils.Patterns; import eu.siacs.conversations.utils.UIHelper; public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextView.CopyHandler { @@ -76,6 +78,21 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie + "\\;\\/\\?\\@\\&\\=\\#\\~\\-\\.\\+\\!\\*\\'\\(\\)\\,\\_])" + "|(?:\\%[a-fA-F0-9]{2}))+"); + private static final Linkify.TransformFilter WEBURL_TRANSOFRM_FILTER = new Linkify.TransformFilter() { + @Override + public String transformUrl(Matcher matcher, String url) { + if (url == null) { + return null; + } + final String lcUrl = url.toLowerCase(Locale.US); + if (lcUrl.startsWith("http://") || lcUrl.startsWith("https://")) { + return url; + } else { + return "http://"+url; + } + } + }; + private ConversationActivity activity; private DisplayMetrics metrics; @@ -429,7 +446,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie privateMarkerIndex + 1 + nick.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); } } - Linkify.addLinks(body, Linkify.WEB_URLS); + Linkify.addLinks(body, Patterns.AUTOLINK_WEB_URL, "http", null, WEBURL_TRANSOFRM_FILTER); Linkify.addLinks(body, XMPP_PATTERN, "xmpp"); Linkify.addLinks(body, GeoHelper.GEO_URI, "geo"); viewHolder.messageBody.setAutoLinkMask(0); |