package com.shsening.autouploadvideos import android.content.Context import android.util.AttributeSet import android.webkit.CookieManager import android.webkit.WebSettings import android.webkit.WebView class CustomWebView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyle: Int = 0 ) : WebView(context, attrs, defStyle) { init { settings.javaScriptEnabled = true settings.userAgentString = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36" settings.javaScriptEnabled = true settings.domStorageEnabled = true settings.databaseEnabled = true settings.setSupportZoom(true) settings.builtInZoomControls = true settings.displayZoomControls = false settings.allowFileAccess = true settings.textZoom = 50 // Set zoom level to 30% settings.useWideViewPort = true settings.loadWithOverviewMode = true settings.layoutAlgorithm = WebSettings.LayoutAlgorithm.NORMAL loadCookies() } override fun loadUrl(url: String) { super.loadUrl(url) saveCookies(url) } private fun saveCookies(url: String?) { if (url != null) { val cookieManager = CookieManager.getInstance() val cookies = cookieManager.getCookie(url) if (cookies != null) { val sharedPreferences = context.getSharedPreferences("MyCookies", Context.MODE_PRIVATE) // 保存 cookies,key 为 URL sharedPreferences.edit().putString(url, cookies).apply() } } } private fun loadCookies() { val sharedPreferences = context.getSharedPreferences("MyCookies", Context.MODE_PRIVATE) val allEntries = sharedPreferences.all val cookieManager = CookieManager.getInstance() for ((url, cookies) in allEntries) { if (cookies is String) { cookieManager.setCookie(url, cookies) } } } }