我们正常项目使用原生webview加载h5页面也是没问题的,但是当使用原生webview加载h5出问题了,h5地址在微信等可以正常使用,前端就会丢锅给我们,为了杜绝不是我们Android的问题,那我们也集成TBS浏览器X5内核替换原生webview。。。

腾讯的TBS浏览器X5内核(文章中统一简称X5内核)的优点直接看文档介绍就有,文章主要将集成点和加载X5内核失败怎么解决、在应用内打开pdf等文件的功能(此功能官方文档没有);关于官方文档和sdk下载看下面链接:

  • 腾讯TBS官网接入步骤
  • SDK下载
  • TBS浏览服务SDK接入问题
  • github集成Demo

一、集成(Android studio  依赖库集成)

关于jar包集成方法自行参考文档或者百度吧!

1、在app的build.gradle中添加

dependencies {//x5内核Sdk=====在下载sdk说明处有直接复制api 'com.tencent.tbs.tbssdk:sdk:43697'
}

2、在application类中添加:

          //下载x5内核,可以不需要,因为会共用其他软件的x5内核,比如微信、QQ等         QbSdk.setDownloadWithoutWifi(true);QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {@Overridepublic void onCoreInitFinished() {Log.e("snow", "========onCoreInitFinished===");}@Overridepublic void onViewInitFinished(boolean b) {//加载x5内核成功返回值为true,否则返回false,加载失败会调用系统的webviewLog.e("snow", "x5初始化结果====" + b);}});

3、在AndroidManifest.xml文件中配置:

<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!-- 硬件加速对X5视频播放非常重要,建议开启 --><uses-permission android:name="android.permission.GET_TASKS"/><applicationandroid:usesCleartextTraffic="true"android:hardwareAccelerated="true"></application>

4、使用x5内核的webview替换原生webview,使用方法一致,这里就不贴代码了,可以直接去demo中查看

到这里就集成完成了,运行查看application是否返回true,要是返回true那恭喜你很顺利完成了集成,要是返回false,那继续往下看

二、集成遇到的问题排查:

1、使用写的webview加载链接:

http://soft.imtt.qq.com/browser/tes/feedback.html

显示结果000000表示加载的是系统内核,显示大于零的数字表示加载了x5内核(该数字是x5内核版本号)

2、使用
写的webview加载链接:

http://debugtbs.qq.com

2.1、加载成功如下图

2.2、加载失败提示:请检查网络是否可用

你的手机应该是9.0以上的系统:google从Android 9.0开始,默认情况下禁用明文支持。因此http的url均无法在webview中加载

在AndroidManifest.xml添加属性android:usesCleartextTraffic="true"   如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest ...><applicationandroid:usesCleartextTraffic="true"...></application>
</manifest>

3、记载自测链接成功后,最好先点击“安装线上内核”下载内核,然后重启页面后点击“合作方加载检测”,查看提示:

3.1、加载内核成功:

3.2、加载失败检测原因:如:下面这个提示就是64位手机不能加载x5内核,x5内核目前只支持32位

x5内核不支持64位的解决方法:

官方关于x5内核64位手机不能使用解决方案

出现其他问题都可以通过检测查看哪里出了问题;

三、关于使用x5内核加载pdf等文件

几点重要提示:

1、加载文件核心类是 TbsReaderView,腾讯文档没有写,TbsReaderView建议通过动态创建,不要使用xml中引用;

2、TBS目前只支持加载本地文件。所以远程文件需要先下载,后用TBS加载文件显示;

3、加载文件的界面,离开本界面之后务必销毁TbsReaderView,否则再次加载文件无法加载成功,会一直显示加载文件进度条;代码如下:tbsReaderView.onStop();

加载文件我直接贴代码了

重点核心代码:

private void openFile() {File file = new File(url);if (!file.exists()) {Toast.makeText(this, "文件不存在", Toast.LENGTH_LONG).show();}Bundle bundle = new Bundle();bundle.putString("filePath", url);bundle.putString("tempPath", Environment.getExternalStorageDirectory().getPath());boolean result = tbsReaderView.preOpen(parseFormat(parseName(url)), false);if (result) {tbsReaderView.openFile(bundle);}}private String parseFormat(String fileName) {return fileName.substring(fileName.lastIndexOf(".") + 1);}private String parseName(String url) {String fileName = null;try {fileName = url.substring(url.lastIndexOf("/") + 1);} finally {if (TextUtils.isEmpty(fileName)) {fileName = String.valueOf(System.currentTimeMillis());}}return fileName;}TbsReaderView.ReaderCallback readerCallback = new TbsReaderView.ReaderCallback() {@Overridepublic void onCallBackAction(Integer integer, Object o, Object o1) {}};@Overrideprotected void onDestroy() {super.onDestroy();//销毁界面的时候一定要加上,否则后面加载文件会发生异常。tbsReaderView.onStop();}

调用代码:

tbsReaderView = new TbsReaderView(this, readerCallback);rlRoot.addView(tbsReaderView, new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT));openFile();

