From 7c5674611c3b86baf8e978ca52edb21853e446a9 Mon Sep 17 00:00:00 2001 From: Booker Date: Wed, 3 Jun 2026 14:05:28 +0700 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=B8=85=E9=99=A4=20?= =?UTF-8?q?WebView=20=E6=8C=81=E4=B9=85=E5=AD=98=E5=82=A8=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/openim/flutter/openim/MainActivity.kt | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/android/app/src/main/kotlin/io/openim/flutter/openim/MainActivity.kt b/android/app/src/main/kotlin/io/openim/flutter/openim/MainActivity.kt index 953fc6c..68e86b6 100644 --- a/android/app/src/main/kotlin/io/openim/flutter/openim/MainActivity.kt +++ b/android/app/src/main/kotlin/io/openim/flutter/openim/MainActivity.kt @@ -178,6 +178,39 @@ class MainActivity : FlutterActivity() { } finally { webView.destroy() } + + clearWebViewPersistentStorageDirectories() + } + + private fun clearWebViewPersistentStorageDirectories() { + val webViewDataDir = File(applicationInfo.dataDir, "app_webview") + val relativePaths = listOf( + "Default/IndexedDB", + "Default/Local Storage", + "Default/Session Storage", + "Default/Service Worker", + "Default/Cache", + "Default/Code Cache", + "Default/blob_storage", + "IndexedDB", + "Local Storage", + "Session Storage", + "Service Worker", + "databases", + ) + + relativePaths.forEach { relativePath -> + deleteRecursivelyIfExists(File(webViewDataDir, relativePath)) + } + } + + private fun deleteRecursivelyIfExists(file: File) { + if (!file.exists()) { + return + } + if (!file.deleteRecursively()) { + Log.w(TAG, "Failed to delete WebView data path: ${file.absolutePath}") + } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {