十八摸 v1.2.0版本的 MD5 值为:124d0569983b1a978779bc818002364d
以下内容为反编译后的 MarkdownView.java 源代码,内容仅作参考
package es.dmoral.markdownview;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.support.v4.media.Ctry;
import android.util.AttributeSet;
import android.util.Base64;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import l5.Cfor;
public class MarkdownView extends WebView {
public static final int f10081super = 0;
public l5.Cdo f10082break;
public String f10083catch;
public boolean f10084class;
public boolean f10085const;
public Cif f10086final;
public class Cdo extends WebViewClient {
public Cdo() {
}
@Override
public void onPageFinished(WebView webView, String str) {
String str2;
BufferedInputStream bufferedInputStream;
StringBuilder sb;
super.onPageFinished(webView, str);
if (str.equals("file:///android_asset/html/container.html")) {
MarkdownView markdownView = MarkdownView.this;
String str3 = markdownView.f10083catch;
Matcher matcher = Pattern.compile("!\\[(.*)\\]\\((.*)\\)").matcher(str3);
if (matcher.find()) {
String group = matcher.group(2);
if (!(group.startsWith("http://") || group.startsWith("https://"))) {
?? r11 = ".jpg";
if (group.endsWith(".png") || group.endsWith(".jpg") || group.endsWith(".jpeg") || group.endsWith(".gif")) {
if (group.endsWith(".png")) {
str2 = "data:image/png;base64,";
} else if (group.endsWith(".jpg") || group.endsWith(".jpeg")) {
str2 = "data:image/jpg;base64,";
} else {
str2 = group.endsWith(".gif") ? "data:image/gif;base64," : "";
}
if (!str2.isEmpty()) {
File file = new File(group);
int length = (int) file.length();
byte[] bArr = new byte[length];
try {
try {
bufferedInputStream = new BufferedInputStream(new FileInputStream(file));
try {
bufferedInputStream.read(bArr, 0, length);
try {
bufferedInputStream.close();
r11 = bufferedInputStream;
} catch (IOException e7) {
e = e7;
sb = new StringBuilder();
sb.append("IOException:");
sb.append(e);
Log.e("MarkdownView", sb.toString());
StringBuilder m168new = Ctry.m168new(str2);
m168new.append(Base64.encodeToString(bArr, 2));
str3 = str3.replace(group, m168new.toString());
l5.Cdo cdo = markdownView.f10082break;
markdownView.evaluateJavascript(String.format("render('%s', %b, '%s', '%s', %d)", str3.replace("\n", "\\\\n").replace("'", "\\'").replace("\r", ""), Boolean.valueOf(markdownView.f10085const), cdo.f12639do, cdo.f12640if, 0), new Cfor(markdownView));
}
} catch (FileNotFoundException e8) {
e = e8;
Log.e("MarkdownView", "FileNotFoundException:" + e);
r11 = bufferedInputStream;
if (bufferedInputStream != null) {
try {
bufferedInputStream.close();
r11 = bufferedInputStream;
} catch (IOException e9) {
e = e9;
sb = new StringBuilder();
sb.append("IOException:");
sb.append(e);
Log.e("MarkdownView", sb.toString());
StringBuilder m168new2 = Ctry.m168new(str2);
m168new2.append(Base64.encodeToString(bArr, 2));
str3 = str3.replace(group, m168new2.toString());
l5.Cdo cdo2 = markdownView.f10082break;
markdownView.evaluateJavascript(String.format("render('%s', %b, '%s', '%s', %d)", str3.replace("\n", "\\\\n").replace("'", "\\'").replace("\r", ""), Boolean.valueOf(markdownView.f10085const), cdo2.f12639do, cdo2.f12640if, 0), new Cfor(markdownView));
}
}
StringBuilder m168new22 = Ctry.m168new(str2);
m168new22.append(Base64.encodeToString(bArr, 2));
str3 = str3.replace(group, m168new22.toString());
l5.Cdo cdo22 = markdownView.f10082break;
markdownView.evaluateJavascript(String.format("render('%s', %b, '%s', '%s', %d)", str3.replace("\n", "\\\\n").replace("'", "\\'").replace("\r", ""), Boolean.valueOf(markdownView.f10085const), cdo22.f12639do, cdo22.f12640if, 0), new Cfor(markdownView));
} catch (IOException e10) {
e = e10;
Log.e("MarkdownView", "IOException:" + e);
r11 = bufferedInputStream;
if (bufferedInputStream != null) {
try {
bufferedInputStream.close();
r11 = bufferedInputStream;
} catch (IOException e11) {
e = e11;
sb = new StringBuilder();
sb.append("IOException:");
sb.append(e);
Log.e("MarkdownView", sb.toString());
StringBuilder m168new222 = Ctry.m168new(str2);
m168new222.append(Base64.encodeToString(bArr, 2));
str3 = str3.replace(group, m168new222.toString());
l5.Cdo cdo222 = markdownView.f10082break;
markdownView.evaluateJavascript(String.format("render('%s', %b, '%s', '%s', %d)", str3.replace("\n", "\\\\n").replace("'", "\\'").replace("\r", ""), Boolean.valueOf(markdownView.f10085const), cdo222.f12639do, cdo222.f12640if, 0), new Cfor(markdownView));
}
}
StringBuilder m168new2222 = Ctry.m168new(str2);
m168new2222.append(Base64.encodeToString(bArr, 2));
str3 = str3.replace(group, m168new2222.toString());
l5.Cdo cdo2222 = markdownView.f10082break;
markdownView.evaluateJavascript(String.format("render('%s', %b, '%s', '%s', %d)", str3.replace("\n", "\\\\n").replace("'", "\\'").replace("\r", ""), Boolean.valueOf(markdownView.f10085const), cdo2222.f12639do, cdo2222.f12640if, 0), new Cfor(markdownView));
}
} catch (Throwable th) {
th = th;
if (r11 != 0) {
try {
r11.close();
} catch (IOException e12) {
Log.e("MarkdownView", "IOException:" + e12);
}
}
throw th;
}
} catch (FileNotFoundException e13) {
e = e13;
bufferedInputStream = null;
} catch (IOException e14) {
e = e14;
bufferedInputStream = null;
} catch (Throwable th2) {
th = th2;
r11 = 0;
if (r11 != 0) {
}
throw th;
}
StringBuilder m168new22222 = Ctry.m168new(str2);
m168new22222.append(Base64.encodeToString(bArr, 2));
str3 = str3.replace(group, m168new22222.toString());
}
}
}
}
l5.Cdo cdo22222 = markdownView.f10082break;
markdownView.evaluateJavascript(String.format("render('%s', %b, '%s', '%s', %d)", str3.replace("\n", "\\\\n").replace("'", "\\'").replace("\r", ""), Boolean.valueOf(markdownView.f10085const), cdo22222.f12639do, cdo22222.f12640if, 0), new Cfor(markdownView));
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView webView, String str) {
if (MarkdownView.this.f10084class) {
MarkdownView.this.getContext().startActivity(new Intent("android.intent.action.VIEW", Uri.parse(str)));
return true;
}
return false;
}
}
public interface Cif {
void mo1746do();
void mo1747if();
}
public MarkdownView(Context context) {
super(context);
this.f10084class = true;
this.f10085const = true;
m4157do();
}
@SuppressLint({"SetJavaScriptEnabled"})
public final void m4157do() {
this.f10082break = new l5.Cdo("css/bootstrap.css", "css/highlight/github.css");
getSettings().setJavaScriptEnabled(true);
getSettings().setAllowUniversalAccessFromFileURLs(true);
getSettings().setMixedContentMode(0);
setWebViewClient(new Cdo());
}
@Override
public void onDetachedFromWindow() {
this.f10086final = null;
super.onDetachedFromWindow();
}
public void setCodeScrollEnabled(boolean z6) {
this.f10085const = z6;
}
public void setCurrentConfig(l5.Cdo cdo) {
this.f10082break = cdo;
}
public void setOnMarkdownRenderingListener(Cif cif) {
this.f10086final = cif;
}
public void setOpenUrlInBrowser(boolean z6) {
this.f10084class = z6;
}
public MarkdownView(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
this.f10084class = true;
this.f10085const = true;
m4157do();
}
public MarkdownView(Context context, AttributeSet attributeSet, int i7) {
super(context, attributeSet, i7);
this.f10084class = true;
this.f10085const = true;
m4157do();
}
}