大家好,我是博客小白,第一篇文章,文笔不好,务喷,希望能给各位提供点帮助

公司做个商城,然后我就简单的做个启动引导页,然后用个原生WebView套一下,加个加载动画,解决下第三方登录支付的返回问题,这些问题以前也搞过,哎哟,俩小时,一个项目OK了,沾沾自喜中。

然后过了几天,老板就开始反馈,APP加载太慢了,滑动卡顿,然后叫我组解决。然后我想了下,已经设置了延时加载图片,你这个图片那么多,卡卡的怪我咯,想了想,哎,想在下面这个方法中搞个图片压缩替代

 @Override
public WebResourceResponse shouldInterceptRequest(WebView webView, String s) {
return super.shouldInterceptRequest(webView, s);
}

然后,我忘记了百度搜索什么鬼的时候,在一个贴吧看到了腾讯X5内核,替代系统内核,然后我果断搜索下了官网   http://x5.tencent.com/tbs/

(Ps: 这编辑器什么鬼啊,怎么没有url输入啊,还有,我编辑了html代码,加了个<a>标签为什么不管用)

哎哟,不错啊,高大上啊,赶紧下个demo,看着套一下,挺高大上的,你们看 ↓↓↓↓↓↓↓↓↓↓↓↓

哇,简直了对吧,哈哈,就你了。

下载官方demo,然后,怎么是个eclipse的版本啊,而且只有这一个,这简直不能配上马总的高大上啊,哎哟算了,先导入运行再说。

导入as后,配置下gradle,导入jar包,so库,哎哟,腾讯就是腾讯啊,资源,代码一个错误没有,用gradlew build打个包瞅瞅呗。

咦,报错了,这个错误见过很多次,资源错误,模块冲突,都爆这个错误, 应该是包导入有问题吧。

然后,我怀疑我遇到个假腾讯网站,不说了,贴图


资源清单里面有4个activity没有定义,握草什么鬼,你认真的找了一遍,jar看完也没有这些activity啊,啧啧啧,注释掉也跑不了

然后我再次百度了下腾讯X5内核官网,百度上这一个X5官网,就这个,握草,腾讯,马总,看在我为你花了那么多钱的份上,你就这么对待我这位金主的么

哎,官网靠不住,马上上百度。

在百度瞅了瞅,然后顺便集成下,下面我就和各位说下我的集成步骤(可用)。

1.  导入jar包,和so库

2. 用到的所有原生WebView导入的类和接口都改导入  com.tencent.smtt.sdk   里面的类,类接口名对应

3. AndroidManifest.xml里加入权限声明:

<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" />

4. 初始化X5内核。

// 在 application 里面加入
@Override
public void onCreate() {
super.onCreate(); preinitX5WebCore();
//预加载x5内核
Intent intent = new Intent(this, AdvanceLoadX5Service.class);
startService(intent);
} private void preinitX5WebCore() {
if (!QbSdk.isTbsCoreInited()) {
QbSdk.preInit(getApplicationContext(), null);// 设置X5初始化完成的回调接口
}
} // x5 init service
public class AdvanceLoadX5Service extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
} @Override
public void onCreate() {
super.onCreate();
initX5();
} private void initX5() {
// 预加载X5内核
QbSdk.initX5Environment(getApplicationContext(), cb);
} QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() { @Override
public void onViewInitFinished(boolean arg0) {
// TODO Auto-generated method stub
//初始化完成回调
} @Override
public void onCoreInitFinished() {
// TODO Auto-generated method stub
}
}; }

握草, 能用了,好感动  , 哈哈哈哈

然后还有就是,它右边自带滚动条小方块,用WebView去滚动的方法没软用,↓↓↓↓↓

        mMainWebView.setHorizontalScrollBarEnabled(false);
mMainWebView.setVerticalScrollBarEnabled(false);
//下面方法去掉
IX5WebViewExtension ix5 = mMainWebView.getX5WebViewExtension();
if (null != ix5) {
ix5.setScrollBarFadingEnabled(false);
}

好了,经过上面的配置,x5能搞了

说下x5内核优点:

1. 原生WebView自带不支持git图片   x5支持

2. 恩,加载快很多,它对图片压缩加载了

3.  显示的时候,就是回调 onPageFinished() 这个的时候,界面已经很流畅了,这个boos肥肠满意

4. x5看在我帅的面子上没给我报错,恩,好东西

我想说下第三方登录支付返回的问题和我的解决方案:

1. 我在 WebViewClient 接口的 onPageStarted() 用 ListView 保存非本公司的所有url (如果你问我为啥不在onPageFinished,也行我会告诉你我乐意,不不不,放onPageFinished有问题,别问我为什么,我不知道,你打印这俩个地方的url,特喵的少了几个url)

