导航菜单

页面标题

页面副标题

⁣逼‌多​多⁣ v3.6.2 - CommonWebActivity.java 源代码

正在查看: ⁣逼‌多​多⁣ v3.6.2 应用的 CommonWebActivity.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.juneRain.jy.commonlib.ui.activity.web;

import android.R;
import android.app.Activity;
import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.ClipData;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Message;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import android.webkit.DownloadListener;
import android.webkit.JavascriptInterface;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.SslErrorHandler;
import android.webkit.URLUtil;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.FrameLayout;
import android.widget.ProgressBar;
import com.bumptech.glide.load.Key;
import com.juneRain.jy.baselib.utils.ToastUtil;
import com.juneRain.jy.baselib.utils.g;
import com.juneRain.jy.baselib.utils.h;
import com.juneRain.jy.baselib.utils.j;
import com.juneRain.jy.bean.pub.CommonTypes;
import com.juneRain.jy.commonlib.R$color;
import com.juneRain.jy.commonlib.R$id;
import com.juneRain.jy.commonlib.R$layout;
import com.juneRain.jy.commonlib.R$string;
import com.juneRain.jy.commonlib.ui.activity.BaseActivity;
import com.juneRain.jy.viewmodel.HomeViewModel;
import java.io.File;
import p0.a;

public class CommonWebActivity extends BaseActivity implements View.OnClickListener {
    protected FrameLayout A;
    protected String B;
    protected WebViewClient E;
    protected c F;
    public WebView y;
    protected ProgressBar z;
    protected boolean C = false;
    protected boolean D = true;
    private boolean G = true;

    class a implements DownloadListener {

        class C0003a extends BroadcastReceiver {
            final long a;

            C0003a(long j) {
                this.a = j;
            }

            @Override
            public void onReceive(Context context, Intent intent) {
                if (intent.getAction().equals("android.intent.action.DOWNLOAD_COMPLETE") && intent.getLongExtra("extra_download_id", -1L) == this.a) {
                    ToastUtil.a("下载完成");
                    CommonWebActivity.this.v().unregisterReceiver(this);
                }
            }
        }

        a() {
        }

        @Override
        public void onDownloadStart(String str, String str2, String str3, String str4, long j) {
            if (str.startsWith("data:")) {
                ToastUtil.a("开始下载图片");
                com.juneRain.jy.baselib.utils.c.a(h.a(), str, str3, str4);
                ToastUtil.a("图片已保存到相册");
                return;
            }
            if (str.startsWith("http")) {
                String W = CommonWebActivity.W(str, str3, str4);
                if (W.endsWith(".bin")) {
                    String[] split = str4.split("/");
                    if (split.length == 2 && !split[1].equals("*")) {
                        W = W.substring(0, W.length() - 3) + split[1];
                    }
                }
                File c = g.c(new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/" + W));
                DownloadManager.Request request = new DownloadManager.Request(Uri.parse(str));
                request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, c.getName());
                request.setNotificationVisibility(1);
                request.setTitle("文件下载");
                request.setDescription("正在下载:" + c.getName());
                DownloadManager downloadManager = (DownloadManager) CommonWebActivity.this.getSystemService(HomeViewModel.click_download);
                ToastUtil.a("开始下载");
                BroadcastReceiver c0003a = new C0003a(downloadManager.enqueue(request));
                if (Build.VERSION.SDK_INT >= 33) {
                    m0.a.a(CommonWebActivity.this.v(), c0003a, new IntentFilter("android.intent.action.DOWNLOAD_COMPLETE"), 4);
                } else {
                    CommonWebActivity.this.v().registerReceiver(c0003a, new IntentFilter("android.intent.action.DOWNLOAD_COMPLETE"));
                }
            }
        }
    }

    class b extends WebViewClient {
        b() {
        }

