Android 集成腾讯 TBS X5内核,并使用 TbsReaderView 加载 .pdf 文件

2023-11-07

Android 集成腾讯 TBS X5内核,并使用 TbsReaderView 加载 .pdf 文件
tbs的接入:

腾讯官网的接入步骤: 添加链接描述
在官方文档中有各种优缺点的比较,以及比较详细的集成步骤。

自己接入过程的总结:

可以使用 下载 jar 包并编译的方式。目前最新版的 tbs 还可以使用 dependencies 的方式接入,建议使用这一种:

一、使用 dependencies 方式接入

1、在模块的 dependencies 中添加:

api 'com.tencent.tbs.tbssdk:sdk:43903'

一步就完成了依赖。

2、初始化:|

//搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
        QbSdk.setDownloadWithoutWifi(true);//非wifi条件下允许下载X5内核
        QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {

            @Override
            public void onViewInitFinished(boolean arg0) {
                //x5內核初始化完成的回调,为true表示x5内核加载成功,
                否则表示x5内核加载失败,会自动切换到系统内核。
                AppLog.e(" onViewInitFinished is " + arg0);
            }
            @Override
            public void onCoreInitFinished() {
            }
        };
        //x5内核初始化接口
        QbSdk.initX5Environment(getApplicationContext(), cb);

这段代码最好放在 Application.onCreate 里面。可以尽量在首次加载时就可以使用X5
在初始化时,会判断有没有X5内核(一般只要安装过 QQ 微信等一些腾讯产品后,都会有X5 内核。只要Android系统里面有X5内核,就可以进行共用。)。如果有会进行加载,没有会下载。

在我使用的过程中,发现在APP首次加载时X5内核时会失败,必须要把 进程Kill之后重启才能正常使用。
在打印日志后发现即使系统有X5内核,onViewInitFinished() 回调方法依然会返回 一次/两次 false。然后才会返回true。
大概这就是首次加载会失败的原因,返回false之后就会切换到系统内核。(纯猜测,自己的解决方式是当首次加载使用不了X5内核时,就用别的替代。也是稳稳的)

3、加载 pdf 文件:(xml 文件就不贴了,就一个帧布局)

private TbsReaderView mTbsReaderView;
FrameLayout pdf_rl;

//创建 TbsReaderView 对象并将其添加到帧布局中
mTbsReaderView = new TbsReaderView(this, this);
            pdf_rl.addView(mTbsReaderView,
                    new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT,
                            RelativeLayout.LayoutParams.MATCH_PARENT));

//加载,就是在这一步,app首次下载时,即使有X5内核 preOpen 也会返回 false
//只有 kill 进程后并重启才会有效果,这个问题搞了好久
//索性就在返回 false 之后换一种加载方式
boolean result = mTbsReaderView.preOpen(parseFormat(fileName), false);
            if (result) {
                mTbsReaderView.openFile(bundle);
                }else{
                //用 PDFView 加载
                }

private String parseFormat(String fileName) {
        return fileName.substring(fileName.lastIndexOf(".") + 1);
    }

下面是第二种接入方式:

二、下载jar包并编译方式接入:

1、在官网下载:

在这里插入图片描述

2、下载完成后将 jar 包放在项目的 libs 文件夹下:

在这里插入图片描述

3、对 运行在64 位 Android 系统的App兼容

在这里插入图片描述

4、在dependencies中添加

implementation files(
'libs/tbs_sdk_thirdapp_v4.3.0.3_43903_sharewithdownloadwithfile_withoutGame_obfs_20200402_121309.jar')

