1. 基础配置

1.1 SDK接入

jar包方式集成

您可将官网下载的jar包复制到您的App的libs目录,并且通过Add As Library的方式集成TBS SDK

Gradle方式集成

您可以在使用SDK的模块的dependencies中添加引用进行集成: api 'com.tencent.tbs.tbssdk:sdk:43939'

1.2 权限配置

为了保障内核的动态下发和正常使用,您需要在您的AndroidManifest.xml增加如下权限:

1.3 混淆配置

为了保障X5功能的正常使用,您需要在您的proguard.cfg文件中添加如下配置:

-dontwarn dalvik.**

-dontwarn com.tencent.smtt.**

-keep class com.tencent.smtt.** {

*;

}

-keep class com.tencent.tbs.** {

*;

}

1.4 异常上报配置

为了提高合作方的webview场景稳定性,及时发现并解决x5相关问题,当客户端发生crash等异常情况并上报给服务器时请务必带上x5内核相关信息。x5内核异常信息获取接口为:com.tencent.smtt.sdk.WebView.getCrashExtraMessage(context)。以bugly日志上报为例:

UserStrategy strategy = new UserStrategy(appContext);

strategy.setCrashHandleCallback(new CrashReport.CrashHandleCallback() {

public Map onCrashHandleStart(

int crashType,

String errorType,

String errorMessage,

String errorStack) {

LinkedHashMap map = new LinkedHashMap();

String x5CrashInfo = com.tencent.smtt.sdk.WebView.getCrashExtraMessage(appContext);

map.put("x5crashInfo", x5CrashInfo);

return map;

}

@Override

public byte[] onCrashHandleStart2GetExtraDatas(

int crashType,

String errorType,

String errorMessage,

String errorStack) {

try {

return "Extra data.".getBytes("UTF-8");

} catch (Exception e) {

return null;

}

}

});

CrashReport.initCrashReport(appContext, APPID, true, strategy);

1.5 首次初始化冷启动优化

TBS内核首次使用和加载时,ART虚拟机会将Dex文件转为Oat,该过程由系统底层触发且耗时较长,很容易引起anr问题,解决方法是使用TBS的 ”dex2oat优化方案“。

(1). 设置开启优化方案

// 在调用TBS初始化、创建WebView之前进行如下配置

HashMap map = new HashMap();

map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true);

map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true);

QbSdk.initTbsSettings(map);

(2). 增加Service声明

在AndroidManifest.xml中增加内核首次加载时优化Service声明。

该Service仅在TBS内核首次Dex加载时触发并执行dex2oat任务,任务完成后自动结束。

android:name="com.tencent.smtt.export.external.DexClassLoaderProviderService"

android:label="dexopt"

android:process=":dexopt" >

2. WebView接入

2.1 包名替换

下载 SDK jar 包放到工程的libs目录下,将源码和XML里的系统包和类替换为SDK里的包和类,具体对应如下:

系统内核

SDK内核

android.webkit.ConsoleMessage

com.tencent.smtt.export.external.interfaces.ConsoleMessage

android.webkit.CacheManager

com.tencent.smtt.sdk.CacheManager(deprecated)

android.webkit.CookieManager

com.tencent.smtt.sdk.CookieManager

android.webkit.CookieSyncManager

com.tencent.smtt.sdk.CookieSyncManager

android.webkit.CustomViewCallback

com.tencent.smtt.export.external.interfaces.IX5WebChromeClient.CustomViewCallback

android.webkit.DownloadListener

com.tencent.smtt.sdk.DownloadListener

android.webkit.GeolocationPermissions

com.tencent.smtt.export.external.interfaces.GeolocationPermissionsCallback

android.webkit.HttpAuthHandler

com.tencent.smtt.export.external.interfaces.HttpAuthHandler

android.webkit.JsPromptResult

com.tencent.smtt.export.external.interfaces.JsPromptResult

android.webkit.JsResult

com.tencent.smtt.export.external.interfaces.JsResult

android.webkit.SslErrorHandler

com.tencent.smtt.export.external.interfaces.SslErrorHandler

android.webkit.ValueCallback

com.tencent.smtt.sdk.ValueCallback

android.webkit.WebBackForwardList

com.tencent.smtt.sdk.WebBackForwardList

android.webkit.WebChromeClient

com.tencent.smtt.sdk.WebChromeClient

android.webkit.WebHistoryItem

com.tencent.smtt.sdk.WebHistoryItem

