根据官网指引接入腾讯tbs文件浏览服务,但是仍然有些坑没说清。特别是对64位cpu架构的说明
1、添加tbs库
腾讯支持64位cpu的至少是43903版本,这里我们在app Gradle中配置。 注意:引用tbs库只需要这个就够了,不要配置jni、lib啥的。
api 'com.tencent.tbs:tbssdk:44181'
2、配置cpu架构
app module中配置CPU架构,注意这里不要配置"x86",“x86_64”,腾讯tbs暂时不支持x86架构。关于安卓CPU架构梳理参考
你不说我不说这里就是一个坑。
// 腾讯tbs插件(doc、docx)
ndk {
abiFilters "armeabi-v7a", "arm64-v8a"
}
3、配置manifest
tbs需要初始化插件,这里必须要有网络,因此manifest中配置
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
以及application节点下配置
android:networkSecurityConfig="@xml/network_security_config"
文件network_security_config内容
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
4、代码接入tbs
初始化TBS服务会下载插件,到这里了基本就不会错了。因此这块写的相对比较简洁。需要更多信息参考官网指引,或者文末的demo
QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
@Override
public void onCoreInitFinished() {
Log.e("QbSdk", "onCoreInitFinished ");
Log.e("QbSdk", "onCoreInitFinished---是否可以加载X5内核: " + QbSdk.canLoadX5(context));
}
@Override
public void onViewInitFinished(boolean arg0) {
Log.e("QbSdk", " 内核加载 " + arg0);
Log.e("QbSdk", "onViewInitFinished---是否可以加载X5内核: " + QbSdk.canLoadX5(context));
}
};
QbSdk.initX5Environment(context, cb);
然后就是打开文件
private void addTbsReaderView(String loadFilePath) {
if (mTbsReaderView != null) {
mTbsReaderView.onStop();
}
mTbsReaderView = new TbsReaderView(this, readerCallback);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
mTbsReaderView.setForceDarkAllowed(false);
}
relativeLayout.addView(mTbsReaderView,
new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.MATCH_PARENT));
String extensionName = FileUtils.getFileType(loadFilePath);
Bundle bundle = new Bundle();
bundle.putString(TbsReaderView.KEY_FILE_PATH, loadFilePath);
bundle.putString(TbsReaderView.KEY_TEMP_PATH, FileUtils.createCachePath(this));
boolean result = mTbsReaderView.preOpen(extensionName, false);
if (result) {
mTbsReaderView.openFile(bundle);
}
}
5、demo与最终效果
最终运行效果如下,demo地址
|