来源: 腾讯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)就可以生效了。
至此,如果还是觉得有疑问,可小窗,我保证不。。你