diff --git a/app/src/main/java/com/fongmi/android/tv/player/Players.java b/app/src/main/java/com/fongmi/android/tv/player/Players.java index d46ec792c..7139d0650 100644 --- a/app/src/main/java/com/fongmi/android/tv/player/Players.java +++ b/app/src/main/java/com/fongmi/android/tv/player/Players.java @@ -134,7 +134,7 @@ public class Players implements Player.Listener { private void loadWebView(String url) { handler.removeCallbacks(mTimer); - handler.postDelayed(mTimer, 15000); + handler.postDelayed(mTimer, 30000); handler.post(() -> webView.start(url)); } 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 cb3323b9c..bfdd83586 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 @@ -18,10 +18,15 @@ import com.fongmi.android.tv.player.Players; import com.fongmi.android.tv.utils.Utils; import java.io.ByteArrayInputStream; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; public class CustomWebView extends WebView { private WebResourceResponse empty; + private List keys; private String ads; public CustomWebView(@NonNull Context context) { @@ -32,6 +37,7 @@ public class CustomWebView extends WebView { @SuppressLint("SetJavaScriptEnabled") public void initSettings() { this.ads = ApiConfig.get().getAds(); + this.keys = Arrays.asList("user-agent", "referer", "origin"); this.empty = new WebResourceResponse("text/plain", "utf-8", new ByteArrayInputStream("".getBytes())); getSettings().setUseWideViewPort(true); getSettings().setDatabaseEnabled(true); @@ -58,7 +64,8 @@ public class CustomWebView extends WebView { String url = request.getUrl().toString(); String host = request.getUrl().getHost(); if (ads.contains(host)) return empty; - if (Utils.isVideoFormat(url) || request.getRequestHeaders().containsKey("Range")) Players.get().setMediaSource(request.getRequestHeaders(), url); + Map headers = request.getRequestHeaders(); + if (Utils.isVideoFormat(url) || headers.containsKey("Range")) Players.get().setMediaSource(get(headers), url); return super.shouldInterceptRequest(view, request); } @@ -74,6 +81,12 @@ public class CustomWebView extends WebView { }; } + private Map get(Map headers) { + Map news = new HashMap<>(); + for (String key : headers.keySet()) if (keys.contains(key.toLowerCase())) news.put(key, headers.get(key)); + return news; + } + public void stop() { stopLoading(); loadUrl("about:blank");