riku
2025-07-02 3013b813e5df6977c0be921928f73b1a3adde290
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
package cn.flightfeather.thirdappmodule.util.tbs
 
import android.content.Context
import android.util.Log
import com.tencent.smtt.sdk.QbSdk
import com.tencent.smtt.sdk.TbsDownloader
import com.tencent.smtt.sdk.TbsListener
 
 
/**
 * 腾讯tbs 内核,目前用于浏览office文档
 * @author riku
 * Date: 2019/12/31
 */
class Tbs {
 
    companion object {
        private const val TAG = "Tbs"
 
        fun init(applicationContext: Context) {
            //搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
 
            val cb = object : QbSdk.PreInitCallback {
 
                override fun onViewInitFinished(arg0: Boolean) {
                    // TODO Auto-generated method stub
                    //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
                    println("QbSdk.initX5Environment---$arg0")
                }
 
                override fun onCoreInitFinished() {
                    // TODO Auto-generated method stub
                    println("QbSdk.initX5Environment---finished")
                }
            }
            //x5内核初始化接口
            QbSdk.setDownloadWithoutWifi(true)
 
            /* SDK内核初始化周期回调,包括 下载、安装、加载 */
            QbSdk.setTbsListener(object : TbsListener {
                /**
                 * @param stateCode 用户可处理错误码请参考[com.tencent.smtt.sdk.TbsCommonCode]
                 */
                override fun onDownloadFinish(stateCode: Int) {
                    Log.i(TAG, "onDownloadFinished: $stateCode")
                }
 
                /**
                 * @param stateCode 用户可处理错误码请参考[com.tencent.smtt.sdk.TbsCommonCode]
                 */
                override fun onInstallFinish(stateCode: Int) {
                    Log.i(TAG, "onInstallFinished: $stateCode")
                }
 
                /**
                 * 首次安装应用,会触发内核下载,此时会有内核下载的进度回调。
                 * @param progress 0 - 100
                 */
                override fun onDownloadProgress(progress: Int) {
                    Log.i(TAG, "Core Downloading: $progress")
                }
            })
 
            val needDownLoad = TbsDownloader.needDownload(applicationContext, TbsDownloader.DOWNLOAD_OVERSEA_TBS)
            if (needDownLoad) {
                TbsDownloader.startDownload(applicationContext)
            }
 
            QbSdk.initX5Environment(applicationContext, cb)
        }
    }
}