18034727885
2026-04-14 370014cbb9ec1ef64e7e42bb4f9a12671461d8e4
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package com.xw.yunwei.ui.user.mine.protocol
 
import android.annotation.SuppressLint
import android.webkit.WebSettings
import android.webkit.WebView
import com.google.android.material.tabs.TabLayout
import com.xw.common.base.BaseActivity
import com.xw.yunwei.BR
import com.xw.yunwei.databinding.ActivityProtocolBinding
 
class ProtocolActivity: BaseActivity<ActivityProtocolBinding, ProtocolVM>() {
    override fun getBindingVariable() = BR.viewModel
 
    override fun init() {
        super.init()
        initWeb(binding.web)
        binding.back.setOnClickListener { onBackPressedHandel() }
//        val tab1 = binding.tabLayout.newTab().apply { text = "小鹏Robotaxi自动驾驶出行运维隐私政策" }
        val tab1 = binding.tabLayout.newTab().apply { text = "小鹏Robotaxi...隐私政策" }
        val tab2 = binding.tabLayout.newTab().apply { text = "第三方共享信息清单" }
        val tab3 = binding.tabLayout.newTab().apply { text = "个人信息收集清单" }
        val tab4 = binding.tabLayout.newTab().apply { text = "权限调用" }
 
        binding.tabLayout.addTab(tab1, true)
        binding.tabLayout.addTab(tab2, false)
        binding.tabLayout.addTab(tab3, false)
        binding.tabLayout.addTab(tab4, false)
 
        val getProtocol: (Int) -> Unit = { type ->
            viewModel.getProtocol(type) {
                setContent(binding.web, it)
            }
        }
        getProtocol(8)
 
        binding.tabLayout.addOnTabSelectedListener(object :
            TabLayout.OnTabSelectedListener {
            override fun onTabSelected(tab: TabLayout.Tab?) {
                tab?.let {
                    when (it.text) {
                        "用户协议" -> getProtocol(1)
                        "隐私条款" -> getProtocol(2)
                        "小鹏Robotaxi...隐私政策" -> getProtocol(8)
                        "第三方共享信息清单" -> getProtocol(9)
                        "个人信息收集清单" -> getProtocol(10)
                        "权限调用" -> getProtocol(11)
                        else -> {}
                    }
                }
            }
            override fun onTabUnselected(tab: TabLayout.Tab?) {}
            override fun onTabReselected(tab: TabLayout.Tab?) {}
        })
 
    }
 
    @SuppressLint("SetJavaScriptEnabled")
    private fun initWeb(webView: WebView) {
        //声明WebSettings子类
        val webSettings = webView.settings
        webSettings.domStorageEnabled = true //设置适应Html5
 
        //如果访问的页面中要与Javascript交互,则webview必须设置支持Javascript
        webSettings.javaScriptEnabled = true //允许js调用
        webSettings.allowFileAccess = true //在File域下,能够执行任意的JavaScript代码,同源策略跨域访问能够对私有目录文件进行访问等
        webSettings.allowContentAccess = true //是否允许在WebView中访问内容URL(Content Url),默认允许
 
        //缩放操作
        webSettings.setSupportZoom(true) //支持缩放,默认为true。是下面那个的前提。
        webSettings.builtInZoomControls = true //设置内置的缩放控件。若为false,则该WebView不可缩放
        webSettings.displayZoomControls = false //隐藏原生的缩放控件
 
        //其他细节操作
        webSettings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK //关闭webview中缓存
        webSettings.allowFileAccess = true //设置可以访问文件
        webSettings.javaScriptCanOpenWindowsAutomatically = true //支持通过JS打开新窗口
        webSettings.loadsImagesAutomatically = true //支持自动加载图片
        webSettings.defaultTextEncodingName = "utf-8" //设置编码格式
    }
 
    @SuppressLint("SetJavaScriptEnabled")
    private fun setContent(webView: WebView, content: String?) {
        content?.let {
            // 加载并显示HTML代码
            webView.loadDataWithBaseURL(
                null,
                content,
                "text/html",
                "utf-8",
                null
            )
        }
    }
}