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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android集成三方浏览器之Crosswalk

發布時間:2024/1/17 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android集成三方浏览器之Crosswalk 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇講解了騰訊 X5 內核的集成,這一篇是講解 Crosswalk 的集成 Crosswalk 也是采用了Chromenium 內核,是一款開源的 web 引擎,開發者可以直接把 Crosswalk 嵌入到應用之中,當然也支持共享模式(系統中沒有對應的 Crosswalk 庫是會提示下載)。只不過 Crosswalk 已經停止維護了。

Crosswalk官網

集成

想要使用 CrossWalk 有三種方式:

  • maven 遠程依賴
  • //配置gradlerepositories {maven {url 'https://download.01.org/crosswalk/releases/crosswalk/android/maven2'}} 復制代碼compile 'org.xwalk:xwalk_core_library:23.53.589.4' 復制代碼

    2.下載 zip 包后解壓,然后以用開發工具Import Module導入,作為一個library依賴。

    推薦使用stable(穩定版)!其他的分別是beta(測試版),canary(金絲雀版)。下載最新版本的zip包:23.53.589.4

    3.下載aar 下載aar包后導入項目的 lib目 錄下,然后在gradle中添加

    repositories {flatDir {dirs 'libs'} } 復制代碼compile(name: 'crosswalk-23.53.589.4', ext: 'aar') 復制代碼

    使用

    1.manifest中添加

    android:hardwareAccelerated="true" //application節點下開啟硬件加速 復制代碼<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> 復制代碼

    2.布局中添加

    <org.xwalk.core.XWalkViewandroid:id="@+id/xwalkview"android:layout_width="match_parent"android:layout_height="match_parent"></org.xwalk.core.XWalkView> 復制代碼

    3.新建 Activity 繼承 XWalkActivity,onXWalkReady() 方法里面進行初始化操作

    class MainActivity : XWalkActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)}override fun onXWalkReady() {XWalkPreferences.setValue(XWalkPreferences.ANIMATABLE_XWALK_VIEW, true); //開啟默認動畫var setting = xwalkview.settingssetting.loadWithOverviewMode = falsesetting.javaScriptEnabled = true //支持jssetting.javaScriptCanOpenWindowsAutomatically = true //支持通過JS打開新窗口setting.useWideViewPort = true //將圖片調整到合適webview的大小setting.loadWithOverviewMode = true //縮放至屏幕的大小setting.loadsImagesAutomatically = true //支持自動加載圖片setting.supportMultipleWindows() //支持多窗口setting.setSupportZoom(true)setting.allowFileAccess = truesetting.setDomStorageEnabled(true)setting.allowContentAccess = truesetting.allowContentAccess = truesetting.domStorageEnabled = truexwalkview.requestFocus()setting.cacheMode = WebSettings.LOAD_NO_CACHExwalkview.setResourceClient(object : XWalkResourceClient(xwalkview) {override fun onLoadStarted(view: XWalkView?, url: String?) {super.onLoadStarted(view, url)}override fun onLoadFinished(view: XWalkView?, url: String?) {super.onLoadFinished(view, url)}override fun shouldOverrideUrlLoading(view: XWalkView?, url: String?): Boolean {view?.loadUrl(url)return true}override fun onReceivedSslError(view: XWalkView?, callback: ValueCallback<Boolean>?, error: SslError?) {callback?.onReceiveValue(true)super.onReceivedSslError(view, callback, error)}override fun onReceivedLoadError(view: XWalkView?, errorCode: Int,description: String?, failingUrl: String?) {super.onReceivedLoadError(view, errorCode, description, failingUrl)}override fun onProgressChanged(view: XWalkView?, process: Int) {super.onProgressChanged(view, process)if (...) {...progressBar.setProgress(process)...} else {...}}})xwalkview.setUIClient(object :XWalkUIClient(xwalkview){override fun onJsAlert(view: XWalkView?, url: String?, message: String?, result: XWalkJavascriptResult?): Boolean {return super.onJsAlert(view, url, message, result)}override fun onReceivedTitle(view: XWalkView?, title: String?) {super.onReceivedTitle(view, title)}override fun openFileChooser(view: XWalkView?, uploadFile: ValueCallback<Uri>?, acceptType: String?, capture: String?) {super.openFileChooser(view, uploadFile, acceptType, capture)}})xwalkview.loadUrl("your url")}override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {if (xwalkview!=null){xwalkview.onActivityResult(requestCode, resultCode, data)}}override fun onNewIntent(intent: Intent?) {if (xwalkview != null) {xwalkview.onNewIntent(intent)}}override fun onDestroy() {super.onDestroy()XWalkPreferences.setValue(XWalkPreferences.ANIMATABLE_XWALK_VIEW, false);} } 復制代碼

    XWalkUIClient 對應系統 webview 中的 WebChromeClient

    XWalkResourceClient 對應系統 webview 的 WebViewClient

    • 監聽頁面生命
    override fun onResume() {super.onResume()xwalkview?.let {xwalkview.pauseTimers()xwalkview.onHide()} } override fun onPause() {super.onPause()xwalkview?.let {xwalkview.pauseTimers()xwalkview.onHide()} } 復制代碼
    • 判斷頁面返回
    if (xwalkview.navigationHistory.canGoBack()) {xwalkview.getNavigationHistory().navigate(XWalkNavigationHistory.Direction.BACKWARD, 1) } else {finish() } 復制代碼

    提示

    在使用 Crosswalk 的過程遇到了幾個問題,在這里提一下,希望能有一點幫助。

  • lang.RuntimeException: Crosswalk's APIs are not ready yet異常:請在onready里面進行相關設置和加載頁面
  • 使用第一種 maven 集成方式 可能會報資源異常 在你的 build.gradle 中添加:
  • configurations.all {resolutionStrategy {force 'com.android.support:support-v4:27.1.0'//自己的版本號} } 復制代碼

    3.Crosswalk 加載 SSL 證書有問題的網站時會報 Rquest was denied for security

    override fun onReceivedSslError(view: XWalkView?, callback: ValueCallback<Boolean>?, error: SslError?) {callback?.onReceiveValue(true) //系統webview中的是handler.process() } 復制代碼

    添加上述代碼后會回調 onReceivedLoadError并報net:: ERR_SECURITY_RESPONSE。這個問題折騰了很久,在 xwalkview的論壇 中發現 Crosswalk 會阻止連接到不信任的 SSL。

    最后發現源碼中的 SsLUtil.java 會阻止加載。

    public static boolean shouldDenyRequest(int error) {assert error >= -215 && error <= -200;switch (error){case -213:case -212:case -211:case -208:case -207:case -206:case -203: // case -202: case -201: // case -200: case -150:case -129:return true;}return false; } 復制代碼

    修改后的資源已忽略證書安全問題「不建議忽略證書安全問題,我是測試環境所需」

    參考文檔:

    Crosswalk官網

    Crosswalk Api 文檔

    Crosswalk 項目

    官方論壇

    最后

    關于騰訊 X5 內核集成請跳轉:

    Android集成三方瀏覽器之X5內核

    轉載于:https://juejin.im/post/5b4ef7a56fb9a04fc5649dff

    總結

    以上是生活随笔為你收集整理的Android集成三方浏览器之Crosswalk的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 日韩 在线 | 国产一区二区三区四区hd | 欧美激情欧美激情在线五月 | 干一夜综合 | 18无套直看片红桃 | 麻豆国产av超爽剧情系列 | 深爱开心激情 | 国产精品一区一区三区 | 丰满熟女人妻一区二区三区 | 免费在线观看一区二区 | 日本一二区视频 | 伊人色爱 | 伊人超碰在线 | 天堂网2020| 幸福,触手可及 | 91精品久久久久久粉嫩 | 怡红院最新网址 | 国产午夜福利在线播放 | 国产a级片视频 | 国产偷人爽久久久久久老妇app | 久久538 | 神马午夜伦理影院 | 日韩国产欧美精品 | 国产色一区二区 | 欧美日韩中文字幕在线 | 神马久久精品 | 欧美成人激情视频 | 国产精品va无码一区二区 | 日日av| 精品www久久久久久奶水 | 中文精品在线 | 学生孕妇videosex性欧美 | 亚洲高清在线免费观看 | 久热中文字幕 | 一区二区美女 | 亚洲在线不卡 | 男人用嘴添女人下身免费视频 | 欧美黑人粗大 | 成人激情开心 | 成人高清视频免费观看 | 精品无码一区二区三区蜜臀 | 久久桃花网 | 天天艹夜夜 | 中文字幕成人在线视频 | www.av在线.com| 日韩另类av| 午夜a区| 国产a一区二区三区 | 亚洲综合一区在线观看 | 国产一区二区在线视频 | 337p粉嫩大胆色噜噜噜 | 人成在线视频 | 一区二区日本视频 | 国产精品自拍区 | 原创av| 国产成人精品一区二区三区视频 | 国产精品色视频 | 亚洲成人精品在线观看 | 欧美一级片在线观看 | 亚洲三级影院 | 亚洲性一区 | 一级片免费网站 | 国内自拍视频在线播放 | 精品国产乱码久久久久夜深人妻 | 午夜精品一区二区三区三上悠亚 | 亚洲最大在线观看 | 天天av综合 | 国产愉拍 | 精品国偷自产在线 | 美女扒逼| 亚洲高清视频在线观看 | 国产成人精品一区二区在线小狼 | 99精品一级欧美片免费播放 | 91se在线| 亚洲天堂网站 | 本道久久 | 99色综合 | 99久久综合国产精品二区 | www黄色com | 在线观看av国产一区二区 | 日日操夜夜撸 | 国产在线久久久 | 最新av不卡 | 夜夜涩| 亚洲成人av综合 | 奇米在线777 | 精品麻豆视频 | 99热这里有精品 | 插女生下面 | 91久色蝌蚪 | 香蕉啪啪网| 欧美另类极品videosbest使用方法 | 亚洲成a人片77777kkkk | 午夜精品久久久久久久 | 亚洲特黄特色 | av国产一区二区 | 国产精品极品 | 在线日韩亚洲 | jizz在亚洲 |