腾讯X5浏览器内核接入

    xiaoxiao2021-04-02  42

    内核接入,需要先下载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)就可以生效了。

     

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

    转载请注明原文地址: https://ju.6miu.com/read-665769.html

    最新回复(0)