然后就是上面 一 的初始化过程了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 集成腾讯 TBS X5内核,并使用 TbsReaderView 加载 .pdf 文件 的相关文章

  • BLE 外设支持 Android-L 示例 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我希望有一个适用于 Android L 的 BLE 外设模式的示例 我的代码给了我奇怪的错误 即广告商太多 这没有任何意
  • Google Play 商店中基于服务的 Android 应用程序

    我正在开发一个应用程序 该应用程序仅包含一些服务 没有任何活动 即没有 UI 基本上 当用户在他 她的设备上安装应用程序时 我希望有 2 到 3 个服务在后台运行 对此我有几个疑问 应用程序安装后我的服务将如何启动 我的BroadcastR
  • OPENGL ES 不工作:无当前上下文

    我尝试了 OpenGL ES2 for Android 一书中所示的程序 但它不起作用 我已经在Odroid E 三星s3 三星y 三星star上进行了测试 the gl version suported returns 2 but i g
  • 添加动态数据时 footable 出现问题

    我需要 jQuery Mobile 方面的一些帮助富表 http css tricks com footable a jquery plugin for responsive data tables 我正在表中动态添加数据 HTML tab
  • 有没有办法将搜索栏添加到我的实际首选项屏幕?

    我一直看到有关添加您自己的搜索栏首选项的教程 但它不在我实际的 prefs xml 中 有什么方法可以在我的主偏好设置屏幕中添加一个 或者我必须将其分开 Google 似乎有 2 个滑块首选项 搜索栏首选项 https github com
  • Android Facebook sdk 3.5 分享对话框

    您好 我正在为 android sdk 3 5 实现 facebook 共享对话框 但是我按照指南没有取得任何成功 FacebookDialog shareDialog new FacebookDialog ShareDialogBuild
  • 从 BroadcastReceiver 获取方法来更新 UI

    我正在尝试根据变量的变化更新用户界面BroadcastReceiver 因此 我需要调用一个扩展类的方法 以获取我提到的变量 BroadcastReceiver in MainActivity取决于但我无法以任何方式获得真正的返回值 扩展的
  • Android 中有没有办法获取 SD 卡大小?

    欢迎大家 我已经在 Stackoverflow 和 google 上尝试过与此相关的每个问题 但没有一个有效 我已经尝试过类似下一个链接的操作 但它返回的内容与内部存储相同 如何获取外部存储 SD 卡的大小 带安装的 SD 卡 https
  • 在浏览器中打开 URL,即使我的应用程序为其注册了意图过滤器

    我的应用程序为某些 URL 注册了一个意图过滤器 因为它可以处理来自这些 URL 的数据 但是 在应用程序内部 我想提供一个按钮来在浏览器中打开这样的 URL 也就是说 如果设置了默认浏览器 则在默认浏览器中打开它 否则提供一个选择器 就像
  • 多语言 Android 应用程序:在电子邮件和密码字段中显示英文键盘

    我们正在开发一款多语言 Android 应用程序 针对英语和阿拉伯语 面临的问题是在登录和注册屏幕中 我们希望仅以英文文本输入用户名和密码字段 从而显示英文键盘 无论设备区域设置语言如何 已尝试在 edittext 中设置 inputtyp
  • 在 Android 中始终以横向模式打开相机

    在我的 Android 应用程序中 单击按钮后我希望相机以横向模式打开 即使我将手机旋转为纵向模式 相机也应始终处于横向模式或纵向模式 使用此代码在横向模式下打开相机 Intent cameraIntent new Intent Media
  • 如何使用 Swipe 视图实现 Android TabLayout 设计支持库

    我将使用 android TabLayout 设计支持库 但我不知道如何使用滑动视图 这是我的代码 XML
  • android 多关键词搜索

    我的应用程序包含搜索功能 它将搜索数据库内的内容 我的搜索的弱点是 我只能使用一个标签进行搜索 例如我只能搜索 猫 它会返回我的数据库中包含 猫 一词的内容 因为我正在使用LIKE在 select 语句期间进行查询 如何使用多个标签进行搜索
  • 我应该选择的最低 SDK 版本是多少? (截至2018年11月)

    据我所知 android studio 中默认的最小 SDK 设置是 15 我读到我应该增加它 因为没有多少人 或者可能没有 仍在使用该 android 版本 另外 我计划使用 android studio 中的一些新功能 这些功能仅适用于
  • 如何知道用户是否在 Android 应用程序中输入了错误的密码(锁定屏幕)

    我正在开发一个 Android 应用程序 如果用户在 Android 锁定屏幕中输入错误的密码 则必须完成其中一项活动 例如 如果用户输入错误的密码 则会发送电子邮件 我将不胜感激任何帮助 提前致谢 Kshitij 锁屏在完全沙箱环境中运行
  • 使用 UPI url 调用 PSP 应用程序

    我正在尝试创建一个商家应用程序 它将根据 NPCI 的指南生成一个 url 此 url 将作为意图共享 并且 PSP 应用程序 任何注册的银行应用程序 应该能够侦听该 url 并被调用 我已经形成了这样的网址 upi pay pa icic
  • 将 Crashlytics 集成到图书馆项目

    我有一个图书馆项目 自定义视图库项目 它没有任何活动 服务 我想将 Crashlytics SDK 集成到我的库中 当我尝试通过 Android Studio 的 Crashlytics 插件 工具栏中的图标 添加它时 它只是停留在 Che
  • 从 sqlite 和 mysql 加载数据微调器

    我试试这个tutorial http nielpoenya blogspot com 2012 08 tutorial android spinner dari database html加载Spinner from sqlite and
  • 改造方法调用可能会产生“java.lang.NullPointerException”

    使用 Retrofit 2 3 0 我在 Android Studio 中收到以下消息 有关如何删除此 IDE 错误消息的任何建议 谢谢 来自Response文档 http square github io retrofit 2 x ret
  • 在android中使用BaseActivity的不同活动中的通用标头

    我想编写一次代码并在不同的活动中使用 我创建了一个Base Activity class为了那个原因 此外 不同活动中所有布局的标题都是相同的 我在以下人员的帮助下做到了这一点