android.webkit.WebIconDatabase

com.tencent.smtt.sdk.WebIconDatabase

android.webkit.WebResourceResponse

com.tencent.smtt.export.external.interfaces.WebResourceResponse

android.webkit.WebSettings

com.tencent.smtt.sdk.WebSettings

android.webkit.WebSettings.LayoutAlgorithm

com.tencent.smtt.sdk.WebSettings.LayoutAlgorithm

android.webkit.WebStorage

com.tencent.smtt.sdk.WebStorage

android.webkit.WebView

com.tencent.smtt.sdk.WebView

android.webkit.WebViewClient

com.tencent.smtt.sdk.WebViewClient

需要注意的是:

1)请不要在代码里使用下述写法:

import android.*;

import android.webkit.*;

import android.webkit.WebStorage.*;

import android.net.*;

import android.net.http.*;

2)除了源码里需要把相关的包名和类名进行替换,布局xml里的声明也需要替换,例如:

android:id="@+id/forum_context"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:paddingLeft="5dp"

android:paddingRight="5dp" />

请确保将所有的相关class的包名均按照上述规则替换,以免造成类型强转crash、cookie 设置失败等问题发生。

Tips:您可使用工具进行批量扫描和替换,将脚本放置于根目录并执行脚本即可。下载地址:

3 文件接入

3.1 支持格式

TBS已提供9种主流文件格式的本地打开,如果您需要使用更高级的能力请使用QQ浏览器打开文件

接入TBS可支持打开文件格式:doc、docx、ppt、pptx、xls、xlsx、pdf、txt、epub

调用QQ浏览器可打开:rar(包含加密格式)、zip(包含加密格式)、tar、bz2、gz、7z(包含加密格式)、doc、docx、ppt、pptx、xls、xlsx、txt、pdf、epub、chm、html/htm、xml、mht、url、ini、log、bat、php、js、lrc、jpg、jpeg、png、gif、bmp、tiff 、webp、mp3、m4a、aac、amr、wav、ogg、mid、ra、wma、mpga、ape、flac

3.2 接口介绍

public static int openFileReader(

Context context,

String filePath,

HashMap extraParams,

ValueCallback callback

)

(1)此方法在Qbsdk类下

(2)调用之后,优先调起 QQ 浏览器打开文件。如果没有安装 QQ 浏览器,在 X5 内核下调起简版 QB 打开文 件。如果使用的系统内核,则调起文件阅读器弹框。

(3)暂时只支持本地文件打开

context: 调起 miniqb 的 Activity 的 context。此参数只能是 activity 类型的 context,不能设置为 Application 的 context。

filePath: 文件路径。格式为 android 本地存储路径格式,例如:/sdcard/Download/xxx.doc. 不支持 file:/// 格式。暂不支持在线文件。

extraParams: miniqb 的扩展功能。为非必填项,若无需特殊配置,默认可传入null。扩展功能参考“文件功能定制”

ValueCallback: 提供 miniqb 打开/关闭时给调用方回调通知,以便应用层做相应处理,您可以在出现以下回调时结束您的进程,节约内存占用。主要回调值如下:

filepath error

TbsReaderDialogClosed

default browser

fileReaderClosed

返回值:

1:用 QQ 浏览器打开

2:用 MiniQB 打开

3:调起阅读器弹框

-1:filePath 为空 打开失败

public static void closeFileReader(Context context)

主动关闭文件打开ui,并清理相应内存占用。

3.3 接入示例

HashMap params = new HashMap();

params.put("style", "1");

params.put("local", "true");

params.put("memuData", jsondata);

QbSdk.openFileReader(ctx,”/sdcard/xxx.doc”, params,callback);

