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?) {