Browse Source

add: 自动清除缓存

huwanxiao 1 year ago
parent
commit
93144bf24d
1 changed files with 59 additions and 3 deletions
  1. 59 3
      app/src/main/java/com/naz/sdkdemo/MainActivity.java

+ 59 - 3
app/src/main/java/com/naz/sdkdemo/MainActivity.java

@@ -19,6 +19,8 @@ import android.text.TextUtils;
 import android.util.Log;
 import android.view.KeyEvent;
 import android.view.View;
+import android.webkit.CookieManager;
+import android.webkit.CookieSyncManager;
 import android.webkit.JavascriptInterface;
 import android.webkit.WebResourceError;
 import android.webkit.WebResourceRequest;
@@ -379,7 +381,7 @@ public class MainActivity extends BaseActivity {
         Log.e("------->","-------->"+UserCache.getSerialName());
     }
     // -------------------------------------WebInterface相关方法开始----------------------------
-    String mUrl = "https://dwytb.qingyaokeji.com/index.html#/";
+    String mUrl = "https://dwytbt.qingyaokeji.com/index.html#/";
     private void checkNet() {
         if (!MyTools.isNetworkAvailable(getApplicationContext())) {
             ll_nonet.setVisibility(View.VISIBLE);
@@ -403,6 +405,18 @@ public class MainActivity extends BaseActivity {
     private AndroidInterface aIn;
 
     private class AndroidInterface {
+        /*
+         * @description: 通过这个接口传递最新的版本
+         */
+        @JavascriptInterface
+        public void pushVersion(String currentVersionCode){
+            Log.e(TAG, "pushVersion");
+            String preVersionCode = SPUtils.getString("versionCode");
+            if(!preVersionCode.equals(currentVersionCode)) {
+                // 与之前的非空版本不一致则刷新缓存
+                toRefreshData();
+            }
+        }
 
         @JavascriptInterface
         public void takePhoto(String path, String name) {
@@ -434,8 +448,7 @@ public class MainActivity extends BaseActivity {
         @JavascriptInterface
         public void refreshData() {
             Log.e(TAG, "clearCache");
-            mWebView.clearCache(false);
-            mWebView.reload();
+            runOnUiThread(() -> toRefreshData());
         }
 
         //打印
@@ -589,6 +602,49 @@ public class MainActivity extends BaseActivity {
     // -------------------------------------WebInterface相关方法结束----------------------------
 
     // -------------------------------------获取usb口状态开始-----------------------------------
+    // todo 暂时放在这里
+    private void toRefreshData() {
+        try {
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // 清除cookie
+                CookieManager.getInstance().removeAllCookies(null);
+            } else {
+                CookieSyncManager.createInstance(this);
+                CookieManager.getInstance().removeAllCookie();
+                CookieSyncManager.getInstance().sync();
+            }
+
+            mWebView.clearCache(true);
+
+            File cacheFile = new File(getCacheDir().getParent() + "/app_webview");
+            clearCacheFolder(cacheFile, System.currentTimeMillis());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        mWebView.reload();
+    }
+
+    private int clearCacheFolder(File dir, long time) {
+        int deletedFiles = 0;
+        if (dir != null && dir.isDirectory()) {
+            try {
+                for (File child : dir.listFiles()) {
+                    if (child.isDirectory()) {
+                        deletedFiles += clearCacheFolder(child, time);
+                    }
+                    if (child.lastModified() < time) {
+                        if (child.delete()) {
+                            deletedFiles++;
+                        }
+                    }
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return deletedFiles;
+    }
+
+
     private Handler sendCommandhandler = new Handler();
     private List<String> sendCommands = new ArrayList<String>(){
         {