        @Override
        public void onReceivedSslError(WebView webView, SslErrorHandler sslErrorHandler, SslError sslError) {
            sslErrorHandler.proceed();
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView webView, String str) {
            a.b bVar = CommonWebActivity.this;
            if (!str.startsWith("http") && !str.startsWith("https")) {
                try {
                    Intent intent = new Intent("android.intent.action.VIEW", Uri.parse(str));
                    intent.addCategory("android.intent.category.BROWSABLE");
                    bVar.startActivity(intent);
                    return true;
                } catch (Exception unused) {
                    ToastUtil.a(CommonWebActivity.this.getString(R$string.webview_third_app_not_install));
                    return true;
                }
            }
            String url = webView.getUrl();
            if (TextUtils.isEmpty(url) || url.contains(Uri.parse(str).getHost())) {
                webView.loadUrl(str);
                return true;
            }
            f0.a.a(CommonWebActivity.this.v(), str);
            return true;
        }
    }

    private class c extends WebChromeClient {
        public ValueCallback a;

        public ValueCallback f67b;
        boolean c = false;

        private Activity f68d;

        public c(Activity activity) {
            this.f68d = activity;
        }

        @Override
        public boolean onCreateWindow(WebView webView, boolean z, boolean z2, Message message) {
            return super.onCreateWindow(webView, z, z2, message);
        }

        @Override
        public boolean onJsAlert(WebView webView, String str, String str2, JsResult jsResult) {
            return super.onJsAlert(webView, str, str2, jsResult);
        }

        @Override
        public boolean onJsConfirm(WebView webView, String str, String str2, JsResult jsResult) {
            return super.onJsConfirm(webView, str, str2, jsResult);
        }

        @Override
        public boolean onJsPrompt(WebView webView, String str, String str2, String str3, JsPromptResult jsPromptResult) {
            return super.onJsPrompt(webView, str, str2, str2, jsPromptResult);
        }

        @Override
        public void onProgressChanged(WebView webView, int i) {
            CommonWebActivity.this.z.setProgress(i);
            if (i >= 90 && !this.c) {
                this.c = true;
            }
            if (i == 100) {
                CommonWebActivity.this.z.setVisibility(8);
                CommonWebActivity.this.t();
            }
        }

        @Override
        public void onReceivedTitle(WebView webView, String str) {
            super.onReceivedTitle(webView, str);
            CommonWebActivity commonWebActivity = CommonWebActivity.this;
            if (commonWebActivity.D && commonWebActivity.C) {
                commonWebActivity.c.setTitle(str);
            }
        }

        @Override
        public boolean onShowFileChooser(WebView webView, ValueCallback valueCallback, WebChromeClient.FileChooserParams fileChooserParams) {
            this.f67b = valueCallback;
            Intent intent = new Intent("android.intent.action.GET_CONTENT");
            intent.addCategory("android.intent.category.OPENABLE");
            intent.setType(CommonTypes.mediaTypeImg);
            this.f68d.startActivityForResult(Intent.createChooser(intent, "File Chooser"), 1);
            return true;
        }
    }

    public class d {
        Context a;

        d(Context context) {
            this.a = context;
        }

        @JavascriptInterface
        public void method(String str, String str2) {
        }
    }

    public static String W(String str, String str2, String str3) {
        if (str3.equals("application/octet-stream")) {
            str3 = null;
        }
        return URLUtil.guessFileName(str, str2, str3);
    }

    @Override
    public boolean D() {
        return false;
    }

    @Override
    public boolean G() {
        return false;
    }

    @Override
    public boolean H() {
        return this.D;
    }

    @Override
    public boolean I() {
        return this.D;
    }

    public void T() {
        this.y.addJavascriptInterface(new d(this), "appInterface");
    }

    protected WebViewClient U() {
        return new b();
    }

    protected int V() {
        return R$layout.common_web_activity;
    }

    protected void X() {
        this.D = getIntent().getBooleanExtra("hasToolbar", true);
        overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
        k0.a.b(this, false);
        setContentView(V());
        this.y = (WebView) findViewById(R$id.common_web);
        this.z = (ProgressBar) findViewById(R$id.web_progress);
        this.A = (FrameLayout) findViewById(R$id.float_frame_lay);
        boolean booleanExtra = getIntent().getBooleanExtra("enableLongClick", true);
        this.G = booleanExtra;
        this.y.setLongClickable(booleanExtra);
    }

