集成腾讯X5实现在线预览文档功能
2020-03-27 本文已影响0人
ziabo_yu
公司的项目有一个预览文档功能,之前接触过google的,发现比较难用,最后权衡再三,还是决定使用腾讯x5来实现,虽然有一些小bug但整体功能性实现的还是挺好的,就是网上的教程杂七杂八的很多都没有说到重点,就决定自己写一篇博客,省的新人踩坑,好的话不多说,步入正题。
- 接入腾讯x5
https://blog.csdn.net/xiangshiweiyu_hd/article/details/81814338
此处有很多博客都已经做了详细的介绍,上度娘即可,本博客探讨的并不是这个问题,因此不做赘述,附个链接吧。远作者也并没有声明转载问题,因此就直接贴了,若牵扯版权问题,直接私聊我,谢谢。 - 文件预览
由于x5只能预览下载好的文件,所以文件要预览的时候需要先进行文件下载,然后把文件path传进来就好了,具体WebView中代码如下;
private void openFile(String path) {
//通过bundle把文件传给x5,打开的事情交由x5处理
Bundle bundle = new Bundle();
//传递文件路径
bundle.putString("filePath", path);
//临时的路径
bundle.putString("tempPath", Constants.DOCUMENT_DOWNLOAD_PATH);
TbsReaderView readerView = new TbsReaderView(this, (integer, o, o1) -> {
});
//加载文件前的初始化工作,加载支持不同格式的插件
boolean b = readerView.preOpen(getFileType(path), false);
if (b) {
readerView.openFile(bundle);
}
// 往容器里添加TbsReaderView控件
frameLayout.addView(readerView);
}
xml中核心部分如下:
<FrameLayout
android:id="@+id/frameLayout"
android:background="@color/white_color"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.tencent.smtt.sdk.WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none" />
</FrameLayout>
在onDestory中要及时销毁readerView
@Override
protected void onDestroy() {
if (webView != null) {
ViewGroup parent = (ViewGroup) webView.getParent();
if (parent != null) {
parent.removeView(webView);
}
webView.clearHistory();
webView.clearCache(true);
webView.destroy();
webView = null;
}
if (readerView != null) {
readerView.onStop();
}
super.onDestroy();
}
总结
上述便是使用腾讯x5预览文件的全部代码,需要注意的是文件必须已经下载到本地,且本地使用wps等打开没有什么问题,文件预览部分情况下可能出问题,但是几率不是很大。好了,谢谢观看!若本文对您有用,请给个赞!