到此完成了x5内核的集成和打开文件的功能!感觉有用给一个star支持下!

demo地址

Android 使用腾讯的TBS浏览器X5内核的集成加载pdf等文件相关推荐

  1. QQ浏览器x5内核的兼容性问题

    X5内核是腾讯基于优秀开源Webkit[1] 深度优化的浏览器渲染引擎,搭载在最新一代的手机QQ浏览器上[2] ,更快,更便捷. 2014年9月23日,腾讯正式宣布开放业内首个浏览服务开放平台,向AP ...

  2. Android 浏览器内核浅谈,基于WebKit内核的Android手机浏览器的性能研究与加载优化...

    南京邮电大学 硕士 2017 基于WebKit内核的Android手机浏览器的性能研究与加载优化 Performance Research and Load Optimization of Andro ...

  3. android 浏览器打开本地html文件,如何在Android浏览器中加载本地HTML文件

    我试图在设备浏览器中加载本地html文件.我尝试过使用WebView,但它不适用于所有设备.如何在Android浏览器中加载本地HTML文件 //WebView method that didnt w ...

  4. Android加载PDF文档

    ​前言 最近项目上有一个需求,需要在Android端加载显示pdf文档,因为没有相关的经验,在刚接到需求的时候,第一想法就是打开程序员的第二大脑进行搜索,搜索结果还是蛮理想的,了解到了MuPDF,它支 ...

  5. google支持本地ajax,360chrome,google chrome浏览器使用jquery.ajax加载本地html文件

    使用360chrome和google chrome浏览器加载本地html文件时,会报错,提示: XMLHttpRequest cannot load file:///Y:/jswg/code/html ...

  6. xBIM 实战01 在浏览器中加载IFC模型文件

    系列目录    [已更新最新开发文章,点击查看详细]  一.创建Web项目 打开VS,新建Web项目,选择 .NET Framework 4.5  选择一个空的项目 新建完成后,项目结构如下: 二.添 ...

  7. Android中使用WebChromeClient显示Openlayers加载本地GeoJson文件显示地图(跨域问题解决)

    场景 Openlayers中加载GeoJson文件显示地图: Openlayers中加载GeoJson文件显示地图_BADAO_LIUMANG_QIZHI的博客-CSDN博客 上面加载显示GeoJso ...

  8. android 自定义域名,Android基于Retrofit2改造的可设置多域名的网络加载框架

    Android基于Retrofit2改造的可设置多域名的网络加载框架 1.使用说明 添加仓库 ``` allprojects { repositories { google() jcenter() m ...

  9. Android OpenGLES2.0(十四)——Obj格式3D模型加载

    转自:http://blog.csdn.net/junzia/article/details/54300202 在博主<OpenGLES系列>文章中,最开始的几篇讲的就是OpenGL世界中 ...

最新文章

  1. python将string转换为json_python -- 将string转换成dict的方法
  2. RPM包搜索下载网站
  3. Coursera课程Python for everyone:Quiz: REST, JSON, and APIs
  4. 区块链BaaS云服务(40) 泰岳FruitChain
  5. manjaro linux换源
  6. sql server在执行批处理时出现错误。错误消息为: 目录名无效
  7. LeetCode198——house robber(不懂dp)
  8. LeetCode 70. Climbing Stairs
  9. ASP.NET 数据库缓存依赖
  10. 耗时n年,38页《数据仓库知识体系.pdf》(数据岗位必备)
  11. php字符串中删除字符串函数,PHP 实现删除任意区间内字符串函数方法
  12. 我们无法更新系统保留的分区_系统更新是我们手机的基本功能之一 安卓智能更新有哪些用途...
  13. android settheme不起作用,android-主题,样式和别名嵌套不起作用
  14. Java核心编程实践--视频
  15. [SQL]SQL server 常用代码
  16. VB认识强大的ActiveX控件
  17. switchhost下载安装
  18. Redhat8 配置使用阿里源(关闭官方订阅)
  19. 微信小程序快捷键和windows快捷键
  20. python把两个图片合成一张图

热门文章

  1. 【强化学习】Q-Learning用于二维空间探索【Python实现】
  2. python 标准模板库_比较了3个Python模板库
  3. python练习 7-14 漂亮的螺旋 (100分)
  4. 【18】[C语言]抓交通肇事犯。一辆卡车违反交通规则,撞人后逃跑。现场有3人目击事件,但没有记住车牌号,只记住了车号的一些特征。
  5. python@模块和脚本@module@script@package_import
  6. 一政网;在职可以报考事业单位吗?
  7. Contest Hunter #46 T1 磁力块 [分块]
  8. 20220718-内容整理
  9. 最短路与动态规划(三)
  10. 制作电脑店U盘启动盘