使用腾讯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);
        }
    };

 

...全文
8528 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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);可以继续下载; 来个人随便回答下结贴

80,472

社区成员

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

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