随机推荐

  • vue-amap 高德地图定位 点击获取经纬度和具体地址的使用

    官方文档地址 点这里 经纬度获取只要通过点击事件就可以通过e lnglat来获取 然后就是插件Geocoder使用了 在main js中initAMapApiLoader中写入 AMap Geocoder 注意 官方文档中有提示 所以插件中
  • webpack5 (三)

    webpack 高级配置 其实就是对 webpack 进行优化 让代码在编译 运行时性能更好 1 提升开发体验 2 提升打包构建速度 3 减少代码体积 4 优化代码运行性能 一 提升开发体验 sourcemap 在编译打包后所有的 css
  • 图片无损放大软件Topaz Gigapixel AI 5.5.2 win mac 汉化 mac只有英文版

    Topaz Gigapixel AI 5 5 2 win mac 汉化版 mac只有英文版 今天给大家带来一款超级强大的无损放大图片软件 在放大的同时还能够为你优化图片 真的不要太棒 这个软件的名字叫 Topaz Gigapixel AI
  • 【深度学习】卷积神经网络之图像分类|CNN、AlexNet、VGG、GoogLeNet、ResNet

    一 CNN 卷积神经网络分为卷积层 池化层 全连接层 softmax层 卷积层 卷积核与输入层中的一个区域相连 计算内积后加上权重 激活函数层 激活函数层包括在卷积层中 将相连的神经元进行激活 通常使用ReLu激活函数 m a x 0
  • 什么是元宇宙数字人,它距离我们还有多远呢?

    近期 元宇宙数字人 成为全球热议的焦点 众多资本方争相进入 使得互联网正在迎来转型为 元宇宙 的窗口期 究竟什么是 元宇宙数字人 它距离我们还有多远呢 元宇宙 最早是由是由科幻作家尼尔 斯蒂芬森于1992年在其著作 雪崩 中提出原始概念 元
  • list用Stream通过实体类的指定字段去重,排序

    public void testSelect List
  • 二叉树的前序,中序,后序,层序遍历实现(递归,迭代两种方式)

    先定义Node节点对象 public class Node public int value public Node left public Node right public Node int value Node left Node r
  • Qt - 菜单栏、工具栏、状态栏(自定义菜单)

    菜单栏 工具栏 状态栏 主窗口框架拥有自己的布局 包括以下组件 菜单栏 菜单栏包含了一个下拉菜单项的列表 这些菜单项通过QAction动作类实现 一个主窗口只能有一个菜单栏 工具栏 工具栏一般用于显示常用的菜单项 也可插入其他窗口部件 一个
  • 小程序授权登录流程详情步骤

    样式展示实例 这个原理是 我们开发的软件 调用微信app弹框 这个框主要是获取当前微信登录的用户的信息 允许 取消 允许就是允许我们开发的软件 获取微信的登录的用户信息 通俗 获取微信用户的信息去登录 不允许 通俗 不允许获取微信用户的信息
  • java学习-批量查看多个文件夹下多个xls格式的excel文件

    windows下目录展示执行命令 dir B S E rs 2017 E rs 2018 E rs 2019 E rs 2017 已支付 201701 xls E rs 2017 已支付 201702 xls E rs 2017 已支付 2
  • Consul(注册中心)部署

    目录 前言 一 Docker consul 注册中心 1 什么是consul 2 consul干什么 3 常见的注册中心 4 Consul 特性 5 Consul的使用场景 6 Consul的基本架构 二 consul集群 1 server
  • #include errors detected.Please update your includePath...或者 cannot open source file...

    本文主要介绍一种使用vscode解决include头文件时常遇到的一个问题的一种快捷解决方式 在写C 程序时经常会碰到这样的问题 就是 include lt gt 下方有个条红色的波浪线 你将鼠标挪过去 然后编辑器提示你 include e
  • 【C++】运算符重载 一

    C 允许在同一作用域中的某个函数和运算符指定多个定义 分别称为函数重载和运算符重载 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明 但是它们的参数列表和定义 实现 不相同 当您调用一个重载函数或重载运算符时 编译
  • @vitejs/plugin-vue requires vue (>=3.2.13) or @vue/compiler-sfc to be present in the dependency tre

    当npm run serve 的时候 出现这个错误 vitejs plugin vue requires vue gt 3 2 13 or vue compiler sfc to be present in the dependency t
  • TensorFlow入坑之旅(碰壁篇)

    前言 为了进一步提升用 公 户 司 体 利 验 润 数据分析可谓是至关重要的一环 然而由于人工分析数据有诸多限制 计算错误 成本 数学基础要求高等一系列因素 机器学习显得多么重要 于是 我也只能踏上机器学习这条路呀 开发环境 1 系统 wi
  • Electron 菜单

    自定义菜单 const app BrowserWindow Menu require electron console log process platform 创建窗口 function createWindow console log
  • vim一般模式进入编辑模式

    i 在光标前插入字符 I 在光标所在行的行首插入字符 a 在光标后插入字符 A 在光标所在行的行末插入字符 o 在光标所在行下插入新的一行 O 在光标所在行上插入新的一行 r 替换光标所在的字符 只替换一次 R 一直替换光标所在的字符 直到
  • Linux查看文件和日志的常用命令

    Linux查看文件和日志的常用命令 当项目部署和运行起来后 会产生很多的运行日志 日志的内容是程序里定义的重要输出信息 还有程序出错的报错信息 查看日志文件大部分是去日志中获取一些数据 确认某些信息 还有定位问题时查看报错信息 查看文件是查
  • Games101 Lecture15 Ray Tracing3笔记

    该章总结 BRDF模型 这是一种基于物理的分析模型 创建的光照模型效果较好 BRDF的理解 基于物理着色 BRDF 微分立体角 含义 在某个三维方向上 和 各移动一个微小位移 则这个微小位移所包含的表面积可近似为 微分立体角即为微分角所包含
  • Android 集成腾讯 TBS X5内核,并使用 TbsReaderView 加载 .pdf 文件

    Android 集成腾讯 TBS X5内核 并使用 TbsReaderView 加载 pdf 文件 tbs的接入 腾讯官网的接入步骤 添加链接描述 在官方文档中有各种优缺点的比较 以及比较详细的集成步骤 自己接入过程的总结 可以使用 下载