【前期准备】
腾讯X5 jar包下载地址 [点击打开]
本次完整DEMO源码 [打开Github]
【集成步骤】
第一步:下载jar包添加到项目
第二步:添加权限
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
- <uses-permission android:name="android.permission.INTERNET" />
- <uses-permission android:name="android.permission.READ_PHONE_STATE" />
第三步:创建BaseApplication.class
- import android.app.Application;
- import com.tencent.smtt.sdk.QbSdk;
- import com.tencent.smtt.sdk.TbsListener;
- import com.xiong.tbs_x5.utils.LogUtil;
- /**
- * Created by xiongwenwei@aliyun.com
- * CreateTime: 2017/1/12
- * Note:BaseApplication
- */
- public class BaseApplication extends Application {
- private static BaseApplication instance;
- @Override
- public void onCreate() {
- super.onCreate();
- instance = this;
- initTbs();
- }
- private void initTbs() {
- //搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
- QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
- @Override
- public void onViewInitFinished(boolean arg0) {
- LogUtil.i("onViewInitFinished is " + arg0);
- }
- @Override
- public void onCoreInitFinished() {
- }
- };
- QbSdk.setTbsListener(new TbsListener() {
- @Override
- public void onDownloadFinish(int i) {
- LogUtil.i("onDownloadFinish");
- }
- @Override
- public void onInstallFinish(int i) {
- LogUtil.i("onInstallFinish");
- }
- @Override
- public void onDownloadProgress(int i) {
- LogUtil.i("onDownloadProgress:" + i);
- }
- });
- QbSdk.initX5Environment(getApplicationContext(), cb);
- }
- public static BaseApplication getInstance() {
- return instance;
- }
- }
不要忘记添加:
第三步:创建tbs_activity.xml
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical">
- <com.tencent.smtt.sdk.WebView
- android:id="@+id/webView"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@color/white" />
- </LinearLayout>
第四步:创建TbsActivity.class
- import android.graphics.PixelFormat;
- import android.os.Bundle;
- import android.support.v7.app.AppCompatActivity;
- import android.util.Log;
- import android.view.KeyEvent;
- import android.view.WindowManager;
- import com.tencent.smtt.sdk.WebChromeClient;
- import com.tencent.smtt.sdk.WebSettings;
- import com.tencent.smtt.sdk.WebView;
- import com.tencent.smtt.sdk.WebViewClient;
- import com.xiong.tbs_x5.R;
- /**
- * Created by xiongwenwei@aliyun.com
- * CreateTime: 2017/1/13
- * Note:腾讯浏览服务
- */
- public class TbsActivity extends AppCompatActivity{
- private com.tencent.smtt.sdk.WebView webView;
- private String url = "http://3g.qq.com";
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- getWindow().setFormat(PixelFormat.TRANSLUCENT);//(这个对宿主没什么影响,建议声明)
- getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
- initView();
- loadUrl(url);
- }
- private void initView() {
- webView = (com.tencent.smtt.sdk.WebView) findViewById(R.id.webView);
- }
- private void loadUrl(String url) {
- WebSettings webSettings = webView.getSettings();
- webSettings.setJavaScriptEnabled(true);
- webView.loadUrl(url);
- webView.setWebViewClient(new WebViewClient() {
- @Override
- public boolean shouldOverrideUrlLoading(WebView view, String url) {
- view.loadUrl(url);
- return true;
- }
- @Override
- public void onReceivedError(WebView var1, int var2, String var3, String var4) {
- Log.i("打印日志","网页加载失败");
- }
- });
- //进度条
- webView.setWebChromeClient(new WebChromeClient() {
- @Override
- public void onProgressChanged(WebView view, int newProgress) {
- if (newProgress == 100) {
- Log.i("打印日志","加载完成");
- }
- }
- });
- }
- @Override
- protected void onDestroy() {
- super.onDestroy();
- if (webView != null) webView.destroy();
- }
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK) {
- if (webView != null && webView.canGoBack()) {
- webView.goBack();
- return true;
- }
- return super.onKeyDown(keyCode, event);
- }
- return super.onKeyDown(keyCode, event);
- }
- }
【接入成功效果】
上述代码只是最基础的集成,更多的效果,请移步官网 [官网接入文档]
大概试了下,APP第一次启动好像用的还是自带Webview,猜测是X5内核还没下载完吧
接入成功,标志:1.长按文字会出现"保存离线网页" 2.复制英文会出现"翻译" 3.复制文字会有水滴标志
Android使用腾讯浏览服务X5内核的更多相关文章
-
腾讯浏览服务X5内核集成
腾讯浏览服务X5内核集成https://www.jianshu.com/p/8a7224ff371a TBS 腾讯浏览器服务接入文档https://x5.tencent.com/tbs/guide/s ...
-
集成TBS(腾讯浏览服务)x5内核的webView
由于公司产品需要展示html5页面,一开始我使用的是android自带webview,一些简单的页面没什么问题,但是碰到比较复杂的页面就让人无语了. 1.Android各大厂商都有自己定制的ROM,导 ...
-
TencentTbs腾讯浏览服务 x5内核使用
Tencent TBS (下简称TBS) 腾讯浏览服务 What is it? 百度百科解释: 腾讯浏览服务(Tencent Browsing Service,以下简称TBS),由腾讯X5浏览服务升级 ...
-
MyX5TbsDemo【体验腾讯浏览服务Android SDK (完整版)】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 按照官网上的说明:可独立下载x5内核,也可共享使用微信或手Q的x5内核. 本Demo在引用腾讯X5内核的基础上进行了封装.参考< ...
-
Android应用内实现视频播放--腾讯浏览服务(TBS)
TBS视频播放 TBS视频播放器可以支持市面上几乎所有的视频格式,包括mp4, flv, avi, 3gp, webm, ts, ogv, m3u8, asf, wmv, rm, rmvb, mov, ...
-
MyX5TbsPlusDemo【体验腾讯浏览服务Android SDK (TbsPlus 版)】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 按照官网上的说明:只需接入aar文件和调用一个接口即可完成TBS接入,我们会通过全屏Activity展示TBS WebView,适用 ...
-
Android应用内展示office文件--腾讯浏览服务(TBS)
什么是TBS 依托 X5 内核强大的能力,致力于提供优化移动端浏览体验的整套解决方案(官网介绍).我们可利用其做文件浏览功能,支持多种文件格式,完全可以满足需求.更多介绍请看官网:http://x5 ...
-
android 腾讯x5内核 浏览器
1.浏览器内核: 主流浏览器内核介绍(前端开发值得了解的浏览器内核历史) 浏览器内核历史介绍: 在android 4.4之前,浏览器用的还是webkit 在android 4.4之后,google就抛 ...
-
安卓开发笔记(二十四):手把手教你一步步集成腾讯X5内核(Tencent TBS X5)
1.为什么要集成腾讯X5内核? X5内核相对于系统webview,具有下述明显优势: 1) 速度快:相比系统webview的网页打开速度有30+%的提升: 2) 省流量:使用云端优化技术使流量节省20 ...
随机推荐
-
深入理解PHP内核(十四)类的成员变量及方法
原文链接:http://www.orlion.ga/1237/ 类的成员变量在PHP中本质是一个变量,只是这些变量都归属于某个类,并且给这些变量是有访问控制的. 类的成员方法在PHP中本质是一个函数, ...
-
Azure SoftEther VPN
装个vs2015,想装全组建还得爬墙… 曾经的 Azure OpenVPN 项目 (http://azure-openvpn.github.io/) 好几年木有更新 改用 SoftEther VPN ...
-
FZU 2092 收集水晶 bfs+记忆化搜索 or 暴力
题目链接:收集水晶 一眼看过去,觉得是普通的bfs,初始位置有两个.仔细想了想...好像如果这样的话..........[不知道怎么说...T_T] dp[12][12][12][12][210] 中 ...
-
Quartz.NET配置(Log4net)
最近有个任务关于服务调度,想起以前看过Quartz.NET调度任务非常棒. 今天小试Quartz.NET,前面配置Quartz.NET很轻松,控制台也输出了.但是想配合Log4net来做日志文件,怎么 ...
-
IOS实现小型计算器
作为一名初学者,编辑一款能够在IOS操作系统上运行的计算器是一件很值得自豪的事情,网络上虽然后很多相关的文章和代码,功能也很强大但是我感觉相关的计算器比加复杂,晦涩难懂,所以我想通过这个小小的计算器, ...
-
easyui控件的加载顺序
使用easyui做布局时,会模仿窗口程序界面,做出一些较复杂的布局.按由外层到内层的顺序: (最外层)panel->tabs->tabs1 ->tabs2->layout-&g ...
-
RE:通过移动端滑动手势实现数据加载
背景: 基于要尝试的移动端项目需要有一个通过上拉下滑手势达成加载不同数据的功能,其涉及到滑动手势和ajax数据加载方面的知识点.故对整个实现过程做一个记录整理.个人JS功底有限,看 ...
-
初见mobX
先看如下的代码 const {observable}= mobox; const {observer}=mobxReact; const {Component}=React; const appSta ...
-
记Dagger2使用过程中的一个BUG--compileGoogleDebugJavaWithJavac
项目编译可以通过,不过没有生成Dagger2的类,导致无法运行项目.. 错误提示 Error:(14, 41) 错误: 找不到符号 符号: 类 DaggerAppComponent 位置: 程序包 c ...
-
socket 进阶
1.验证客户端链接的合法性 如果你想在分布式系统中实现一个简单的客户端链接认证功能,又不像SSL那么复杂,那么利用hmac+加盐的方式来实现 import socket import os impor ...