使用腾讯X5内核问题

X_LK 2020-07-08 04:39:34

腾讯X5首次初始化时会自动下载和安装X5内核,但是当处于下载阶段遇到问题下载中断后,重启程序也无法再次正常下载和安装,想请教有什么方法再次进行下载安装?


public class MyApplication extends Application {

	private static final String TAG = "MyApplication-->";

    @Override

    public void onCreate() {

        super.onCreate();

        LogUtil.i(TAG, "Application onCreate -->");

        boolean b = QbSdk.canLoadX5(getApplicationContext());

        LogUtil.i(TAG, "是否可以加载X5内核 -->" + b);

        QbSdk.setDownloadWithoutWifi(true);

        QbSdk.setTbsListener(new TbsListener() {

            @Override

            public void onDownloadFinish(int i) {

                LogUtil.d(TAG, "onDownloadFinish -->下载X5内核完成:" + i);

            }

            @Override

            public void onInstallFinish(int i) {

                LogUtil.d(TAG, "onInstallFinish -->安装X5内核进度:" + i);

            }

            @Override

            public void onDownloadProgress(int i) {

                LogUtil.d(TAG, "onDownloadProgress -->下载X5内核进度:" + i);

            }

        });

        QbSdk.initX5Environment(getApplicationContext(), cb);

    }

	

	QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {

        @Override

        public void onCoreInitFinished() {

            //x5内核初始化完成回调接口,此接口回调并表示已经加载起来了x5,有可能特殊情况下x5内核加载失败,切换到系统内核。

            LogUtil.i(TAG, " onCoreInitFinished-->");

        }

        @Override

        public void onViewInitFinished(boolean b) {

            //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。

            LogUtil.d(TAG, "onViewInitFinished: 加载X5内核是否成功: " + b);

        }

    };

}	

 


log日志打印(说明情况):

 

 


//初始化的时候,手动进行断网停止下载X5内核

I/MyApplication-->: Application onCreate -->

I/MyApplication-->: 是否可以加载X5内核 -->false

I/MyApplication-->:  onCoreInitFinished-->

D/MyApplication-->: onViewInitFinished: 加载X5内核是否成功: false

D/MyApplication-->: onDownloadProgress -->下载X5内核进度:29

D/MyApplication-->: onDownloadProgress -->下载X5内核进度:61

    

//重启后日志打印

I/MyApplication-->: Application onCreate -->

I/MyApplication-->: 是否可以加载X5内核 -->false

I/MyApplication-->:  onCoreInitFinished-->

D/MyApplication-->: onViewInitFinished: 加载X5内核是否成功: false  

 

 最后的使用方式:


    private void loadX5() {
        boolean canLoadX5 = QbSdk.canLoadX5(appContext);
        LogUtils.i("x5内核  是否可以加载X5内核 -->" + canLoadX5);
        if (canLoadX5) {
            initX5();
        } else {
            QbSdk.setDownloadWithoutWifi(true);
            QbSdk.setTbsListener(new TbsListener() {
                @Override
                public void onDownloadFinish(int errCode) {
                    LogUtils.i("x5内核 onDownloadFinish -->下载X5内核状态:" + errCode);
                }

                @Override
                public void onInstallFinish(int errCode) {
                    LogUtils.i("x5内核 onInstallFinish -->安装X5内核:" + errCode);
//                    if (i == TbsListener.ErrorCode.INSTALL_SUCCESS_AND_RELEASE_LOCK) {
                    if (errCode == TbsListener.ErrorCode.DOWNLOAD_INSTALL_SUCCESS) {
                        initX5();
                    }
                }

                @Override
                public void onDownloadProgress(int progress) {
                    LogUtils.i("x5内核 onDownloadProgress -->下载X5内核进度:" + progress);
                }
            });
            new Thread(new Runnable() {
                @Override
                public void run() {
                    LogUtils.i("x5内核  开始下载X5内核");
                    TbsDownloader.startDownload(appContext);
                }
            }).start();
        }
    }

    public void initX5() {
        LogUtils.i("x5内核 initX5 ");
        /* **** **  方式一  ** **** */
        //目前线上sdk存在部分情况下initX5Enviroment方法没有回调,您可以不用等待该方法回调直接使用x5内核。
//        QbSdk.initX5Environment(appContext, cb);
        /* **** **  方式二  ** **** */
        //如果您需要得知内核初始化状态,可以使用QbSdk.preinit接口代替
        QbSdk.preInit(appContext, cb);
    }

    public QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
        @Override
        public void onCoreInitFinished() {
            //x5内核初始化完成回调接口,此接口回调并表示已经加载起来了x5,有可能特殊情况下x5内核加载失败,切换到系统内核。
            LogUtils.i("x5内核 onCoreInitFinished-->");
        }

        @Override
        public void onViewInitFinished(boolean b) {
            //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
            LogUtils.i("x5内核 onViewInitFinished: 加载X5内核是否成功: " + b);
        }
    };

 

...全文
8302 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_46058426 2022-04-12
  • 打赏
  • 举报
回复

LogUtil.d(TAG, "onInstallFinish -->安装X5内核进度:" + i); 这个我返回了200? 用QbSdk.canLoadX5(context)返回了 true 依旧是E/TbsReaderView: not supported by:docx?

X_LK 2022-04-12
  • 举报
回复
@qq_46058426 收到返回码200后,调用 QbSdk.preInit(appContext, cb);方法
qq_46058426 2022-04-13
  • 举报
回复
@X_LK QbSdk.initX5Environment(context, object : PreInitCallback { override fun onCoreInitFinished() { Log.d(TAG, "onCoreInitFinished() called") Log.d("QbSdk", " x5 内核加载成功 "); Log.d("QbSdk", " x5 内核版本号:"+QbSdk.getTbsVersion(context)); } 我这返回true了 版本号也输出了 45947 还是byTbsReaderView: not supported by:docx?
X_LK 2022-04-14
  • 举报
回复
@qq_46058426 onViewInitFinished 返回的是true吗?
4条回复
boatwater 应用层 2020-07-10
  • 打赏
  • 举报
回复
.. 嗯嗯ddd
X_LK 2020-07-10
  • 打赏
  • 举报
回复
自问自答:使用TbsDownloader.startDownload(mContext);可以继续下载; 来个人随便回答下结贴
本课程为Django第九季课程:Web项目发布到腾讯云     本季课程主要Web项目发布到腾讯云,内容包含:Web项目发布的总体介绍、simple_server、WSGI协议、uWSGI服务器、发布成功后的整体架构、源码发布前的基本配置、使用Git把代码发布到Gitee、腾讯云主机的购买和初始化、准备腾讯云主机的mysql数据库环境、准备腾讯云主机redis数据库环境、准备腾讯云主机的Python运行环境、完成云主机的数据和运行测试、安装并配置uWSGI服务器、安装并配置Nginx服务器等等内容。      本案例完整的演示了项目实现过程,虽然不复杂,但涉及的内容非常多,特别是前后端交互的时候,有诸多的坑等着你去踩,好在王老师全程代码呈现,带着大家一起填坑,大大提高学习效率的同时,也培养了大家良好的代码习惯,希望大家一起跟着王进老师学习Python开发。 课程目标:本系列课程是从零基础开始并深入讲解Django,最终学会使用Django框架开发企业级的项目。课程知识点详细,项目实战贴近企业需求。本系列课程除了非常详细的讲解Django框架本身的知识点以外,还讲解了web开发中所需要用到的技术,学完本系列课程后,您将独立做出一个具有后台管理系统,并且前端非常优美实用的网站。对于从事一份Python Web开发相关的工作简直轻而易举。 

80,349

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