Improve webview parse

pull/102/head
FongMi 3 years ago
parent 78afcd6427
commit 5275a60a47
  1. 2
      app/src/main/java/com/fongmi/android/tv/player/Players.java
  2. 15
      app/src/main/java/com/fongmi/android/tv/ui/custom/CustomWebView.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));
}

@ -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<String> 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<String, String> 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<String, String> get(Map<String, String> headers) {
Map<String, String> 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");

Loading…
Cancel
Save