diff options
Diffstat (limited to '')
-rw-r--r-- | libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconHandler.java | 26 | ||||
-rw-r--r-- | src/main/java/de/thedevstack/conversationsplus/http/HttpDownloadConnection.java | 6 |
2 files changed, 28 insertions, 4 deletions
diff --git a/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconHandler.java b/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconHandler.java index 958ac760..bc1d670d 100644 --- a/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconHandler.java +++ b/libs/emojicon/src/main/java/github/ankushsachdeva/emojicon/EmojiconHandler.java @@ -19,10 +19,16 @@ import github.ankushsachdeva.emojicon.R; import android.content.Context; import android.text.Spannable; +import android.util.Pair; +import android.util.Patterns; import android.util.SparseIntArray; +import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; import java.util.Map; +import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -1440,13 +1446,20 @@ public final class EmojiconHandler { spannable.removeSpan(oldSpans[i]); } boolean hasChanges = false; + + Matcher webUrlMatcher = Patterns.WEB_URL.matcher(spannable); + Set<Pair<Integer, Integer>> webUrls = new HashSet<Pair<Integer, Integer>>(); + while (webUrlMatcher.find()) { + webUrls.add(Pair.create(webUrlMatcher.start(), webUrlMatcher.end())); + } + Map<Pattern, Integer> emoticons = ANDROID_EMOTICONS; for (Map.Entry<Pattern, Integer> entry : emoticons.entrySet()) { Matcher matcher = entry.getKey().matcher(spannable); while (matcher.find()) { boolean set = true; for (EmojiconImageSpan span : spannable.getSpans(matcher.start(), - matcher.end(), EmojiconImageSpan.class)) + matcher.end(), EmojiconImageSpan.class)) { if (spannable.getSpanStart(span) >= matcher.start() && spannable.getSpanEnd(span) <= matcher.end()) spannable.removeSpan(span); @@ -1454,6 +1467,17 @@ public final class EmojiconHandler { set = false; break; } + } + if (set) { + // check that found emojicon is not in an web url + for (Pair<Integer, Integer> webUrl : webUrls) { + if ((matcher.start() >= webUrl.first && matcher.start() <= webUrl.second) + || (matcher.end() >= webUrl.first && matcher.end() <= webUrl.second)) { + set = false; + break; + } + } + } if (set) { spannable.setSpan(new EmojiconImageSpan(context, entry.getValue()), matcher.start(), matcher.end(), diff --git a/src/main/java/de/thedevstack/conversationsplus/http/HttpDownloadConnection.java b/src/main/java/de/thedevstack/conversationsplus/http/HttpDownloadConnection.java index 3f66be21..834539d5 100644 --- a/src/main/java/de/thedevstack/conversationsplus/http/HttpDownloadConnection.java +++ b/src/main/java/de/thedevstack/conversationsplus/http/HttpDownloadConnection.java @@ -150,7 +150,7 @@ public class HttpDownloadConnection implements Transferable { return; } file.setExpectedSize(size); - if (size <= mHttpConnectionManager.getAutoAcceptFileSize()) { + if (size != -1 && size <= mHttpConnectionManager.getAutoAcceptFileSize()) { HttpDownloadConnection.this.acceptedAutomatically = true; new Thread(new FileDownloader(interactive)).start(); } else { @@ -171,12 +171,12 @@ public class HttpDownloadConnection implements Transferable { connection.connect(); String contentLength = connection.getHeaderField("Content-Length"); if (contentLength == null) { - throw new IOException(); + return -1; } try { return Long.parseLong(contentLength, 10); } catch (NumberFormatException e) { - throw new IOException(); + return -1; } } |