成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

AgentWeb是基于Android WebView一個功能完善小型瀏覽器庫

移動開發 Android
AgentWeb是一個高度封裝的 Android WebView ,簡單易用 , 帶有進度條 、 支持文件上傳 、 下載 、 簡化 Javascript 通信 、 鏈式調用 、 加強 Web 安全的庫 。讓你幾行代碼集成一個小型瀏覽器在你的應用 。

AgentWeb是基于Android WebView一個功能完善小型瀏覽器庫

AgentWeb 介紹

AgentWeb是一個高度封裝的 Android WebView ,簡單易用 , 帶有進度條 、 支持文件上傳 、 下載 、 簡化 Javascript 通信 、 鏈式調用 、 加強 Web 安全的庫 。讓你幾行代碼集成一個小型瀏覽器在你的應用 。 App 下載體驗

前言

WebView 可謂是每個應用必備的一個控件了 ,但是談起它的使用 ,讓很多人都不是那么喜歡它 ,比如說每個 Web 頁面都需要各種一大推的 setting ,好一點的可能封裝成一個 BaseWebActivity 和 BaseWebFragment ,但是重復的代碼總是讓有潔癖的程序員不舒服 ,而且 WebView 本身功能也不是很完善 , AgentWeb 就泥補了這些空缺 。

AgentWeb 功能

  1. 支持進度條以及自定義進度條
  2. 支持文件下載
  3. 支持文件下載斷點續傳
  4. 支持下載通知形式提示進度
  5. 簡化 Javascript 通信
  6. 支持 Android 4.4 Kitkat 以及其他版本文件上傳
  7. 支持注入 Cookies
  8. 加強 Web 安全
  9. 兼容低版本安全 Js 通信

為什么要使用 AgentWeb ?

Web 文件下載 文件上傳 Js 通信 斷點續傳 使用簡易度 進度條 線程安全
WebView 不支持 不支持 支持 不支持 麻煩 沒有 不安全
AgentWeb 支持 支持 更簡潔 支持 簡潔 安全

簡潔易用

為什么說它簡潔易用嗎 ? 下面京東效果圖 , 只需一句話 !

  1. mAgentWeb = AgentWeb.with(this)//傳入Activity 
  2.                 .setAgentWebParent(mLinearLayout, new LinearLayout.LayoutParams(-1, -1))//傳入AgentWeb 的父控件 ,如果父控件為 RelativeLayout , 那么第二參數需要傳入 RelativeLayout.LayoutParams 
  3.                 .useDefaultIndicator()// 使用默認進度條 
  4.                 .defaultProgressBarColor() // 使用默認進度條顏色 
  5.                 .setReceivedTitleCallback(mCallback) //設置 Web 頁面的 title 回調 
  6.                 .createAgentWeb()// 
  7.                 .ready() 
  8.                 .go("http://www.jd.com"); 

你沒看錯 ,里面沒有一句 Setting , 甚至連 WebChromeClient 都不配置就有進度條 。

Javascript 通信拼接太麻煩 ? 請看 。

  1. //Javascript 方法 
  2. function callByAndroid(){ 
  3.       console.log("callByAndroid"
  4.   }  

Android 端

  1. mAgentWeb.getJsEntraceAccess().quickCallJs("callByAndroid"); 

結果

  1. consoleMessage:callByAndroid  lineNumber:27 

效果圖 

 

到了這里 , 弱弱問一句 , 你還有什么理由不使用 AgentWeb ?

淺談進度條

為什么要談一下進度條這個東西呢 ? 因為沒有進度條的 WebView 頁面體驗實在太差了 ,AgentWeb 默認的進度條是一般瀏覽器的進度條 ,為什么采用這種進度條呢 ? 因為體驗好 ,微信和QQ ,支付寶 、 UC 以及 Safari 都采用這種進度條是有他們道理的 , 我還見過應用加載 Web 頁面的時候直接彈 Dialog 不可取消 ,沒有非常必要讓用戶確定情況都別彈 Dialog ,特別在用戶網絡不好的情況下 ,加載速度變得突奇的慢 ,那么 Dialog 就一直存在 ,用戶耐性不好 ,只能把你進程殺死 。

Agentweb 視圖結構

  1. <FrameLayout 
  2.         android:layout_width="match_parent" 
  3.         android:layout_height="match_parent"
  4.  
  5.         <WebView 
  6.             android:layout_width="match_parent" 
  7.             android:layout_height="match_parent"
  8.  
  9.         </WebView> 
  10.          <!--進度條--> 
  11.         <com.just.library.BaseIndicatorView 
  12.             android:layout_width="match_parent" 
  13.             android:layout_height="2dp" 
  14.             > 
  15.  
  16.         </com.just.library.BaseIndicatorView> 
  17.     </FrameLayout>  

AgentWeb 最外層是 FrameLayout , 所以在使用 AgentWeb 的時候還需要給 FrameLayout 指定父控件(下面有使用方式) 。

AgentWeb 內部結構

 

  • IndicatorController 進度條控制器
  • WebCreator 創建 WebView 。
  • WebSettings 統一設置 WebView 的 settings
  • WebSecurityController 安全控制器
  • JsEntraceAccess Js 方法入口

引入

Gradle

  1. compile 'com.just.agentweb:agentweb:1.1.0' 

Maven

  1. <dependency> 
  2.    <groupId>com.just.agentweb</groupId> 
  3.    <artifactId>agentweb</artifactId> 
  4.    <version>1.1.0</version> 
  5.    <type>pom</type> 
  6.  </dependency>  

用法

Activity 使用如下

  1. mAgentWeb = AgentWeb.with(this)//傳入Activity 
  2.                 .setAgentWebParent(mLinearLayout, new LinearLayout.LayoutParams(-1, -1))//傳入AgentWeb 的父控件 ,如果父控件為 RelativeLayout , 那么第二參數需要傳入 RelativeLayout.LayoutParams 
  3.                 .useDefaultIndicator()// 使用默認進度條 
  4.                 .defaultProgressBarColor() // 使用默認進度條顏色 
  5.                 .setReceivedTitleCallback(mCallback) //設置 Web 頁面的 title 回調 
  6.                 .createAgentWeb()// 
  7.                 .ready() 
  8.                 .go("http://www.jd.com"); 

 Fragment 使用如下

  1. @Override 
  2.     public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
  3.         super.onViewCreated(view, savedInstanceState); 
  4.         mAgentWeb = AgentWeb.with(this)//這里需要把 Fragment  傳入 
  5.                 .setAgentWebParent((ViewGroup) view, new LinearLayout.LayoutParams(-1, -1))// 設置 AgentWeb 的父控件 , 這里的view 是 LinearLayout , 那么需要傳入 LinearLayout.LayoutParams 
  6.                 .useDefaultIndicator()// 使用默認進度條 
  7.                 .setReceivedTitleCallback(mCallback) //標題回調 
  8.                 .setSecurityType(AgentWeb.SecurityType.strict) //注意這里開啟 strict 模式 , 設備低于 4.2 情況下回把注入的 Js 全部清空掉 , 這里推薦使用 onJsPrompt 通信 
  9.                 .createAgentWeb()// 
  10.                 .ready()// 
  11.                 .go(getUrl()); 
  12.  
  13.     } 

 混淆

