【前期准备】

腾讯X5 jar包下载地址 [点击打开]

本次完整DEMO源码 [打开Github]

【集成步骤】

第一步:下载jar包添加到项目

第二步:添加权限

  1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  2. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  3. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  4. <uses-permission android:name="android.permission.INTERNET" />
  5. <uses-permission android:name="android.permission.READ_PHONE_STATE" />

第三步:创建BaseApplication.class

  1. import android.app.Application;
  2. import com.tencent.smtt.sdk.QbSdk;
  3. import com.tencent.smtt.sdk.TbsListener;
  4. import com.xiong.tbs_x5.utils.LogUtil;
  5. /**
  6. * Created by xiongwenwei@aliyun.com
  7. * CreateTime: 2017/1/12
  8. * Note:BaseApplication
  9. */
  10. public class BaseApplication extends Application {
  11. private static BaseApplication instance;
  12. @Override
  13. public void onCreate() {
  14. super.onCreate();
  15. instance = this;
  16. initTbs();
  17. }
  18. private void initTbs() {
  19. //搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
  20. QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
  21. @Override
  22. public void onViewInitFinished(boolean arg0) {
  23. LogUtil.i("onViewInitFinished is " + arg0);
  24. }
  25. @Override
  26. public void onCoreInitFinished() {
  27. }
  28. };
  29. QbSdk.setTbsListener(new TbsListener() {
  30. @Override
  31. public void onDownloadFinish(int i) {
  32. LogUtil.i("onDownloadFinish");
  33. }
  34. @Override
  35. public void onInstallFinish(int i) {
  36. LogUtil.i("onInstallFinish");
  37. }
  38. @Override
  39. public void onDownloadProgress(int i) {
  40. LogUtil.i("onDownloadProgress:" + i);
  41. }
  42. });
  43. QbSdk.initX5Environment(getApplicationContext(), cb);
  44. }
  45. public static BaseApplication getInstance() {
  46. return instance;
  47. }
  48. }

不要忘记添加:

第三步:创建tbs_activity.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical">
  6. <com.tencent.smtt.sdk.WebView
  7. android:id="@+id/webView"
  8. android:layout_width="match_parent"
  9. android:layout_height="match_parent"
  10. android:background="@color/white" />
  11. </LinearLayout>

第四步:创建TbsActivity.class

  1. import android.graphics.PixelFormat;
  2. import android.os.Bundle;
  3. import android.support.v7.app.AppCompatActivity;
  4. import android.util.Log;
  5. import android.view.KeyEvent;
  6. import android.view.WindowManager;
  7. import com.tencent.smtt.sdk.WebChromeClient;
  8. import com.tencent.smtt.sdk.WebSettings;
  9. import com.tencent.smtt.sdk.WebView;
  10. import com.tencent.smtt.sdk.WebViewClient;
  11. import com.xiong.tbs_x5.R;
  12. /**
  13. * Created by xiongwenwei@aliyun.com
  14. * CreateTime: 2017/1/13
  15. * Note:腾讯浏览服务
  16. */
  17. public class TbsActivity extends AppCompatActivity{
  18. private com.tencent.smtt.sdk.WebView webView;
  19. private String url = "http://3g.qq.com";
  20. @Override
  21. protected void onCreate(Bundle savedInstanceState) {
  22. super.onCreate(savedInstanceState);
  23. setContentView(R.layout.activity_main);
  24. getWindow().setFormat(PixelFormat.TRANSLUCENT);//(这个对宿主没什么影响,建议声明)
  25. getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
  26. initView();
  27. loadUrl(url);
  28. }
  29. private void initView() {
  30. webView = (com.tencent.smtt.sdk.WebView) findViewById(R.id.webView);
  31. }
  32. private void loadUrl(String url) {
  33. WebSettings webSettings = webView.getSettings();
  34. webSettings.setJavaScriptEnabled(true);
  35. webView.loadUrl(url);
  36. webView.setWebViewClient(new WebViewClient() {
  37. @Override
  38. public boolean shouldOverrideUrlLoading(WebView view, String url) {
  39. view.loadUrl(url);
  40. return true;
  41. }
  42. @Override
  43. public void onReceivedError(WebView var1, int var2, String var3, String var4) {
  44. Log.i("打印日志","网页加载失败");
  45. }
  46. });
  47. //进度条
  48. webView.setWebChromeClient(new WebChromeClient() {
  49. @Override
  50. public void onProgressChanged(WebView view, int newProgress) {
  51. if (newProgress == 100) {
  52. Log.i("打印日志","加载完成");
  53. }
  54. }
  55. });
  56. }
  57. @Override
  58. protected void onDestroy() {
  59. super.onDestroy();
  60. if (webView != null) webView.destroy();
  61. }
  62. @Override
  63. public boolean onKeyDown(int keyCode, KeyEvent event) {
  64. if (keyCode == KeyEvent.KEYCODE_BACK) {
  65. if (webView != null && webView.canGoBack()) {
  66. webView.goBack();
  67. return true;
  68. }
  69. return super.onKeyDown(keyCode, event);
  70. }
  71. return super.onKeyDown(keyCode, event);
  72. }
  73. }

【接入成功效果】

上述代码只是最基础的集成,更多的效果,请移步官网 [官网接入文档]

大概试了下,APP第一次启动好像用的还是自带Webview,猜测是X5内核还没下载完吧

