日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 整合最新X5WebView 以及离线安装教程

發布時間:2023/12/31 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 整合最新X5WebView 以及离线安装教程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在build.gradle中添加依賴
?

implementation 'com.tencent.tbs:tbssdk:44216'

為了保障內核的動態下發和正常使用,您需要在您的AndroidManifest.xml增加如下權限:

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

為了保障X5功能的正常使用,您需要在您的proguard-rules.pro文件中添加如下混淆配置:

-keepattributes Exceptions-keep class com.tencent.smtt.export.external.**{*;} -keep class com.tencent.smtt.export.internal.**{*;}

?首次初始化冷啟動優化

// 在調用TBS初始化、創建WebView之前進行如下配置 HashMap map = new HashMap(); map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true); map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true); QbSdk.initTbsSettings(map);

?在項目啟動類加入此代碼
?

/* 設置允許移動網絡下進行內核下載。默認不下載,會導致部分一直用移動網絡的用戶無法使用x5內核 */QbSdk.setDownloadWithoutWifi(true);QbSdk.setCoreMinVersion(QbSdk.CORE_VER_ENABLE_202112);/* SDK內核初始化周期回調,包括 下載、安裝、加載 */QbSdk.setTbsListener(new TbsListener() {/*** @param stateCode 用戶可處理錯誤碼請參考{@link com.tencent.smtt.sdk.TbsCommonCode}*/@Overridepublic void onDownloadFinish(int stateCode) {Log.i("TAG", "onDownloadFinished: " + stateCode);}/*** @param stateCode 用戶可處理錯誤碼請參考{@link com.tencent.smtt.sdk.TbsCommonCode}*/@Overridepublic void onInstallFinish(int stateCode) {Log.i("TAG", "onInstallFinished: " + stateCode); // if(stateCode==200){ // ToastUtils.showToast("初始化X5內核成功。。。。",mContext); // }}/*** 首次安裝應用,會觸發內核下載,此時會有內核下載的進度回調。* @param progress 0 - 100*/@Overridepublic void onDownloadProgress(int progress) {Log.i("TAG", "Core Downloading: " + progress);}});/* 此過程包括X5內核的下載、預初始化,接入方不需要接管處理x5的初始化流程,希望無感接入 */QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {@Overridepublic void onCoreInitFinished() {// 內核初始化完成,可能為系統內核,也可能為系統內核}/*** 預初始化結束* 由于X5內核體積較大,需要依賴wifi網絡下發,所以當內核不存在的時候,默認會回調false,此時將會使用系統內核代替* 內核下發請求發起有24小時間隔,卸載重裝、調整系統時間24小時后都可重置* 調試階段建議通過 WebView 訪問 debugtbs.qq.com -> 安裝線上內核 解決* @param isX5 是否使用X5內核*/@Overridepublic void onViewInitFinished(boolean isX5) {Log.i("TAG", "onViewInitFinished: " + isX5);// hint: you can use QbSdk.getX5CoreLoadHelp(context) anytime to get help.if(isX5){ToastUtils.showToast("X5內核安裝成功。。。。",mContext);}else{ToastUtils.showToast("X5內核安裝失敗。。。。",mContext);initX5WebView();}}});// 在調用TBS初始化、創建WebView之前進行如下配置 HashMap map = new HashMap(); map.put(TbsCoreSettings.TBS_SETTINGS_USE_SPEEDY_CLASSLOADER, true); map.put(TbsCoreSettings.TBS_SETTINGS_USE_DEXLOADER_SERVICE, true); QbSdk.initTbsSettings(map);

或者在?AndroidManifest.xml配置新增

<service android:name="com.tencent.smtt.export.external.DexClassLoaderProviderService" android:label="dexopt" android:process=":dexopt" > </service>

布局文件

<LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/li_jitsi"android:orientation="vertical"android:background="#ffffff"android:layout_marginTop="?attr/actionBarSize"><com.tencent.smtt.sdk.WebViewandroid:id="@+id/webView"android:visibility="visible"android:layout_width="match_parent"android:layout_height="match_parent"/></LinearLayout>

webView = mView.findViewById(R.id.webView); WebSettings ws = webView.getSettings();ws.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);//設置布局,會引起WebView的重新布局(relayout),默認值NARROW_COLUMNSws.setLoadsImagesAutomatically(true);//自動加載圖片資源ws.setJavaScriptCanOpenWindowsAutomatically(true);ws.setJavaScriptEnabled(true);//執行javascript腳本ws.setUseWideViewPort(true);//支持HTML的“viewport”標簽或者使用wide viewportws.setLoadWithOverviewMode(true);//縮小內容以適應屏幕寬度ws.setGeolocationEnabled(true);//啟用定位ws.setAppCacheEnabled(true);ws.setDomStorageEnabled(true);//啟用DOM存儲APIws.setDefaultTextEncodingName("utf-8");//設置編碼格式webView.requestFocus();webView.canGoForward();webView.canGoBack();webView.addJavascriptInterface(new JsInterface(mContext,roomName),"AndroidWebView");String JITSI_URL = SharedPUtils.findByKey(mContext,"JITSI_URl");webView.loadUrl(JITSI_URL);//覆蓋WebView默認使用第三方或系統默認瀏覽器打開網頁的行為,使網頁用WebView打開webView.setWebViewClient(new WebViewClient(){@Overridepublic boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {view.loadUrl(url);return true;}@Overridepublic void onReceivedSslError(WebView var1, SslErrorHandler handler, SslError var3) {handler.proceed(); //表示等待證書響應//handler.cancel(); //表示掛起連接,為默認方式// handler.handleMessage(null); //可做其他處理}});webView.setWebChromeClient(new WebChromeClient(){@Overridepublic void onPermissionRequest(final PermissionRequest request) {request.grant(request.getResources());}});

注意引用的包:

然后運行項目 當

/*** 預初始化結束* 由于X5內核體積較大,需要依賴wifi網絡下發,所以當內核不存在的時候,默認會回調false,此時將會使用系統內核代替* 內核下發請求發起有24小時間隔,卸載重裝、調整系統時間24小時后都可重置* 調試階段建議通過 WebView 訪問 debugtbs.qq.com -> 安裝線上內核 解決* @param isX5 是否使用X5內核*/@Overridepublic void onViewInitFinished(boolean isX5) {Log.i("TAG", "onViewInitFinished: " + isX5);// hint: you can use QbSdk.getX5CoreLoadHelp(context) anytime to get help.if(isX5){ToastUtils.showToast("X5內核安裝成功。。。。",mContext);}else{ToastUtils.showToast("X5內核安裝失敗。。。。",mContext);initX5WebView();}}

?isX5 為true 說明內核下載成功,但是X5webview 很多機型都首次都下載不了, 所以我又嘗試 了離線安裝,但是app打包的apk會增加40M左右,可以參考地址
TBS文件瀏覽自主安裝內核方案_ThankSars的博客-CSDN博客_tbs內核

總結

以上是生活随笔為你收集整理的android 整合最新X5WebView 以及离线安装教程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。