周末好!
前言:集成腾讯TBS遇到的问题记录,网上教程比较老了,大家不能照抄。比如,为了支持64位手机,添加.so的步骤,但在新版本,这个问题都已经被修复,我们只需要去官网下载最新的jar包或者通过依赖的方式就可以了
2021/12/22更新
由于tbs需要外网下载内核,不适合我的内网场景,我就选择了开源的pdfjs,方案改为显示pdf,这个可以通过一些规避的方式(定制的终端),不使用网络成功显示pdf。而且也简单太多了
下面的问题都是通过TbsReaderView显示文件遇到的问题。都解决了,但是QbSdk.openFileReader的方法我也试了一直处于加载文档,我就没研究了、
x5内核加载时 onViewInitFinished回调一直返回false
可能是第一次加载时正在下载内核时应用退出了,下次不会继续下载的,需要清空下缓存。
//重置化sdk,这样就清除缓存继续下载了
// QbSdk.reset(this);
QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {
/**
* 内核初始化完毕
*/
@Override
public void onCoreInitFinished() {
Log.d("duo_shine", "内核初始化完毕: ");
}
/**
* WebView验证完毕
* 是否使用X5内核,true 表示可以成功使用X5内核,false 表示使用了系统内核
* @param b
*/
@Override
public void onViewInitFinished(boolean b) {
Log.d("duo_shine", "WebView验证完毕: " + b);
}
});
//监听内核下载
QbSdk.setTbsListener(new TbsListener() {
@Override
public void onDownloadFinish(int i) {
Log.d("duo_shine", "tbs内核下载完成回调: " + i);
//tbs内核下载完成回调
//但是只有i等于100才算完成,否则失败
//此时大概率可能由于网络问题
//如果失败可增加网络监听器
}
@Override
public void onInstallFinish(int i) {
Log.d("duo_shine", "内核安装完成回调: " + i);
//内核安装完成回调,通常到这里也算安装完成,但是在
}
@Override
public void onDownloadProgress(int i) {
//下载进度监听
Log.d("duo_shine", "下载进度监听: " + i);
}
});
插件加载失败,请重试 (9.0)
9.0系统增加了https的要求,如果是9.0及以上需要配置networkSecurityConfig
not supported by:doc
内核未安装完成,确认下内核是否可用,通过下面的API
boolean b = QbSdk.canLoadVideo(this);
Log.d(TAG,"是否可使用x5内核: " + b);
如果返回true,再确认下没启动使用系统内核。如果返回false。检查initX5Environment函数是否正常初始化。如果onViewInitFinished函数返回false,那么可通过下面代码试试:注意监听下下载进度,没下载成功你是不能用的。
public void onViewInitFinished(boolean b) {
Log.d("duo_shine", "WebView验证完毕: " + b);
if (!b && !QbSdk.getIsSysWebViewForcedByOuter()) { //使用系统内核可能是x5内核在之前未安装成功,重新安装
//判断是否是x5内核未下载成功,存在缓存 重置化sdk,这样就清除缓存继续下载了
QbSdk.reset(MyApplication.this);
//开始下载x5内核
TbsDownloader.startDownload(MyApplication.this);
}
}
提示文件预览失败,请用其他应用打开(10.0)
请确认文件在SD卡存在,我忘了将文件放到SD卡。我狠狠给自己一个大嘴巴子。
一些也许有用的API
// 不为null则支持x5内核
WebView webView = new WebView(this);
Log.d(TAG, "不为null则支持x5内核: " + webView.getX5WebViewExtension());
int tbsVersion = QbSdk.getTbsVersion(this);
Log.d(TAG, "当前内核版本号: " + tbsVersion);
/**
* 是否可以加载x5内核
* 未安装x5内核时返回false
* 安装一半返回false
* 安装成功返回true
*/
boolean b = QbSdk.canLoadX5(this);
Log.d(TAG, "是否可以加载X5内核: " + b);
至此,7-10.0都可以打开文档了