CEEX v1.0.1版本的 MD5 值为:d20246587215ec3471b0d051724c6d34
以下内容为反编译后的 GtWebView.java 源代码,内容仅作参考
package com.geetest.sdk.dialog.views;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.RectF;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Build;
import android.os.Handler;
import android.text.TextUtils;
import android.webkit.SslErrorHandler;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.webkit.WebResourceResponse;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.geetest.sdk.au;
import com.geetest.sdk.utils.g;
import com.geetest.sdk.utils.l;
import java.util.HashMap;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
public class GtWebView extends WebView {
private static final String n = GtWebView.class.getSimpleName();
private Context a;
private au b;
private boolean c;
private String d;
private com.geetest.sdk.model.beans.b e;
private Runnable f;
private Handler g;
private int h;
private int i;
private int j;
private Paint k;
private Path l;
private RectF m;
private class b extends WebChromeClient {
private b(GtWebView gtWebView) {
}
@Override
public final void onProgressChanged(WebView webView, int i) {
String str = GtWebView.n;
l.d(str, "onProgressChanged-->newProgress: " + i);
super.onProgressChanged(webView, i);
}
}
private class c extends WebViewClient {
private GtWebView a;
public c(GtWebView gtWebView) {
this.a = gtWebView;
}
@Override
public void onLoadResource(WebView webView, String str) {
String str2 = GtWebView.n;
l.b(str2, "onLoadResource-->url: " + str);
super.onLoadResource(webView, str);
}
@Override
public void onPageFinished(WebView webView, String str) {
String str2 = GtWebView.n;
l.b(str2, "Webview-->onPageFinished-->url: " + str);
super.onPageFinished(webView, str);
}
@Override
public void onPageStarted(WebView webView, String str, Bitmap bitmap) {
String str2 = GtWebView.n;
l.b(str2, "Webview-->onPageStarted-->url: " + str);
super.onPageStarted(webView, str, bitmap);
}
@Override
public void onReceivedError(WebView webView, WebResourceRequest webResourceRequest, WebResourceError webResourceError) {
int i = Build.VERSION.SDK_INT;
if (GtWebView.this.b != null) {
String str = null;
if (i >= 21) {
try {
str = "onReceivedError-->url: " + webResourceRequest.getUrl();
l.b(GtWebView.n, "onReceivedError-->url: " + webResourceRequest.getUrl());
} catch (Exception e) {
e.printStackTrace();
}
}
if (i >= 23) {
str = "onReceivedError-->Description: " + ((Object) webResourceError.getDescription()) + "-->onReceivedError-->ErrorCode: " + webResourceError.getErrorCode();
l.b(GtWebView.n, "onReceivedError-->Description: " + ((Object) webResourceError.getDescription()));
l.b(GtWebView.n, "onReceivedError-->ErrorCode: " + webResourceError.getErrorCode());
}
if (i >= 23) {
try {
if (webResourceRequest.getUrl().toString().endsWith(".mp3") && webResourceError.getErrorCode() == -1) {
super.onReceivedError(webView, webResourceRequest, webResourceError);
return;
}
} catch (Exception unused) {
}
}
l.b(GtWebView.n, "webview加载出错 错误码:204_1 中间页地址有误或加载失败");
au auVar = GtWebView.this.b;
if (TextUtils.isEmpty(str)) {
str = "Webview-->onReceivedError: webview load error !";
}
auVar.a("204_1", str);
}
if (GtWebView.this.g != null) {
try {
GtWebView.this.g.removeCallbacks(GtWebView.this.f);
GtWebView.this.g.removeMessages(1);
} catch (Exception unused2) {
}
}
super.onReceivedError(webView, webResourceRequest, webResourceError);
}
@Override
public void onReceivedHttpError(WebView webView, WebResourceRequest webResourceRequest, WebResourceResponse webResourceResponse) {
List<String> b;
if (Build.VERSION.SDK_INT >= 21) {
try {
String uri = webResourceRequest.getUrl().toString();
String substring = uri.substring(0, uri.indexOf("?"));
String str = GtWebView.n;
l.b(str, "onReceivedHttpError-->getStatusCode: " + webResourceResponse.getStatusCode());
String str2 = GtWebView.n;
l.b(str2, "onReceivedHttpError-->url: " + uri);
if (!TextUtils.isEmpty(GtWebView.this.d) && TextUtils.equals(substring, GtWebView.this.d.substring(0, GtWebView.this.d.indexOf("?"))) && (b = GtWebView.this.e.i().b()) != null && b.size() > 1) {
GtWebView gtWebView = this.a;
StringBuilder sb = new StringBuilder();
sb.append(String.format("https://%s/static/appweb/app3-index.html", b.get(1)));
sb.append(uri.substring(uri.indexOf("?")));
gtWebView.loadUrl(sb.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
super.onReceivedHttpError(webView, webResourceRequest, webResourceResponse);
}
@Override
public void onReceivedSslError(WebView webView, SslErrorHandler sslErrorHandler, SslError sslError) {
super.onReceivedSslError(webView, sslErrorHandler, sslError);
if (GtWebView.this.b != null) {
String str = GtWebView.n;
l.b(str, "onReceivedSslError-->webview加载出错 错误码:204_2 网络证书有误, " + sslError.toString());
au auVar = GtWebView.this.b;
auVar.a("204_2", "Webview-->onReceivedSslError: " + sslError.toString());
}
if (GtWebView.this.g != null) {
try {
GtWebView.this.g.removeCallbacks(GtWebView.this.f);
GtWebView.this.g.removeMessages(1);
} catch (Exception unused) {
}
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView webView, String str) {
if (webView != null && str != null && GtWebView.this.a != null) {
try {
Intent intent = new Intent("android.intent.action.VIEW");
intent.addFlags(268435456);
intent.setData(Uri.parse(str));
GtWebView.this.a.startActivity(intent);
} catch (Exception unused) {
}
}
String str2 = GtWebView.n;
l.d(str2, "shouldOverrideUrlLoading-->url: " + str);
return true;
}
}
public GtWebView(Context context) {
super(context);
new HashMap();
this.c = false;
this.g = null;
a(context);
}
@Override
public void destroy() {
l.b(n, "GT3GtWebView-->destroy");
this.a = null;
this.b = null;
super.destroy();
}
public Handler getMyHandler() {
return this.g;
}
public Runnable getRunnable() {
return this.f;
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
if (this.c) {
loadUrl(StringUtils.SPACE);
}
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
try {
canvas.drawPath(this.l, this.k);
} catch (Exception e) {
e.printStackTrace();
}
String str = n;
l.d(str, "webView硬件加速是否开启:" + canvas.isHardwareAccelerated());
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onResume() {
super.onResume();
resumeTimers();
}
@Override
protected void onSizeChanged(int i, int i2, int i3, int i4) {
super.onSizeChanged(i, i2, i3, i4);
this.h = i;
this.i = i2;
l.b(n, "onSizeChanged-->newWidth-->" + i + "-->newHeight" + i2 + "-->oldWidth" + i3 + "-->oldHeight" + i4);
if (this.e != null) {
this.j = g.a(getContext(), this.e.d());
}
this.m = new RectF(0.0f, 0.0f, this.h, this.i);
Path path = new Path();
this.l = path;
path.setFillType(Path.FillType.INVERSE_WINDING);
Path path2 = this.l;
RectF rectF = this.m;
float f = this.j;
path2.addRoundRect(rectF, f, f, Path.Direction.CW);
}
public void setDataBean(com.geetest.sdk.model.beans.b bVar) {
this.e = bVar;
}
public void setMyHandler(Handler handler) {
this.g = handler;
}
public void setObservable(au auVar) {
this.b = auVar;
}
public void setRunnable(Runnable runnable) {
this.f = runnable;
}
public void setStaticUrl(String str) {
this.d = str;
}
public void setTimeout(int i) {
}
public void setVoice(boolean z) {
this.c = z;
}
private void a(Context context) {
this.a = context;
b(context);
}
public boolean b() {
return this.c;
}
private void b(Context context) {
Paint paint = new Paint();
this.k = paint;
paint.setColor(0);
this.k.setStyle(Paint.Style.FILL);
this.k.setAntiAlias(true);
this.k.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
}
@SuppressLint({"SetJavaScriptEnabled"})
public void a() {
WebSettings settings = getSettings();
settings.setJavaScriptEnabled(true);
settings.setLoadWithOverviewMode(true);
settings.setDomStorageEnabled(true);
settings.setAppCacheEnabled(true);
settings.setUseWideViewPort(true);
settings.setCacheMode(1);
settings.setTextZoom(100);
settings.setSavePassword(false);
settings.setAllowFileAccess(false);
if (Build.VERSION.SDK_INT >= 16) {
settings.setAllowFileAccessFromFileURLs(false);
settings.setAllowUniversalAccessFromFileURLs(false);
}
settings.setGeolocationEnabled(false);
settings.setAllowContentAccess(false);
removeJavascriptInterface("searchBoxJavaBridge_");
removeJavascriptInterface("accessibility");
removeJavascriptInterface("accessibilityTraversal");
setOverScrollMode(2);
setScrollContainer(false);
setHorizontalScrollBarEnabled(false);
setVerticalScrollBarEnabled(false);
onResume();
super.setWebChromeClient(new b());
super.setWebViewClient(new c(this));
}
}