成人免费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

瀏覽器前端開發

2017-12-14 15:45:02

2009-05-27 08:54:15

瀏覽器平臺Chrome

2015-01-23 16:32:52

2012-09-03 10:24:16

果粉瀏覽器

2023-12-21 11:12:31

Node.js.NET開源庫

2022-06-13 06:33:04

瀏覽器瀏覽器插件

2014-08-18 14:58:25

微軟IE

2013-04-22 09:52:04

.netchrome核心開發chrome

2012-04-25 14:06:45

HTML5

2021-06-02 06:14:50

Nyxt瀏覽器

2021-08-06 16:52:10

瀏覽器HTTPS通信

2011-04-14 15:55:35

WPF.NET

2022-06-20 09:01:56

Plasmo開源

2021-10-08 08:20:06

LinuxChromium瀏覽器

2009-03-23 08:52:51

2012-10-11 15:06:55

2010-01-08 12:14:44

ibmdwAndroid

2020-07-06 08:23:11

開源瀏覽器操作系統

2013-06-14 17:16:44

WP開發Windows PhoWP應用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久国产一区二区三区 | 日韩一区二区三区在线 | 国产一区二区三区久久久久久久久 | 亚洲视频免费在线观看 | 国产精品91视频 | 免费一级做a爰片久久毛片潮喷 | 精品欧美一区二区精品久久 | 欧美激情一区二区 | 日韩美香港a一级毛片免费 国产综合av | 激情福利视频 | xnxx 日本免费 | 美女黄网 | 午夜视频在线免费观看 | 一区二区三区免费在线观看 | 一区二区在线 | 久久久久久www | 一区二区精品在线 | 精品在线免费观看视频 | 95国产精品 | 国产精品视频网站 | 亚洲一区二区中文字幕 | www日本在线 | 国产欧美在线视频 | 一区二区三区四区五区在线视频 | 欧美精品一区二区免费 | 亚洲v日韩v综合v精品v | 中文字幕国产视频 | 黑人精品xxx一区一二区 | 午夜影院 | 国产日韩久久 | www.干| 一级毛片免费完整视频 | 中文字幕综合 | 热久久国产 | 一区二区三区欧美 | 国产日韩欧美中文字幕 | 亚洲午夜精品一区二区三区 | 日韩黄色小视频 | 中文字幕第九页 | 欧美日韩中文字幕 | 99热国产在线播放 |