保持 WebChromeClient 子類不被混淆

  1. -keep public class * extends android.webkit.WebChromeClient{ 
  2.  
  3. *; 
  4.  
  5.  

Java 注入類不要混淆 , 例如 App 里面的 HelloJs 對象 , 需要 Keep 。

  1. -keepclassmembers class com.just.library.agentweb.HelloJs{ *; } 

致謝

  • 360 大牛 SafeWebView
  • WebView 參考文獻

總結

AgentWeb 是一個把 WebView 完全代理出來 , 脫離 Activity 、 Fragment xml 布局 , 獨立的 Android Web 庫 。***如果該庫對你有幫助不妨對右上角點點 Star 對我支持 , 感謝萬分 ! 當然我更喜歡你 Fork PR 成為項目貢獻者 . AgentWeb 

責任編輯:龐桂玉 來源: Android開發中文站
相關推薦

2019-12-02 13:46:35

瀏覽器前端開發

2015-01-23 16:32:52

2009-05-27 08:54:15

瀏覽器平臺Chrome

2017-12-14 15:45:02

2012-09-03 10:24:16

果粉瀏覽器

2023-12-21 11:12:31

Node.js.NET開源庫

2014-08-18 14:58:25

微軟IE

2022-06-13 06:33:04

瀏覽器瀏覽器插件

2013-04-22 09:52:04

.netchrome核心開發chrome

2021-08-06 16:52:10

瀏覽器HTTPS通信

2011-04-14 15:55:35

WPF.NET

2022-06-20 09:01:56

Plasmo開源

2009-03-23 08:52:51

2012-04-25 14:06:45

HTML5

2021-06-02 06:14:50

Nyxt瀏覽器

2021-10-08 08:20:06

LinuxChromium瀏覽器

2012-10-11 15:06:55

2021-04-21 09:28:12

鴻蒙HarmonyOS應用

2013-06-14 17:16:44

WP開發Windows PhoWP應用

2010-01-08 12:14:44

ibmdwAndroid
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩综合 | 欧洲色 | 99免费精品 | 国产欧美精品一区二区 | 九九99九九精彩46 | 亚洲欧美激情精品一区二区 | 欧美日韩在线综合 | 热99在线| 国产一级视频在线播放 | 亚洲精品视频在线播放 | 999久久久久久久久6666 | 99久热在线精品视频观看 | 黄色一级免费观看 | 91人人视频在线观看 | 天天曰天天干 | 久久成人一区 | 国产一区二区精华 | 国内精品视频在线观看 | 先锋av资源在线 | 成人精品一区二区三区 | 日本色综合 | 久久久91精品国产一区二区三区 | 亚洲欧美日韩精品久久亚洲区 | www日本在线观看 | 国产亚韩 | 欧美激情黄色 | 伊人伊成久久人综合网站 | 日韩一区在线视频 | 亚洲成人av一区二区 | 999免费视频 | 韩日一区二区 | 欧美一级大片 | 国产激情一区二区三区 | 美国一级片在线观看 | 久久成人精品视频 | 日本在线免费视频 | 亚洲精品在线免费播放 | 国产美女精品 | 国产精品入口久久 | 国产一级毛片精品完整视频版 | 成人妇女免费播放久久久 |