    protected void Y() {
        Z();
        this.y.setHorizontalScrollBarEnabled(false);
        this.y.setVerticalScrollBarEnabled(false);
        this.y.setScrollBarStyle(33554432);
        WebViewClient U = U();
        this.E = U;
        this.y.setWebViewClient(U);
        c cVar = new c(this);
        this.F = cVar;
        this.y.setWebChromeClient(cVar);
        this.y.setDownloadListener(new a());
    }

    public void Z() {
        WebSettings settings = this.y.getSettings();
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
        settings.setJavaScriptEnabled(true);
        settings.setJavaScriptEnabled(true);
        settings.setSupportZoom(true);
        settings.setBuiltInZoomControls(false);
        settings.setDefaultTextEncodingName(Key.STRING_CHARSET_NAME);
        settings.setCacheMode(-1);
        settings.setAllowFileAccess(true);
        settings.setDomStorageEnabled(true);
        settings.setDatabaseEnabled(true);
        settings.setUseWideViewPort(true);
        settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        settings.setMixedContentMode(0);
    }

    public void onActivityResult(int i, int i3, Intent intent) {
        super/*androidx.fragment.app.FragmentActivity*/.onActivityResult(i, i3, intent);
        if (i == 1) {
            if (this.F.a != null) {
                Uri data = (intent == null || i3 != -1) ? null : intent.getData();
                if (data != null) {
                    String b2 = g.b(getApplicationContext(), data);
                    if (b2 != null) {
                        this.F.a.onReceiveValue(Uri.fromFile(new File(b2)));
                    } else {
                        ToastUtil.a(getString(R$string.base_file_open_fail));
                    }
                } else {
                    this.F.a.onReceiveValue(null);
                }
            }
            ValueCallback valueCallback = this.F.f67b;
            if (valueCallback != null) {
                if (intent == null || i3 != -1) {
                    valueCallback.onReceiveValue(null);
                } else if (intent.getData() != null) {
                    this.F.f67b.onReceiveValue(new Uri[]{intent.getData()});
                } else if (intent.getClipData() != null) {
                    ClipData clipData = intent.getClipData();
                    Uri[] uriArr = new Uri[clipData.getItemCount()];
                    for (int i4 = 0; i4 < clipData.getItemCount(); i4++) {
                        uriArr[i4] = clipData.getItemAt(i4).getUri();
                    }
                    this.F.f67b.onReceiveValue(uriArr);
                } else {
                    this.F.f67b.onReceiveValue(null);
                }
            }
            c cVar = this.F;
            cVar.a = null;
            cVar.f67b = null;
        }
    }

    @Override
    public void onClick(View view) {
    }

    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        X();
        if (this.D) {
            String stringExtra = getIntent().getStringExtra("title");
            if (stringExtra == null || stringExtra.isEmpty()) {
                this.C = true;
            } else {
                this.C = false;
                this.c.setTitle(stringExtra);
            }
        }
        try {
            this.B = getIntent().getExtras().getString("url");
        } catch (Exception e) {
            e.printStackTrace();
        }
        Y();
        T();
        this.y.loadUrl(this.B);
    }

    @Override
    public void onDestroy() {
        try {
            WebView webView = this.y;
            if (webView != null) {
                ViewParent parent = webView.getParent();
                if (parent != null) {
                    ((ViewGroup) parent).removeView(this.y);
                }
                this.y.stopLoading();
                this.y.getSettings().setJavaScriptEnabled(false);
                this.y.clearHistory();
                this.y.clearView();
                this.y.removeAllViews();
                this.y.destroy();
            }
        } catch (Exception unused) {
        }
        super.onDestroy();
        j.e(this);
        j.g();
    }

    @Override
    public boolean onKeyDown(int i, KeyEvent keyEvent) {
        if (i != 4 || !this.y.canGoBack()) {
            return super.onKeyDown(i, keyEvent);
        }
        this.y.goBack();
        return true;
    }

    @Override
    public int x() {
        return R$color.black;
    }

    @Override
    public boolean y() {
        return false;
    }

    @Override
    public boolean z() {
        return false;
    }
}