# XWebView **Repository Path**: ashlikun/XWebView ## Basic Information - **Project Name**: XWebView - **Description**: XWebView - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-01-05 - **Last Updated**: 2024-01-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README [![Release](https://jitpack.io/v/ashLikun/XWebView.svg)](https://jitpack.io/#ashLikun/XWebView) # **XWebView** XWebView 是一个基于的 Android WebView ,极度容易使用以及功能强大的库,提供了 Android WebView 一系列的问题解决方案 ,并且轻量和极度灵活。 ## 使用方法 * build.gradle文件中添加: ```gradle allprojects { repositories { maven { url "https://jitpack.io" } } } ``` * 并且: ```gradle dependencies { implementation 'com.github.ashLikun.XWebView:core:{latest version}'//原生WebView implementation 'com.github.ashLikun.XWebView:core-x5:{latest version}'//使用腾讯X5,需要自行下载sdk(jar包) } ``` * #### 基本用法 ```java xWeb = XWeb.withXml(this) .useDefaultIndicator() .setWebWebSettings(getWebSettings()) .setWebView(webView) .setWebChromeClient(mWebChromeClient) .createWeb() .ready() .go(url); ``` * #### 调用 Javascript 方法拼接太麻烦 ? 请看 。 ```javascript function callByAndroid(){ console.log("callByAndroid") } xWeb.getJsAccessEntrace().quickCallJs("callByAndroid"); ``` * #### Javascript 调 Java ? ```java xWeb.getJsInterfaceHolder().addJavaObject("android",new AndroidInterface(xWeb,this)); window.android.callAndroid(); ``` * #### 事件处理 ```java @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (xWeb.handleKeyEvent(keyCode, event)) { return true; } return super.onKeyDown(keyCode, event); } ``` * #### 跟随 Activity Or Fragment 生命周期 , 释放 CPU 更省电 。 ```java @Override protected void onPause() { xWeb.getWebLifeCycle().onPause(); super.onPause(); } @Override protected void onResume() { xWeb.getWebLifeCycle().onResume(); super.onResume(); } @Override public void onDestroyView() { xWeb.getWebLifeCycle().onDestroy(); super.onDestroyView(); } ``` * #### JsBridge? XBridgeWebView 其他就参考JsBridge * #### 全屏视频播放 ``` android:hardwareAccelerated="true" android:configChanges="orientation|screenSize" ``` * #### 定位 ``` ``` * #### 返回上一页 ```java if (!xWeb.back()){ finish(); } ``` * #### 获取 WebView ```java xWeb.getWebCreator().getWebView(); ``` * #### 查看 Cookies ```java String cookies=XWebConfig.getCookiesByUrl(targetUrl); ``` * #### 同步 Cookie ```java XWebConfig.syncCookie("http://www.jd.com","ID=XXXX"); ``` * #### MiddlewareWebChromeBase 支持多个 WebChromeClient ```java useMiddlewareWebClient(middleWrareWebClientBase) ``` * #### MiddlewareWebClientBase 支持多个 WebViewClient ```java useMiddlewareWebChrome(middlewareWebChromeBase) ``` * #### 清空缓存 ```java XWebConfig.clearDiskCache(this.getContext()); ``` * #### 权限拦截 ```java protected PermissionInterceptor mPermissionInterceptor = new PermissionInterceptor() { @Override public boolean intercept(String url, String[] permissions, String action) { Log.i(TAG, "url:" + url + " permission:" + permissions + " action:" + action); return false; } }; ``` ### 混肴 #### ##### X5内核混淆 -keep public enum com.tencent.smtt.sdk.WebSettings$** { *; } -keep public enum com.tencent.smtt.sdk.QbSdk$** { *; } -keep public class com.tencent.smtt.sdk.WebSettings { public *; }