cshenfu
2024-12-06 a552683b403c69a2aa965d6d183d775758a9d4b2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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)
            }
        }
    }
}