80,349
社区成员
发帖
与我相关
我的任务
分享
腾讯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);
}
};
LogUtil.d(TAG, "onInstallFinish -->安装X5内核进度:" + i); 这个我返回了200? 用QbSdk.canLoadX5(context)返回了 true 依旧是E/TbsReaderView: not supported by:docx?