2. 我在onBackPressed() 里面搞了点事,至于什么事,不好解释呀,贴代码吧

@Override
public void onBackPressed() { if (mMainWebView.canGoBack()) {
int index = mGoBackUrlList.size();
if (index == 0 || index == 1) {
mMainWebView.goBack();
mGoBackUrlList.clear();
} else {
if (mMainWebView.canGoBackOrForward(-index)) {
mMainWebView.goBackOrForward(-index);
mGoBackUrlList.clear();
} else {
mMainWebView.goBack();
mGoBackUrlList.clear();
}
} } else {
super.onBackPressed();
}
}

暂时能用,没人教我,只好用笨方法了 (PS:我想喷一下银联网页在线支付,你特么是大爷,进去了不绑定银行卡,不支付你特么就不然退是吧,行吧,大爷)

好了,就到这了,上面返回的问题,有人晓得不,能告诉下我不。 哎哟,谢谢哥几位啦

(小弟菜鸟一枚,来到新地方,多有得罪,别见怪哈)

腾讯X5内核使用 Android WebView 的一些小问题的更多相关文章

  1. android 腾讯x5内核 浏览器

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

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

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

  3. 腾讯x5Webview取代原生android Webview

    一.官方地址: https://x5.tencent.com/tbs/ 二.不需要申请开发者,QQ直接登录,下载即可集成到项目中. 三.与原生的webview对比优势 1) 速度快:相比系统webvi ...

  4. 腾讯X5内核使用详解(X5内核播放器使用如何去除控制栏全屏播放)以及一些注意事项

    例子下载地址 https://www.lanzous.com/i2zsv5g      GIT就不用了麻烦的不行 本人安卓刚学 就上X5内核弄了老长时间由于对maven 和idea不熟悉刚开始导包都是 ...

  5. 记录一次腾讯X5内核64位手机初始化失败

    之前一直在使用x5内核,只需要一个jar包和so文件就能让webview实现多余原生webview的水平,在32位的手机上能够正常运行,但是到了64位手机上就报如下错误: E/ERROR:: .... ...

  6. Android WebView 加载超长 JS 数据

    在之前的文章里面,我总结过WebView如何与网页交互,也就是Java如何和JS交互 —— Android WebView 总结 —— Java和JavaScript交互. 基于这篇文章,我们基本上能 ...

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

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

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

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

  9. 静态集成腾讯TBS X5内核WebView,从微信提取新版30M浏览器内核打包进apk

    目录 前情提要 第一步:下载老版本SDK得到jar 获取SDK 集成SDK 步骤二.下载提取最新TBS X5内核 方法1:从微信中提取 方法2:App内内访问tbs调试页安装新内核 步骤三.集成内核到 ...

随机推荐

  1. js局部变量,参数

    作者:zccst 所有函数的参数都是按值传递的.也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样.基本类型值的传递如同基本类型变量的赋值一样.而引用类型值的传递,则 ...

  2. 让程序同时只能运行一个C++ Builder实现(转)

    源:让程序同时只能运行一个 很多人都讨论过这个问题, 这里用Victor串口控件里面现成的共享内存功能来实现. 当程序运行第二次时只是激活第一次运行的窗口, 而不是再运行一个程序. 需要在主程序里实现 ...

  3. ios 计算字符串长度<转>

    - (int)textLength:(NSString *)text//计算字符串长度 {     float number = 0.0;     for (int index = 0; index ...

  4. IOS即时通讯XMPP搭建openfire服务器

    一.下载并安装openfire 1.到http://www.igniterealtime.org/downloads/index.jsp下载最新openfire for mac版 比如:Openfir ...

  5. DataTable distinct 去重复

    有时我们需要从DataTable中抽取Distinct数据,以前总是以对DataTable进行foreach之类纯手工方式获取. 近来发现DataView可以帮我们直接获取Distinct数据,汗一个 ...

  6. java语法:字符串数组的赋值

    字符串数组怎么赋值呢? 首先当然得先定义啦:String infoPack[] : 然后想当然的以为在for循环里,new一个数组, String infoPack[i] = imgurls; 事实证 ...

  7. Leetcode 181. Employees Earning More Than Their Managers

    The Employee table holds all employees including their managers. Every employee has an Id, and there ...

  8. Nginx基本配置、性能优化指南

    大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了!而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能 ...

  9. Swift 添加到TableView实现动画效果

    let indexPath = NSIndexPath(forRow:0 ,inSection:0) self.tableView.insertRowsAtIndexPaths([indexPath] ...

  10. centos服务器设置代理上网的方法

    这里以centos7.0为例,记录代理服务器设置过程: 1.全局的代理设置: vi /etc/profile 添加下面内容 http_proxy = http://username:password@ ...