腾讯TBS在线加载浏览DOC文档
先上效果
1.导入SDK
tbs_sdk_thirdapp_xxx.jar放到app的libs目录下
2.控件使用
1.先在xml文件创建一个布局用来添加tbs的加载控件
<LinearLayoutandroid:id="@+id/privacy_linearlayout"android:layout_width="match_parent"android:layout_height="0dp"android:layout_margin="15dp"android:layout_weight="1"android:background="@drawable/shape_rect_whitesolid_gray_stroke"android:orientation="vertical"android:padding="3dp"></LinearLayout>
2.初始化布局,把tbs的加载控件添加到你创建的LinearLayout布局里
tbsReaderView = new TbsReaderView(...Activity.this, new TbsReaderView.ReaderCallback() {@Overridepublic void onCallBackAction(Integer integer, Object o, Object o1) {Log.e("tbsReaderView", "onCallBackAction: ");}});
``````java
privacy_linearlayouts = findViewById(R.id.privacy_linearlayout);
privacy_linearlayouts.addView(tbsReaderView, LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
3.然后就是关于你doc文档的一些操作了,最后调用控件去加载,然后在哪里需要展示文档直接调用这个方法就好
private void openDoc(JSONObject jsonObject) {try {byte[] FileBase64 = com.csii.newfd.utils.Base64.decode(file);if (FileBase64.length != 0) {String filePath = Util.getCacheDir(WordLoadingActivity.this).getAbsolutePath() + "/";String fileName = "privacypolicy.doc";File file = new File(filePath);//首先判断文件夹是否存在if (!file.exists()) {if (!file.mkdirs()) { // 文件夹不存在则创建文件Toast.makeText(WordLoadingActivity.this, "文件夹创建失败", Toast.LENGTH_SHORT).show();}} else {File fileWrite = new File(filePath + File.separator + fileName);// 首先判断文件是否存在if (!fileWrite.exists()) {if (!fileWrite.createNewFile()) { // 文件不存在则创建文件return; }} else {fileWrite.delete();}// 实例化对象:文件输出流FileOutputStream fileOutputStream = new FileOutputStream(fileWrite);// 写入文件fileOutputStream.write(FileBase64);// 清空输出流缓存fileOutputStream.flush();// 关闭输出流fileOutputStream.close();}Bundle bundle_doc = new Bundle();bundle_doc.putString("filePath", filePath + fileName);bundle_doc.putString("tempPath", filePath);if (!APPConfig.isQbSdkinit) {QbSdk.setDownloadWithoutWifi(true);//流量情况下也可以下载x5内核;//搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。boolean needDownload = TbsDownloader.needDownload(this, TbsDownloader.DOWNLOAD_OVERSEA_TBS);QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {@Overridepublic void onViewInitFinished(boolean arg0) {// TODO Auto-generated method stub//x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。Log.e("openDoc", "openDoc: " + "finish");if (arg0) {APPConfig.isQbSdkinit = true;boolean isReady = false;try {isReady = tbsReaderView.preOpen("DOC", false);} catch (Exception e) {e.printStackTrace();}Log.e("isReady", "initView:isReady== " + isReady);if (isReady) {dialog.cancel();tbsReaderView.openFile(bundle_doc);}}else {TbsDownloader.startDownload(...Activit.this);}if (dialog != null && dialog.isShowing()) {dialog.cancel();}}@Overridepublic void onCoreInitFinished() {// TODO Auto-generated method stubLog.e("openDoc", "onCoreInitFinished: ");}};Log.i("openDoc", "openDoc: " + "start");//x5内核初始化接口try {QbSdk.initX5Environment(getApplicationContext(), cb);} catch (Exception e) {e.printStackTrace();}try {QbSdk.setTbsListener(new TbsListener() {@Overridepublic void onDownloadFinish(int i) {if (i!=100&&!APPConfig.isQbSdkinit){TbsDownloader.startDownload(...Activity.this);Log.i("num", "onDownloadFinish: "+i); }}@Overridepublic void onInstallFinish(int i) {}@Overridepublic void onDownloadProgress(int i) {}});} catch (Exception e) {e.printStackTrace();}} else {boolean isReady = tbsReaderView.preOpen("DOC", false);Log.e("isReady", "initView:isReady== " + isReady);if (isReady) {dialog.cancel();tbsReaderView.openFile(bundle_doc);}if (dialog != null && dialog.isShowing()) {dialog.cancel();}}} else {if (dialog != null && dialog.isShowing()) {dialog.cancel();}}} catch (Exception e) {e.printStackTrace();if (dialog != null && dialog.isShowing()) {dialog.cancel();}}}
3.注意避坑
1.当前页面销毁的时候记得调用控件的停止加载方法,不然它就会一直加载,导致找不到Context空指针崩溃
try {QbSdk.initX5Environment(getApplicationContext(), cb);} catch (Exception e) {e.printStackTrace();}
@Overrideprotected void onDestroy() {super.onDestroy();tbsReaderView.onStop();TbsDownloader.stopDownload();}
2.有时候不知道因为什么会加载失败,导致页面白屏。需要加一个监听,代码上面有,这块就不贴了哈
这就差不多完事儿了,剩下如果有啥小毛病欢迎大家指正。
腾讯TBS在线加载浏览DOC文档相关推荐
- 二进制流转PDF,未能加载的pdf文档
二进制流转excel,也能转成excel,但是打开文件 表格中没有数据, 二进制流转PDF,转成PDF文件,但是打不开文件,浏览器中显示 未能加载的pdf文档 用wps也打不开显示文件损坏! 怎么弄 ...
- DL动态加载框架技术文档
DL动态加载框架技术文档 DL技术交流群:29969245 1. Android apk动态加载机制的研究 2. Android apk动态加载机制的研究(二):资源加载和activity生命周期管理 ...
- office关闭不必要的插件加载项解决文档打开慢问题
描述:office关闭不必要的插件加载项解决文档打开慢问题 步骤: 打开word.excel.ppt,需要每个都打开设置 文件->选项->加载项->管理选择COM加载项转到-> ...
- php v9 ajax 翻页,phpcms v9建站 ajax列表分页加载更多word文档教程
最新文章 https: open weixin qq com 有这个的账号,给客户开通微信小程序不需要认证费直... https: open weixin qq com 有这个的账号,给客户开通微信小 ...
- Android 用腾讯X5内核加载 word ppt 先下载在加载。
Android 用腾讯X5内核加载 word ppt 先下载在加载. 第一步 下载Sdk 导入项目 第二步 下载 pdf word到本地 1. 调用下载 DownloaderTask task ...
- 离线或在线加载pytorch、mmdetection预训练模型vgg、resnet、alexnet等
pytorch预训练模型包含多个经典网络,比如resnet系列.vgg系列和alexnet等,预训练模型可以提高网络提取特征的能力,提升训练模型的性能.下面介绍一下加载预训练模型的两种方式: 第一种是 ...
- mPaas之如何查找离线包的在线加载地址
NAMApp *app = [NAMServiceGet() findApp:@"20200100"version:nil]; 返回数据中 _fallback_host 拼上 _m ...
- osmdroid 在线加载谷歌瓦片(谷歌地图瓦片地址解释)
osmdroid作为一个开源的项目,在在线地图上还是做的不错,离线地图上也能支持多种格式,例如:zip,sqlite,.mbtiles,gemf,map,gpkg等格式.就是不能直接加载shp文件大为 ...
- Xilinx FPGA在线加载远程更新多重加载 QSPI加载方式 可通过PCIe/网口/串口等接口加载
Xilinx FPGA在线加载&远程更新&多重加载 QSPI加载方式 可通过PCIe/网口/串口等接口加载 源代码 需要的详谈 ID:6614999670814444294浪里个浪里个 ...
最新文章
- EJB的分类及其各自的功能和应用
- IOS开发入门环境搭建输出helloworld
- [TCP/IP]TCP服务端accept发生在三次握手的哪一个阶段
- 【code】Splay 模板
- ylbtech-Model-Account(通用账户模块设计)
- 一淘网挑战百度意在造势 人才储备成最大障碍
- 1盎司等于多少克 |1克等于多少盎司|盎司和克得换算关系
- 使用Acronis Disk Director Suite调整分区大小
- 程序员,建立你的商业意识
- 【前端react 粒子特效】
- 腾讯通rtx中心服务器,腾讯通(RTX)详细使用教程
- 阿里云飞天计划体验-阿里云开发者社区
- 用户登录短信验证码的实现
- MQTT协议——MQTTX工具使用
- RepeatMasker的安装与使用(一)
- Altium Designer 20 安装方法及步骤
- [STL]set存储pair并自定义排序
- C语言学习:二进制码与格雷码的转换
- Unity3D Shader系列之全息投影
- 移动端h5页面不同尺寸屏幕适配兼容方法