先上效果

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文档相关推荐

  1. 二进制流转PDF,未能加载的pdf文档

    二进制流转excel,也能转成excel,但是打开文件 表格中没有数据, 二进制流转PDF,转成PDF文件,但是打不开文件,浏览器中显示 未能加载的pdf文档 用wps也打不开显示文件损坏! 怎么弄 ...

  2. DL动态加载框架技术文档

    DL动态加载框架技术文档 DL技术交流群:29969245 1. Android apk动态加载机制的研究 2. Android apk动态加载机制的研究(二):资源加载和activity生命周期管理 ...

  3. office关闭不必要的插件加载项解决文档打开慢问题

    描述:office关闭不必要的插件加载项解决文档打开慢问题 步骤: 打开word.excel.ppt,需要每个都打开设置 文件->选项->加载项->管理选择COM加载项转到-> ...

  4. php v9 ajax 翻页,phpcms v9建站 ajax列表分页加载更多word文档教程

    最新文章 https: open weixin qq com 有这个的账号,给客户开通微信小程序不需要认证费直... https: open weixin qq com 有这个的账号,给客户开通微信小 ...

  5. Android 用腾讯X5内核加载 word ppt 先下载在加载。

    Android 用腾讯X5内核加载 word ppt  先下载在加载. 第一步 下载Sdk 导入项目  第二步 下载 pdf word到本地 1. 调用下载  DownloaderTask task ...

  6. 离线或在线加载pytorch、mmdetection预训练模型vgg、resnet、alexnet等

    pytorch预训练模型包含多个经典网络,比如resnet系列.vgg系列和alexnet等,预训练模型可以提高网络提取特征的能力,提升训练模型的性能.下面介绍一下加载预训练模型的两种方式: 第一种是 ...

  7. mPaas之如何查找离线包的在线加载地址

    NAMApp *app = [NAMServiceGet() findApp:@"20200100"version:nil]; 返回数据中 _fallback_host 拼上 _m ...

  8. osmdroid 在线加载谷歌瓦片(谷歌地图瓦片地址解释)

    osmdroid作为一个开源的项目,在在线地图上还是做的不错,离线地图上也能支持多种格式,例如:zip,sqlite,.mbtiles,gemf,map,gpkg等格式.就是不能直接加载shp文件大为 ...

  9. Xilinx FPGA在线加载远程更新多重加载 QSPI加载方式 可通过PCIe/网口/串口等接口加载

    Xilinx FPGA在线加载&远程更新&多重加载 QSPI加载方式 可通过PCIe/网口/串口等接口加载 源代码 需要的详谈 ID:6614999670814444294浪里个浪里个 ...

最新文章

  1. EJB的分类及其各自的功能和应用
  2. IOS开发入门环境搭建输出helloworld
  3. [TCP/IP]TCP服务端accept发生在三次握手的哪一个阶段
  4. 【code】Splay 模板
  5. ylbtech-Model-Account(通用账户模块设计)
  6. 一淘网挑战百度意在造势 人才储备成最大障碍
  7. 1盎司等于多少克 |1克等于多少盎司|盎司和克得换算关系
  8. 使用Acronis Disk Director Suite调整分区大小
  9. 程序员,建立你的商业意识
  10. 【前端react 粒子特效】
  11. 腾讯通rtx中心服务器,腾讯通(RTX)详细使用教程
  12. 阿里云飞天计划体验-阿里云开发者社区
  13. 用户登录短信验证码的实现
  14. MQTT协议——MQTTX工具使用
  15. RepeatMasker的安装与使用(一)
  16. Altium Designer 20 安装方法及步骤
  17. [STL]set存储pair并自定义排序
  18. C语言学习:二进制码与格雷码的转换
  19. Unity3D Shader系列之全息投影
  20. 移动端h5页面不同尺寸屏幕适配兼容方法

热门文章

  1. 文件包含漏洞及漏洞利用
  2. [转载] MATLAB快捷键
  3. excel表格拆分多个表
  4. Pytorch加载模型只导入部分层权重,即跳过指定网络层的方法
  5. 关于Mysql服务无法启动的问题
  6. 杭电操作系统实验三--- 实现模拟shell(arm架构华为云)
  7. 真正好用的RPC框架rest_rpc正式发布第一个版本
  8. 0xFEFEFEFE 处有未经处理的异常(在xx中): 0xC00001A5: 检测到无效的异常处理程序例程。
  9. 智能手环---设计与实现
  10. 修改windows自带录音机录音时间方法