qq浏览文件服务器,腾讯浏览服务相关推荐

  1. 腾讯html5平台,腾讯浏览服务

    2. 浏览增强 传统系统内核(Webview)存在适配成本高.不安全.不稳定.耗流量.速度慢.视频播放差.文件能力差等问题,这是移动应用开发商在进行Hybrid App开发时普遍面临的难题.腾讯浏览服 ...

  2. Android使用腾讯浏览服务X5内核

    [前期准备] 腾讯X5 jar包下载地址 [点击打开] 本次完整DEMO源码 [打开Github] [集成步骤] 第一步:下载jar包添加到项目 第二步:添加权限 [java] view plainc ...

  3. 腾讯浏览服务X5内核集成

    腾讯浏览服务X5内核集成 导读 1.什么是X5内核? 2.需求场景 3.开始搬砖 4.优化 5.集成后的问题 6.补充 一.什么是X5内核? 用官方文档的话说,就是解决系统webview兼容性差.加载 ...

  4. Android Studio 使用腾讯浏览服务(替换掉系统自带的WebView)

    一.为何不直接使用内置的WebView组件? 用Android自带的WebView组件,做过一些较复杂应用的人应该都会发现,这个自带的组件很多时候真是让人无力吐嘈,主要理由有二: Android中的W ...

  5. TBS腾讯浏览服务接入以及遇到的坑

    序言 腾讯浏览服务功能强大,稳定,集成还算是比较简单的,比原生的webview强.最主要的是可以浏览PDF,Word文档,方便不少.此篇文章主要不是在讲集成,虽然集成的篇幅多些,但是我写的最重要的目的 ...

  6. TencentTbs腾讯浏览服务 x5内核使用

    Tencent TBS (下简称TBS) 腾讯浏览服务 What is it? 百度百科解释: 腾讯浏览服务(Tencent Browsing Service,以下简称TBS),由腾讯X5浏览服务升级 ...

  7. Android应用内展示office文件--腾讯浏览服务(TBS)

    前一篇写了用webview加载预览office文件,但是没有成功,所以只能另寻办法,上网查到了TBS(腾讯浏览服务),完美的解决了android端预览offic文件: 什么是TBS  依托 X5 内核 ...

  8. 浏览文件服务器,浏览文件服务器

    浏览文件服务器 内容精选 换一换 假如您有一个Web应用,由于业务量比较大,需要使用两个弹性云服务器(简称ECS)进行业务负载分担.共享型负载均衡,可以将访问流量根据流量分配策略分发到后端多台服务器, ...

  9. oo 浏览文件服务器,文件服务器的配置.docx

    实验报告 时间:2011 929 实验人:张岩 试验名称:文件服务器的配置 试验环境:VMWARE 环境描述:一台2008域服务器和一台域环境的个人PC,还有一台不加域环境的文件服务器. 实现口标:为 ...

  10. qq位置如何用启动百度地图定位服务器,腾讯位置服务API快速入门

    前言 之前项目有个需求,在网页上显示微信发送过来的位置信息,该开始想用百度地图,后来发现腾讯地图相对简单一点 快速入门 申请Key 引入js 把###替换成你申请的key 定义容器 设置好宽高度 设置 ...

最新文章

  1. virus.win32.parite.H病毒的查杀方法
  2. 使用Filezilla Server配置FTP服务器
  3. python包导入细节_python循环导入是一个实现细节吗?
  4. jmeter---linux安装运行
  5. 数组转json去除首尾引号_诞生于JavaScript,json的前世今生
  6. mysql记录当前表数据的数据条数据类型_mysql的表的操作 数据类型
  7. Linux服务器中解压zip包
  8. Python自定义类的成员并不一直是所有对象共享的
  9. Linux 虚拟机安装 MySQL 教程
  10. python毕业设计总结范文大全_java毕业设计总结报告(精选范文3篇)
  11. 联想笔记本v110_联想V110系列笔记本如何设置u盘启动教程
  12. 软件首次亮相前超级账本技术升温
  13. Python办公自动化之PPT幻灯片自动化:使用Python制作PPT 操作PPT
  14. 中国园区经济行业“十四五“规划与前景深度研究报告2021年版
  15. 经济基础知识(初级)【5】
  16. ROS2 基础概念 参数
  17. 如何看计算机cpu的好坏,怎么看电脑的配置(如何判断cpu的好坏)
  18. mysql5.7.23绿色版安装
  19. SELECT后面有自定义函数的优化方法
  20. 吐槽达内这种培训机构的坑,鸡肋

热门文章

  1. JSONArray ja = JSONArray.fromObject(list);//特殊类 用于将list转化为JSON 数据并返回 out.print(ja);...
  2. 了解 PerformancePoint 仪表板设计器
  3. SQL 语句 - Select(2): 指定表中的字段
  4. 新手驾车操作指南[200P]
  5. C 语言 结构类型 结构
  6. POJ1177(扫描线求周长并)
  7. zjoi2018day1 游记
  8. Win7从VHD中启动 如何扩充虚拟磁盘
  9. 用有道ip地址查询接口的详细方法
  10. 【整理】牛客网编程题-前端篇(入门难度)