接入成功,标志:1.长按文字会出现"保存离线网页" 2.复制英文会出现"翻译" 3.复制文字会有水滴标志

Android使用腾讯浏览服务X5内核的更多相关文章

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

    腾讯浏览服务X5内核集成https://www.jianshu.com/p/8a7224ff371a TBS 腾讯浏览器服务接入文档https://x5.tencent.com/tbs/guide/s ...

  2. 集成TBS(腾讯浏览服务)x5内核的webView

    由于公司产品需要展示html5页面,一开始我使用的是android自带webview,一些简单的页面没什么问题,但是碰到比较复杂的页面就让人无语了. 1.Android各大厂商都有自己定制的ROM,导 ...

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

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

  4. MyX5TbsDemo【体验腾讯浏览服务Android SDK (完整版)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 按照官网上的说明:可独立下载x5内核,也可共享使用微信或手Q的x5内核. 本Demo在引用腾讯X5内核的基础上进行了封装.参考< ...

  5. Android应用内实现视频播放--腾讯浏览服务(TBS)

    TBS视频播放 TBS视频播放器可以支持市面上几乎所有的视频格式,包括mp4, flv, avi, 3gp, webm, ts, ogv, m3u8, asf, wmv, rm, rmvb, mov, ...

  6. MyX5TbsPlusDemo【体验腾讯浏览服务Android SDK (TbsPlus 版)】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 按照官网上的说明:只需接入aar文件和调用一个接口即可完成TBS接入,我们会通过全屏Activity展示TBS WebView,适用 ...

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

    什么是TBS  依托 X5 内核强大的能力,致力于提供优化移动端浏览体验的整套解决方案(官网介绍).我们可利用其做文件浏览功能,支持多种文件格式,完全可以满足需求.更多介绍请看官网:http://x5 ...

  8. android 腾讯x5内核 浏览器

    1.浏览器内核: 主流浏览器内核介绍(前端开发值得了解的浏览器内核历史) 浏览器内核历史介绍: 在android 4.4之前,浏览器用的还是webkit 在android 4.4之后,google就抛 ...

  9. 安卓开发笔记(二十四):手把手教你一步步集成腾讯X5内核(Tencent TBS X5)

    1.为什么要集成腾讯X5内核? X5内核相对于系统webview,具有下述明显优势: 1) 速度快:相比系统webview的网页打开速度有30+%的提升: 2) 省流量:使用云端优化技术使流量节省20 ...

随机推荐

  1. python全栈开发day23-面向对象高级:反射(getattr、hasattr、setattr、delattr)、__call__、__len__、__str__、__repr__、__hash__、__eq__、isinstance、issubclass

    一.今日内容总结 1.反射 使用字符串数据类型的变量名来操作一个变量的值. #使用反射获取某个命名空间中的值, #需要 #有一个变量指向这个命名空间 #字符串数据类型的名字 #再使用getattr获取 ...

  2. python函数式编程——匿名函数(lambda)

    匿名函数lambda lambda x:x*x x就是参数 相当于函数 def f(x): return x*x 匿名函数可以作为函数对象赋值给变量: >>> f = lambda ...

  3. BZOJ1030 [JSOI2007]文本生成器 AC自动机 动态规划

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1030 题意概括 给出n个模式串,问长度为m的串中有多少个至少含有这n个模式串中的任意一个. 注意, ...

  4. 【Java】 剑指offer(8) 用两个栈实现队列

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集  题目 用两个栈实现一个队列.队列的声明如下,请实现它的两个函数append ...

  5. 在Macos下完美解决Adobe Dreamweaver CC 2018 汉化及操作方法

    1.先关闭Dreamweaver,打开Finder进入应用程序,找到“Adobe Dreamweaver CC 2018”目录展开,移除“zh_CN”目录或者更名: 2.下载附件的汉化语言包解压,把解 ...

  6. P1939【模板】矩阵加速(数列)

    P1939[模板]矩阵加速(数列)难受就难受在a[i-3],这样的话让k=3就好了. #include<iostream> #include<cstdio> #include& ...

  7. SQLite中SELECT基本形式

    SQLite中SELECT基本形式 每个数据库通常都包含多个表,而每个表又包含多条数据.要获取数据库中的数据,就需要SQL语言提供的查询语句SELECT.本章将讲解和SELECT语句相关的内容,其中包 ...

  8. bzoj2830: [Shoi2012]随机树

    题目链接 bzoj2830: [Shoi2012]随机树 题解 q1好做 设f[n]为扩展n次后的平均深度 那么\(f[n] = \frac{f[n - 1] * (n - 1) + f[n - 1] ...

  9. luoguP4709 信息传递 置换 + 多项式exp

    感觉我的做法并不是最优做法... 考虑一个置换\(g\)中的一个置换环\(S\) 在\(g^n\)的形态中,它变为了\(gcd(n, |S|)\)个长度相同的置换环 那么,我们考虑对\(f\)的所有置 ...

  10. BZOJ.3638.CF172 k-Maximum Subsequence Sum(模拟费用流 线段树)

    题目链接 各种zz错误..简直了 /* 19604kb 36292ms 题意:选$k$段不相交的区间,使其权值和最大. 朴素线段树:线段树上每个点维护O(k)个信息,区间合并时O(k^2),总O(mk ...