很多应用开始采用 hybrid 开发模式,最近在做有关 webrtc 视频通讯的项目,也是使用 hybrid 开发。然而由于系统 WebView 的兼容性问题(Android 4.4 以前 webview 是基于 webkit ,4.4 及以后采用 chromium)。需要使用一款兼容性较好的内核「完美支持 webrtc」。

这一篇主要讲解腾讯 X5 浏览器的集成,不得不说官方文档 描述的东西太少,如果遇到问题可以去 X5论坛 搜索相关问题。

腾讯 X5 内核也是基于 chromium 的,相比原生的 WebView 而言,优化了用户的浏览体验。SDK 是通过共享使用用户手机上微信、手机QQ、QQ空间等软件已经下载好的 X5 内核。SDK 很小,且集成简单只需几行代码即可。

集成

先去官网下载 SDK 后将所需的 aar 和 so 文件导入我们的工程。

导入SDK

在 module 的 build.gradle 中添加

//sdk中只提供了armeabi的文件夹和对应so文件

ndk {

abiFilters "armeabi", "armeabi-v7a", "x86", "mips"

}

复制代码//添加aar文件

repositories {

flatDir {

dirs 'libs'

}

}

dependencies {

compile(name: '你的aar文件', ext: 'aar')

}

复制代码

复制代码

初始化X5服务

//在application中初始化

@Override

public void onCreate(){

super.onCreate();

//搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。

QbSdk.PreInitCallback callback = new QbSdk.PreInitCallback() {

@Override

public void onViewInitFinished(boolean arg){

//x5內核初始化完成的回调,

// true表示x5内核加载成功,

// false表示x5内核加载失败,会自动切换到系统内核。

}

@Override

public void onCoreInitFinished(){

}

};

QbSdk.initX5Environment(getApplicationContext(), callback);

}

复制代码

在布局中添加 WebView

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

android:id="@+id/progressbar"

style="?android:attr/progressBarStyleHorizontal"

android:layout_width="match_parent"

android:layout_height="3dp" />

android:id="@+id/webview"

android:layout_width="match_parent"

android:layout_height="match_parent" />

复制代码

初始化 Webview

public class MainActivity extends AppCompatActivity{

private ProgressBar progressBar;

private WebView webView;

@Override

protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

progressBar = findViewById(R.id.progressbar);

webView = findViewById(R.id.webview);

initWebView();

}

private void initWebView(){

WebSettings settings = webView.getSettings(); //和系统webview一样

settings.setJavaScriptEnabled(true); //支持Javascript 与js交互

settings.setJavaScriptCanOpenWindowsAutomatically(true);//支持通过JS打开新窗口

settings.setAllowFileAccess(true); //设置可以访问文件

settings.setSupportZoom(true); //支持缩放

settings.setBuiltInZoomControls(true); //设置内置的缩放控件

settings.setUseWideViewPort(true); //自适应屏幕

settings.setSupportMultipleWindows(true); //多窗口

settings.setDefaultTextEncodingName("utf-8"); //设置编码格式

settings.setAppCacheEnabled(true);

settings.setDomStorageEnabled(true);

settings.setAppCacheMaxSize(Long.MAX_VALUE);

settings.setCacheMode(WebSettings.LOAD_NO_CACHE); //缓存模式

webView.setWebViewClient(new WebViewClient() {

@Override

public void onPageStarted(WebView webView, String s, Bitmap bitmap){

super.onPageStarted(webView, s, bitmap);

}

@Override

public void onPageFinished(WebView webView, String s){

super.onPageFinished(webView, s);

}

@Override

public boolean shouldOverrideUrlLoading(WebView webView, String url){

webView.loadUrl(url);

return true;

}

@Override

public void onReceivedSslError(WebView webView, SslErrorHandler sslErrorHandler, SslError sslError){

// super.onReceivedSslError(webView, sslErrorHandler, sslError);

sslErrorHandler.proceed();//忽略SSL证书错误

}

});

webView.setWebChromeClient(new WebChromeClient() {

@Override

public boolean onJsAlert(WebView webView, String s, String s1, JsResult jsResult){

return super.onJsAlert(webView, s, s1, jsResult);

}

@Override

public void onReceivedTitle(WebView webView, String s){

super.onReceivedTitle(webView, s);

}

@Override

public void onProgressChanged(WebView webView, int progress){

super.onProgressChanged(webView, progress);

if(...){

...

progressBar.setProgress(progress); //设置进度条

...

} else {

...

}

}

}

});

webView.loadUrl("http://www.baidu.com");

// webView.reload(); 刷新页面

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event){

if ((keyCode == KeyEvent.KEYCODE_BACK) && webView != null && webView.canGoBack()) {

webView.goBack();

return true;

} else {

...

}

}

}

复制代码

总结

上述已经完成 X5 内核集成。首次使用可能还在下载 X5 内核而使用系统内核。如有特殊需求可以采用静态集成(集成以后无法更新 X5 内核是硬伤)。

提示

