日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
AgentWeb是基于Android WebView一個(gè)功能完善小型瀏覽器庫

AgentWeb 介紹

創(chuàng)新互聯(lián)建站堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的黎川網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

AgentWeb是一個(gè)高度封裝的 Android WebView ,簡(jiǎn)單易用 , 帶有進(jìn)度條 、 支持文件上傳 、 下載 、 簡(jiǎn)化 Javascript 通信 、 鏈?zhǔn)秸{(diào)用 、 加強(qiáng) Web 安全的庫 。讓你幾行代碼集成一個(gè)小型瀏覽器在你的應(yīng)用 。 App 下載體驗(yàn)

前言

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

AgentWeb 功能

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

為什么要使用 AgentWeb ?

Web文件下載文件上傳Js 通信斷點(diǎn)續(xù)傳使用簡(jiǎn)易度進(jìn)度條線程安全
WebView不支持不支持支持不支持麻煩沒有不安全
AgentWeb支持支持更簡(jiǎn)潔支持簡(jiǎn)潔安全

簡(jiǎn)潔易用

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

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

你沒看錯(cuò) ,里面沒有一句 Setting , 甚至連 WebChromeClient 都不配置就有進(jìn)度條 。

Javascript 通信拼接太麻煩 ? 請(qǐng)看 。

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

Android 端

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

結(jié)果

 
 
 
 
  1. consoleMessage:callByAndroid  lineNumber:27 

效果圖

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

淺談進(jìn)度條

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

Agentweb 視圖結(jié)構(gòu)

 
 
 
 
  1.         android:layout_width="match_parent" 
  2.         android:layout_height="match_parent"> 
  3.  
  4.         
  5.             android:layout_width="match_parent" 
  6.             android:layout_height="match_parent"> 
  7.  
  8.          
  9.           
  10.         
  11.             android:layout_width="match_parent" 
  12.             android:layout_height="2dp" 
  13.             > 
  14.  
  15.          
  16.       

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

AgentWeb 內(nèi)部結(jié)構(gòu)

  • IndicatorController 進(jìn)度條控制器
  • WebCreator 創(chuàng)建 WebView 。
  • WebSettings 統(tǒng)一設(shè)置 WebView 的 settings
  • WebSecurityController 安全控制器
  • JsEntraceAccess Js 方法入口

引入

Gradle

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

Maven

 
 
 
 
  1.  
  2.    com.just.agentweb 
  3.    agentweb 
  4.    1.1.0 
  5.    pom 
  6.    

用法

Activity 使用如下

 
 
 
 
  1. mAgentWeb = AgentWeb.with(this)//傳入Activity 
  2.                 .setAgentWebParent(mLinearLayout, new LinearLayout.LayoutParams(-1, -1))//傳入AgentWeb 的父控件 ,如果父控件為 RelativeLayout , 那么第二參數(shù)需要傳入 RelativeLayout.LayoutParams 
  3.                 .useDefaultIndicator()// 使用默認(rèn)進(jìn)度條 
  4.                 .defaultProgressBarColor() // 使用默認(rèn)進(jìn)度條顏色 
  5.                 .setReceivedTitleCallback(mCallback) //設(shè)置 Web 頁面的 title 回調(diào) 
  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))// 設(shè)置 AgentWeb 的父控件 , 這里的view 是 LinearLayout , 那么需要傳入 LinearLayout.LayoutParams 
  6.                 .useDefaultIndicator()// 使用默認(rèn)進(jìn)度條 
  7.                 .setReceivedTitleCallback(mCallback) //標(biāo)題回調(diào) 
  8.                 .setSecurityType(AgentWeb.SecurityType.strict) //注意這里開啟 strict 模式 , 設(shè)備低于 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 對(duì)象 , 需要 Keep 。

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

致謝

  • 360 大牛 SafeWebView
  • WebView 參考文獻(xiàn)

總結(jié)

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


網(wǎng)站標(biāo)題:AgentWeb是基于Android WebView一個(gè)功能完善小型瀏覽器庫
路徑分享:http://m.5511xx.com/article/djooijj.html