腾讯X5浏览器内核接入 – m0_37987029的博客 – CSDN博客

来源: 腾讯X5浏览器内核接入 – m0_37987029的博客 – CSDN博客

内核接入,需要先下载SDK:

官方接入文档:http://x5.tencent.com/tbs/guide/sdkInit.html

这个文档写的相对是很全的了,其实基本上参考这个就可以了。可以完善的地方就是,少了开发者后台的介绍,另外还有一些内容是目前不需要的, 如视频接入及TBSDemo的介绍

 

下面以实际开发应用为主线,介绍下X5接入

一、注册开发者后台,并写入项目配置文件

腾讯浏览服务官网http://x5.tencent.com/ 进入开发者后台,添加一个应用,输入应用名和包名,保存后即可看到生成的AppKey。

关于应用名和包名,其实也没有绝对限制死,用父目录包名也是可行的。

AndroidManifest.xml文件中,在Application标签中加入下面的内容:

  <meta-data  android:name="QBSDKAppKey"  android:value="b09eElbqkGvswnLlToeCKGvM" />

name必须是 “QBSDKAppKey”,value即为开发者后台生成的AppKey

 

二、下载SDK,并引入到Android项目中

下载地址:http://x5.tencent.com/tbs/sdk.html

看到新出了Android Studio版本的sdk,真是一把鼻涕一把泪,想当时为了解决Android Studio中so文件冲突的问题,花了不少时间

 

引入如下图

 

三、添加权限

其实X5并不需要什么特殊的权限,所有的权限都是原项目本身就需要的

在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” />

 

四、引入X5 WebView编码

1、在layout中编码

次要属性请忽略

<com.tencent.smtt.sdk.WebView
    android:id="@+id/mainWebview"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:overScrollMode="never"
    android:scrollbars="none"
    android:textColor="#373636"
    android:textSize="14sp">
</com.tencent.smtt.sdk.WebView>

 

2、Activity引入

其实就是正常的创建一个webview,只不过使用的是X5的WebView,其中有很多非核心代码,如设置标题,缓存设置等,可不关注。

import com.tencent.smtt.export.external.interfaces.GeolocationPermissionsCallback;
import com.tencent.smtt.export.external.interfaces.SslError;
import com.tencent.smtt.export.external.interfaces.SslErrorHandler;
import com.tencent.smtt.sdk.WebChromeClient;
import com.tencent.smtt.sdk.WebSettings;
import com.tencent.smtt.sdk.WebView;
import com.tencent.smtt.sdk.WebViewClient;

mWebView = (WebView) findViewById(R.id.mainWebview);

WebSettings settings = mWebView.getSettings();
settings.setLoadWithOverviewMode(true);
settings.setBuiltInZoomControls(true);
settings.setJavaScriptEnabled(true);
settings.setUseWideViewPort(true);
settings.setSupportZoom(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setCacheMode(WebSettings.LOAD_DEFAULT);

settings.setGeolocationEnabled(true);
settings.setDomStorageEnabled(true);
settings.setDatabaseEnabled(true);
settings.setGeolocationDatabasePath(cacheDirPath);

//设置数据库缓存路径
settings.setDatabasePath(cacheDirPath);
//设置  Application Caches 缓存目录
settings.setAppCachePath(cacheDirPath);
//开启 Application Caches 功能
settings.setAppCacheEnabled(true);

mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
ToastManager.showWarn(“网络请求超时”);
view.stopLoading();
}

@Override
public void onReceivedSslError(WebView webView, SslErrorHandler sslErrorHandler, SslError sslError) {
//super.onReceivedSslError(webView, sslErrorHandler, sslError);
sslErrorHandler.proceed();
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view, url);
}

@Override
public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) {
super.doUpdateVisitedHistory(view, url, isReload);
if (needClearHistory) {
needClearHistory = false;
mWebView.clearHistory();//清除历史记录
}
}
});

mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
TopTitleManager.showTitle(XHZWebActivity.this, title);
}

@Override
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissionsCallback callback) {
callback.invoke(origin, true, false);
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
});

mWebView.loadUrl(url);

 

五、测试X5引入情况

如图 双水滴样式。

X5内核是可以共享使用的,由于微信、QQ、腾讯视频等腾讯系产品都使用了X5内核,所以一般情况下你手机上已经有了X5内核可以直接使用。

如果真没有,首次进入APP时,请求到腾讯浏览服务时,会执行内核下载操作(后台执行,量小,用户感知不到),退出当前请求,再次请求腾讯浏览服务(加载Webview)就可以生效了。

 

至此,如果还是觉得有疑问,可小窗,我保证不。。你

分享到: 更多 (0)