diff --git a/app/build.gradle b/app/build.gradle index 003553173..520c2a419 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,7 +11,7 @@ android { minSdk 21 targetSdk 28 versionCode 212 - versionName "20231220" + versionName "20231222" javaCompileOptions { annotationProcessorOptions { arguments = ["room.schemaLocation": "$projectDir/schemas".toString()] @@ -32,6 +32,10 @@ android { python { dimension "api" } + x86 { + dimension "abi" + ndk { abiFilters "x86" } + } armeabi_v7a { dimension "abi" ndk { abiFilters "armeabi-v7a" } diff --git a/app/libs/quickjs.aar b/app/libs/quickjs.aar index 81335c263..ffde58192 100644 Binary files a/app/libs/quickjs.aar and b/app/libs/quickjs.aar differ diff --git a/app/src/arm64_v8a/assets/go_proxy_video b/app/src/arm64_v8a/assets/go_proxy_video new file mode 100644 index 000000000..eef91124d Binary files /dev/null and b/app/src/arm64_v8a/assets/go_proxy_video differ diff --git a/app/src/main/assets/go_proxy_video b/app/src/armeabi_v7a/assets/go_proxy_video similarity index 62% rename from app/src/main/assets/go_proxy_video rename to app/src/armeabi_v7a/assets/go_proxy_video index e050ad7e8..bd9508fe4 100644 Binary files a/app/src/main/assets/go_proxy_video and b/app/src/armeabi_v7a/assets/go_proxy_video differ diff --git a/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java b/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java index fc58f04b2..2e590c123 100644 --- a/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java +++ b/app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java @@ -1,9 +1,12 @@ package com.fongmi.android.tv.ui.custom; import android.annotation.SuppressLint; +import android.app.AlertDialog; import android.content.Context; +import android.graphics.Bitmap; import android.net.http.SslError; import android.text.TextUtils; +import android.view.ViewGroup; import android.webkit.CookieManager; import android.webkit.SslErrorHandler; import android.webkit.WebResourceRequest; @@ -30,6 +33,7 @@ public class CustomWebView extends WebView { private WebResourceResponse empty; private ParseCallback callback; + private AlertDialog dialog; private Runnable timer; private String from; private String key; @@ -82,13 +86,19 @@ public class CustomWebView extends WebView { public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { String url = request.getUrl().toString(); String host = request.getUrl().getHost(); - if (TextUtils.isEmpty(host)) return empty; - if (ApiConfig.get().getAds().contains(host)) return empty; + if (TextUtils.isEmpty(host) || ApiConfig.get().getAds().contains(host)) return empty; + if (host.equals("challenges.cloudflare.com")) App.post(() -> showDialog()); Map headers = request.getRequestHeaders(); if (isVideoFormat(headers, url)) post(headers, url); return super.shouldInterceptRequest(view, request); } + @Override + public void onPageStarted(WebView view, String url, Bitmap favicon) { + super.onPageStarted(view, url, favicon); + if (dialog != null) hideDialog(); + } + @Override @SuppressLint("WebViewClientOnReceivedSslError") public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { @@ -119,12 +129,15 @@ public class CustomWebView extends WebView { onParseSuccess(headers, url); } - public void stop(boolean error) { - stopLoading(); - loadUrl("about:blank"); - App.removeCallbacks(timer); - if (error) onParseError(); - else callback = null; + private void showDialog() { + if (dialog != null) return; + if (getParent() != null) ((ViewGroup) getParent()).removeView(this); + dialog = new AlertDialog.Builder(App.activity()).setView(this).show(); + } + + private void hideDialog() { + if (dialog != null) dialog.dismiss(); + dialog = null; } private void onParseSuccess(Map headers, String url) { @@ -137,4 +150,13 @@ public class CustomWebView extends WebView { if (callback != null) callback.onParseError(); callback = null; } + + public void stop(boolean error) { + hideDialog(); + stopLoading(); + loadUrl("about:blank"); + App.removeCallbacks(timer); + if (error) onParseError(); + else callback = null; + } } diff --git a/app/src/x86/assets/go_proxy_video b/app/src/x86/assets/go_proxy_video new file mode 100644 index 000000000..46f794560 Binary files /dev/null and b/app/src/x86/assets/go_proxy_video differ