Skip to content

Commit f128dcb

Browse files
shiqizhenyesgraycreate
authored andcommitted
fix email issue
fix email issue
1 parent 72239e1 commit f128dcb

File tree

2 files changed

+35
-1
lines changed

2 files changed

+35
-1
lines changed

Diff for: app/src/main/java/me/ghui/v2er/util/Utils.java

+10
Original file line numberDiff line numberDiff line change
@@ -487,5 +487,15 @@ public static String extractDigits(String src) {
487487
return src.replaceAll("\\D+","");
488488
}
489489

490+
public static String cfDecodeEmail(final String encodedString) {
491+
final StringBuilder email = new StringBuilder(50);
492+
final int r = Integer.parseInt(encodedString.substring(0, 2), 16);
493+
for (int n = 2; n < encodedString.length(); n += 2) {
494+
final int i = Integer.parseInt(encodedString.substring(n, n + 2), 16) ^ r;
495+
email.append((char) i);
496+
}
497+
return email.toString();
498+
}
499+
490500
}
491501

Diff for: app/src/main/java/me/ghui/v2er/widget/richtext/RichTextConfig.java

+25-1
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@
55
import android.text.SpannableStringBuilder;
66
import android.widget.TextView;
77

8+
import org.jsoup.Jsoup;
9+
import org.jsoup.nodes.Document;
10+
import org.jsoup.nodes.Element;
11+
import org.jsoup.select.Elements;
12+
813
import me.ghui.v2er.general.Vtml;
914
import me.ghui.v2er.module.imgviewer.ImagesInfo;
1015
import me.ghui.v2er.network.APIService;
1116
import me.ghui.v2er.util.ScaleUtils;
17+
import me.ghui.v2er.util.Utils;
1218

1319

1420
/**
@@ -77,13 +83,31 @@ public RichTextConfig supportUrlClick(boolean supportUrlClick) {
7783
return this;
7884
}
7985

86+
private Document parseCfEmail(String sourceText) {
87+
Document sourceDocument = Jsoup.parseBodyFragment(sourceText);
88+
Elements cfElements = sourceDocument.select("a");
89+
for (Element cfElement : cfElements) {
90+
String cfEmail = cfElement.attr("data-cfemail");
91+
String cfHref = cfElement.attr("href");
92+
System.out.println(cfEmail);
93+
if (!cfEmail.isEmpty()) {
94+
String email = Utils.cfDecodeEmail(cfEmail.replaceAll("\"", ""));
95+
cfElement.text(email);
96+
cfElement.removeAttr("data-cfemail");
97+
cfElement.attr("href", "mailto:"+email);
98+
}
99+
// System.out.println(cfElement);
100+
}
101+
return sourceDocument;
102+
}
103+
80104
public void into(TextView textView) {
81105
if (!noImg && mImageGetter == null) {
82106
mImageHolder = new ImageHolder(textView, maxSize, mLoadingDrawable, mLoaderrorDrawable);
83107
mImageGetter = new GlideImageGetter(textView, mImageHolder);
84108
}
85109
if (sourceText == null) sourceText = "";
86-
SpannableStringBuilder spanned = (SpannableStringBuilder) Html.fromHtml(sourceText, mImageGetter, mTagHandler);
110+
SpannableStringBuilder spanned = (SpannableStringBuilder) Html.fromHtml(parseCfEmail(sourceText).toString(), mImageGetter, mTagHandler);
87111
CharSequence content = Vtml.removePadding(spanned);
88112
textView.setText(content);
89113
ImagesInfo.Images images = APIService.fruit().fromHtml(sourceText, ImagesInfo.Images.class);

0 commit comments

Comments
 (0)