Browse Source

修改课件缓存播放问题

Pq 1 year ago
parent
commit
5634d073c8

+ 26 - 0
student/src/main/java/com/cooleshow/student/ui/web/HtmlActivity.java

@@ -27,6 +27,7 @@ import android.webkit.ValueCallback;
 import android.webkit.WebChromeClient;
 import android.webkit.WebResourceError;
 import android.webkit.WebResourceRequest;
+import android.webkit.WebResourceResponse;
 import android.webkit.WebSettings;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
@@ -124,8 +125,11 @@ import org.json.JSONObject;
 
 import java.io.File;
 import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
 import java.lang.ref.WeakReference;
+import java.net.URLConnection;
 import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -1186,11 +1190,33 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
             }
         }
 
+        @Nullable
+        @Override
+        public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
+//            Log.i("pq", "shouldInterceptRequest" + request.getUrl());
+            Uri url = request.getUrl();
+            InputStream inputStream = WebLoadFileHelper.getInstance().parseFileRequest(url.toString());
+            if (inputStream == null) {
+                return super.shouldInterceptRequest(view, request);
+            } else {
+                String mimeType = null;
+                try {
+                    mimeType = URLConnection.guessContentTypeFromStream(inputStream);
+                    // 返回 WebResourceResponse
+                    return new WebResourceResponse(mimeType, "UTF-8", inputStream);
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            return super.shouldInterceptRequest(view, request);
+        }
+
         //处理报错信息
         @Override
         public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
             super.onReceivedError(view, request, error);
         }
+
     }
 
 

+ 0 - 3
student/src/main/java/com/cooleshow/student/widgets/helper/JsInterfaceUtils.java

@@ -143,9 +143,6 @@ public class JsInterfaceUtils extends Object {
                     } catch (Exception e) {
                     }
                     String path = RouterPath.WebCenter.ACTIVITY_HTML;
-                    if (orientation == 0) {
-                        path = RouterPath.WebCenter.ACTIVITY_HORIZONTAL_SCREEN_HTML;
-                    }
                     ARouter.getInstance().build(path)
                             .withString(WEB_URL, content.getString("url"))
                             .withBoolean("isHideTitle", isHideTitle)

+ 25 - 0
teacher/src/main/java/com/cooleshow/teacher/ui/web/HtmlActivity.java

@@ -27,6 +27,7 @@ import android.webkit.ValueCallback;
 import android.webkit.WebChromeClient;
 import android.webkit.WebResourceError;
 import android.webkit.WebResourceRequest;
+import android.webkit.WebResourceResponse;
 import android.webkit.WebSettings;
 import android.webkit.WebView;
 import android.webkit.WebViewClient;
@@ -123,8 +124,11 @@ import org.json.JSONObject;
 
 import java.io.File;
 import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
 import java.io.UnsupportedEncodingException;
 import java.lang.ref.WeakReference;
+import java.net.URLConnection;
 import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -1191,6 +1195,27 @@ public class HtmlActivity extends BaseActivity<ActivityHtml1Binding> implements
             }
         }
 
+        @Nullable
+        @Override
+        public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
+//            Log.i("pq", "shouldInterceptRequest" + request.getUrl());
+            Uri url = request.getUrl();
+            InputStream inputStream = WebLoadFileHelper.getInstance().parseFileRequest(url.toString());
+            if (inputStream == null) {
+                return super.shouldInterceptRequest(view, request);
+            } else {
+                String mimeType = null;
+                try {
+                    mimeType = URLConnection.guessContentTypeFromStream(inputStream);
+                    // 返回 WebResourceResponse
+                    return new WebResourceResponse(mimeType, "UTF-8", inputStream);
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+            return super.shouldInterceptRequest(view, request);
+        }
+
         //处理报错信息
         @Override
         public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {

+ 0 - 3
teacher/src/main/java/com/cooleshow/teacher/widgets/helper/JsInterfaceUtils.java

@@ -155,9 +155,6 @@ public class JsInterfaceUtils extends Object {
                     } catch (Exception e) {
                     }
                     String path = RouterPath.WebCenter.ACTIVITY_HTML;
-                    if (orientation == 0) {
-                        path = RouterPath.WebCenter.ACTIVITY_HORIZONTAL_SCREEN_HTML;
-                    }
                     ARouter.getInstance().build(path)
                             .withString(WEB_URL, content.getString("url"))
                             .withBoolean("isHideTitle", isHideTitle)