Merge pull request #429 from okcaptain/dev

Dev
pull/430/head^2
okcaptain 2 years ago committed by GitHub
commit 1f67e45180
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 4
      app/build.gradle
  2. 44
      app/src/leanback/java/com/fongmi/android/tv/ui/dialog/WebDialog.java
  3. 23
      app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.java
  4. 3
      app/src/mobile/java/com/fongmi/android/tv/ui/dialog/InfoDialog.java
  5. 38
      app/src/mobile/java/com/fongmi/android/tv/ui/dialog/WebDialog.java

@ -126,11 +126,11 @@ dependencies {
implementation 'com.github.jahirfiquitiva:TextDrawable:1.0.3'
implementation('com.github.teamnewpipe:NewPipeExtractor:v0.23.1') { exclude group: 'org.jsoup', module: 'jsoup' }
implementation 'com.github.thegrizzlylabs:sardine-android:0.9'
implementation 'com.google.android.material:material:1.11.0'
implementation 'com.google.android.material:material:1.12.0'
implementation 'com.google.net.cronet:cronet-okhttp:0.1.0'
implementation 'com.google.zxing:core:3.3.0'
implementation 'com.guolindev.permissionx:permissionx:1.7.1'
implementation 'com.hierynomus:smbj:0.11.5'
implementation 'com.hierynomus:smbj:0.13.0'
implementation 'org.chromium.net:cronet-embedded:76.3809.111'
implementation 'org.eclipse.jetty:jetty-client:8.1.21.v20160908'
implementation 'org.eclipse.jetty:jetty-server:8.1.21.v20160908'

@ -0,0 +1,44 @@
package com.fongmi.android.tv.ui.dialog;
import android.content.DialogInterface;
import android.view.View;
import android.view.WindowManager;
import androidx.appcompat.app.AlertDialog;
import com.fongmi.android.tv.App;
import com.fongmi.android.tv.utils.ResUtil;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
public class WebDialog {
private final AlertDialog dialog;
public static WebDialog create(View view) {
return new WebDialog(view);
}
public WebDialog(View view) {
this.dialog = new MaterialAlertDialogBuilder(App.activity()).setView(view).create();
this.dialog.setOnDismissListener((DialogInterface.OnDismissListener) view);
}
public WebDialog show() {
initDialog();
return this;
}
public void dismiss() {
dialog.setOnDismissListener(null);
dialog.dismiss();
}
private void initDialog() {
WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.height = (int) (ResUtil.getScreenHeight() * 0.8f);
params.width = (int) (ResUtil.getScreenWidth() * 0.8f);
dialog.getWindow().setAttributes(params);
dialog.getWindow().setDimAmount(0);
dialog.show();
}
}

@ -1,8 +1,8 @@
package com.fongmi.android.tv.ui.custom;
import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
@ -28,6 +28,7 @@ import com.fongmi.android.tv.Setting;
import com.fongmi.android.tv.api.config.VodConfig;
import com.fongmi.android.tv.bean.Site;
import com.fongmi.android.tv.impl.ParseCallback;
import com.fongmi.android.tv.ui.dialog.WebDialog;
import com.fongmi.android.tv.utils.Sniffer;
import com.github.catvod.crawler.Spider;
import com.github.catvod.net.OkCookieJar;
@ -39,14 +40,14 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class CustomWebView extends WebView {
public class CustomWebView extends WebView implements DialogInterface.OnDismissListener {
private static final String TAG = CustomWebView.class.getSimpleName();
private static final String BLANK = "about:blank";
private WebResourceResponse empty;
private ParseCallback callback;
private AlertDialog dialog;
private WebDialog dialog;
private Runnable timer;
private boolean detect;
private String click;
@ -126,18 +127,12 @@ public class CustomWebView extends WebView {
String host = request.getUrl().getHost();
Map<String, String> headers = request.getRequestHeaders();
if (TextUtils.isEmpty(host) || VodConfig.get().getAds().contains(host)) return empty;
if (url.contains("challenges.cloudflare.com/cdn-cgi")) App.post(() -> showDialog());
if (url.contains("challenges.cloudflare.com/turnstile")) App.post(() -> showDialog());
if (detect && url.contains("player/?url=")) onParseAdd(headers, url);
else if (isVideoFormat(url)) onParseSuccess(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
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
@ -174,7 +169,8 @@ public class CustomWebView extends WebView {
private void showDialog() {
if (dialog != null || App.activity() == null) return;
if (getParent() != null) ((ViewGroup) getParent()).removeView(this);
dialog = new AlertDialog.Builder(App.activity()).setView(this).show();
dialog = new WebDialog(this).show();
App.removeCallbacks(timer);
}
private void hideDialog() {
@ -182,6 +178,11 @@ public class CustomWebView extends WebView {
dialog = null;
}
@Override
public void onDismiss(DialogInterface dialog) {
stop(true);
}
private List<String> getScript(String url) {
List<String> script = new ArrayList<>(Sniffer.getScript(Uri.parse(url)));
if (TextUtils.isEmpty(click) || script.contains(click)) return script;

@ -47,8 +47,7 @@ public class InfoDialog {
}
public InfoDialog url(String url) {
if (url.startsWith("data")) this.url = "data***";
else this.url = url;
this.url = url.startsWith("data") ? url.substring(0, Math.min(url.length(), 128)).concat("...") : url;
return this;
}

@ -0,0 +1,38 @@
package com.fongmi.android.tv.ui.dialog;
import android.content.DialogInterface;
import android.view.View;
import androidx.appcompat.app.AlertDialog;
import com.fongmi.android.tv.App;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
public class WebDialog {
private final AlertDialog dialog;
public static WebDialog create(View view) {
return new WebDialog(view);
}
public WebDialog(View view) {
this.dialog = new MaterialAlertDialogBuilder(App.activity()).setView(view).create();
this.dialog.setOnDismissListener((DialogInterface.OnDismissListener) view);
}
public WebDialog show() {
initDialog();
return this;
}
public void dismiss() {
dialog.setOnDismissListener(null);
dialog.dismiss();
}
private void initDialog() {
dialog.getWindow().setDimAmount(0);
dialog.show();
}
}
Loading…
Cancel
Save