解决步骤:(两条必须执行)
1. Application 中初始化,如果初始化false, 重新下载X5内核
2. 进入APP首页后,立即请求手机内存的读写权限
上代码:
1. Application 初始化
private void initTBSSDK() {
// 在调用TBS初始化、创建WebView之前进行如下配置
QbSdk.setDownloadWithoutWifi(true);
// X5内核初始化回调
QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
@Override
public void onCoreInitFinished() {
Log.i("chy123", "onCoreInitFinished");
}
@Override
public void onViewInitFinished(boolean b) {
SPUtil.getInstance().putBoolean("x5_core_finish", b);
Log.i("chy123", TbsDownloader.isDownloading() + "X5内核初始结果:" + b);
if (!b && !TbsDownloader.isDownloading()) {
QbSdk.reset(getApplicationContext());
TbsDownloader.startDownload(getApplicationContext());
}
}
};
// 下载回调的监听
QbSdk.setTbsListener(new TbsListener() {
@Override
public void onDownloadFinish(int i) {
Log.i("chy1234", "onDownloadFinish" + i);
}
@Override
public void onInstallFinish(int i) {
Log.i("chy1234", "onInstallFinish" + i);
}
@Override
public void onDownloadProgress(int i) {
Log.i("chy1234", "onDownloadProgress" + i);
}
});
// 初始化
QbSdk.initX5Environment(this, cb);
}
2. 权限申请---按照正常读写权限申请即可,无特殊要求
理由: 当前应用如果拥有读写权限,初始化成功率很高; 没有读写权限,初始化大部分都失败