腾讯X5内核使⽤AndroidWebView的⼀些⼩问题
⼤家好,我是博客⼩⽩,第⼀篇⽂章,⽂笔不好,务喷,希望能给各位提供点帮助
公司做个商城,然后我就简单的做个启动引导页,然后⽤个原⽣WebView套⼀下,加个加载动画,解决下第三⽅登录⽀付的返回问题,这些问题以前也搞过,哎哟,俩⼩时,⼀个项⽬OK了,沾沾⾃喜中。
然后过了⼏天,⽼板就开始反馈,APP加载太慢了,滑动卡顿,然后叫我组解决。然后我想了下,已经设置了延时加载图⽚,你这个图⽚那么多,卡卡的怪我咯,想了想,哎,想在下⾯这个⽅法中搞个图⽚压缩替代
1 @Override
2public WebResourceResponse shouldInterceptRequest(WebView webView, String s) {
3return super.shouldInterceptRequest(webView, s);
4 }
然后,我忘记了百度搜索什么⿁的时候,在⼀个贴吧看到了腾讯X5内核,替代系统内核,然后我果断搜索下了官⽹
x5.tencent/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导⼊的类和接⼝都改导⼊  t.smtt.sdk  ⾥⾯的类,类接⼝名对应
3. l⾥加⼊权限声明:
<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() {
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;
安卓intent用法
}
@Override
public void 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 = X5WebViewExtension();
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) {
mGoBackUrlList.clear();
} else {
if (mMainWebView.canGoBackOrForward(-index)) {
mGoBackUrlList.clear();
} else {
mGoBackUrlList.clear();
}
}
} else {
}
}
暂时能⽤,没⼈教我,只好⽤笨⽅法了 (PS:我想喷⼀下银联⽹页在线⽀付,你特么是⼤爷,进去了不绑定银⾏卡,不⽀付你特么就不然退是吧,⾏吧,⼤爷)
好了,就到这了,上⾯返回的问题,有⼈晓得不,能告诉下我不。哎哟,谢谢哥⼏位啦
(⼩弟菜鸟⼀枚,来到新地⽅,多有得罪,别见怪哈)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。