之前在使用 X5 内核时,声明了 RECORD_AUDIO 权限后麦克风依然采集不到声音,后来发现没有添加

添加以后麦克风可以正常采集声音。此权限是修改音频设置。有更多疑问请在 X5论坛 释疑。

最后推荐几个检查 X5 内核是否成功加载的工具和网址。

最后

关于Crosswalk集成请跳转:

android 浏览器 内核版本,Android集成三方浏览器之X5内核相关推荐

  1. Android集成三方浏览器之X5内核,讲的明明白白

    腾讯 X5 内核也是基于 chromium 的,相比原生的 WebView 而言,优化了用户的浏览体验.SDK 是通过共享使用用户手机上微信.手机QQ.QQ空间等软件已经下载好的 X5 内核.SDK ...

  2. Android集成三方浏览器之Crosswalk

    上一篇讲解了腾讯 X5 内核的集成,这一篇是讲解 Crosswalk 的集成 Crosswalk 也是采用了Chromenium 内核,是一款开源的 web 引擎,开发者可以直接把 Crosswalk ...

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

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

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

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

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

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

  6. x5内核在android 4.4卡顿,css,javascript_安卓手机X5内核浏览器下动画超级卡的解决办法?,css,javascript,html5 - phpStudy...

    安卓手机X5内核浏览器下动画超级卡的解决办法? 碰到一个问题,我写了一个H5页面,里面有的动画在ios手机上运行十分流畅,一点都不卡,唯独在部分安卓手机下打开十分卡,卡顿到怀疑人生,我进行了一些优化, ...

  7. Android浏览器速度测试,Android平台浏览器网页加载速度对比评测

    参与测试的浏览器 手机上网已经渐渐成为人们的一种习惯,无论在等公交时.乘地铁时.吃饭等餐时,很多朋友都习惯掏出手机简单浏览一下微博.人人.新闻网站等页面.移动网络的确为我们带来了莫大的便利,但网速和稳 ...

  8. android浏览器测试,主流Android浏览器功能对比测试

    Android浏览器功能测试 网络浏览是智能手机最基本也是最常用的功能之一,由于种种原因几乎所有用户都不会使用系统自带的浏览器,而选择安装第三方浏览器.浏览器的选择在很大程度上会直接影响到我们的上网体 ...

  9. android 浏览器 查看证书,android浏览器弹出该网站的安全证书有问题如何解决

    android浏览器弹出该网站的安全证书有问题如何解决. 平台 CPU: RK3288 OS: android 5.11 问题 浏览器访问HTTPS网站时, 弹出 "该网站的安全证书有问题. ...

  10. android发布release版本,Android同时安装Release和Debug版本的方法

    一般项目做到后期,在测试的时候,需要在测试版本和正式版本之间进行频繁的切换,怎么办呢?土豪的话可以考虑使用两台机器,同时测试,然而为了方便测试,节约成本,最好的办法当然是在同一台机器上安装不同的版本. ...

最新文章

  1. 微信小程序--搭建linux服务器并部署java后端程序2021
  2. day17.Python中lambda表达式应用
  3. 中科大少年班目前为止出过多少大牛?
  4. c语言5的阶乘流程图_5 种前途迷茫的编程语言
  5. python中with的用法简单来说_Python中with的用法
  6. 【Flink】Flink 周期性 watermark 的 传播 AssignerWithPeriodicWatermarks
  7. 使用electron开发指静脉客户端遇到的问题总结
  8. 基于全网最棒的Vue教学视频(尚硅谷张天禹老师)整理出的最详细的Vue指令笔记
  9. 北大青鸟软件工程师 ACCP6.0课程体系
  10. springmvc GET POST 接受参数方式
  11. 火影忍者新忍出击服务器正在维修,火影忍者手游更新公告 新忍出击资源翻倍...
  12. 成为一名合格Android架构师,移动APP开发框架盘点,面试资料分享
  13. 2022年全球市场高空作业平台总体规模、主要生产商、主要地区、产品和应用细分研究报告
  14. android获取wifi开关,Android WiFi开发(一)--WiFi开关与状态监听
  15. UWB高精度定位落地:中大型区域动态人员精细网格化管理
  16. stm32f407固件库移植ucosii_v2.92.07
  17. Markdown表情符号简码列表
  18. 关机程序源代码——千万不要点运行!!!hahaha
  19. 国外最牛逼的17种商业模式
  20. 小明的字符串--牛客

热门文章

  1. 安装 | MATLAB2020a (64位) 安装教程及安装包下载链接
  2. python手册中文版pdf-python中文官方文档 PDF 下载
  3. 系统动力学软件vensim学习之lookup
  4. 计算机安装pdf打印机驱动,win7电脑安装pdf虚拟打印机,教您安装方法
  5. 视频教程-大数据编程语言scala讲座-其他
  6. ISCC2021-WP合集
  7. linux软件中心无法安装软件,linux中软件的安装
  8. 高等数学 第七版 上册 下册 答案
  9. c语言逐行存储到txt,c语言逐行读取txt文件数据
  10. Rufus制作USB启动盘