圖片來源網(wǎng)絡(luò)苟翻,入侵必刪
在維護(hù)一些項(xiàng)目的時(shí)候嚎杨,你可以會(huì)見到H5
頁面是使用AgentWeb
來加載的袒炉。這篇博客來分享一下AgentWeb
相關(guān)的知識(shí),希望對(duì)你有所幫助付材。
AgentWeb
AgentWeb
是一個(gè)基于的 Android WebView 朦拖,極度容易使用以及功能強(qiáng)大的庫,提供了 Android WebView 一系列的問題解決方案 厌衔,并且輕量和極度靈活璧帝。
特性
- 支持進(jìn)度條以及自定義進(jìn)度條
- 支持文件下載
- 支持文件下載斷點(diǎn)續(xù)傳
- 支持下載通知形式提示進(jìn)度
- 簡(jiǎn)化 Javascript 通信
- 支持 Android 4.4 Kitkat 以及其他版本文件上傳
- 支持注入 Cookies
- 加強(qiáng) Web 安全
- 支持全屏播放視頻
- 兼容低版本 Js 安全通信
- 更省電 。
- 支持調(diào)起微信支付
- 支持調(diào)起支付寶(請(qǐng)參照sample)
- 默認(rèn)支持定位
- 支持傳入 WebLayout(下拉回彈效果)
- 支持自定義 WebView
- 支持 JsBridge富寿。
導(dǎo)入項(xiàng)目
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
非AndroidX
項(xiàng)目:
implementation 'com.github.Justson.AgentWeb:agentweb-core:v5.0.0-alpha' // (必選)
implementation 'com.github.Justson.AgentWeb:agentweb-filechooser:v5.0.0-alpha' // (可選)
implementation 'com.github.Justson:Downloader:v5.0.0' // (可選)
AndroidX
項(xiàng)目:
implementation 'com.github.Justson.AgentWeb:agentweb-core:v5.0.0-alpha.1-androidx' // (必選)
implementation 'com.github.Justson.AgentWeb:agentweb-filechooser:v5.0.0-alpha.1-androidx' // (可選)
implementation 'com.github.Justson:Downloader:v5.0.0-androidx' // (可選)
我項(xiàng)目使用的是5.0.0
版本睬隶,如果想看有沒有更新可以看開源庫的wiki
使用示例
基礎(chǔ)用法:
mAgentWeb = AgentWeb.with(this)
.setAgentWebParent((LinearLayout) view, new LinearLayout.LayoutParams(-1, -1))
.useDefaultIndicator()
.createAgentWeb()
.ready()
.go("http://www.jd.com");
事件處理:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (mAgentWeb.handleKeyEvent(keyCode, event)) {
return true;
}
return super.onKeyDown(keyCode, event);
}
WebChromeClient 與 WebViewClient:
AgentWeb.with(this)
.setAgentWebParent(mLinearLayout,new LinearLayout.LayoutParams(-1,-1) )
.useDefaultIndicator()
.setReceivedTitleCallback(mCallback)
.setWebChromeClient(mWebChromeClient)
.setWebViewClient(mWebViewClient)
.setSecutityType(AgentWeb.SecurityType.strict)
.createAgentWeb()
.ready()
.go(getUrl());
private WebViewClient mWebViewClient=new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
//do you work
}
};
private WebChromeClient mWebChromeClient=new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
//do you work
}
};
清空緩存(這是很多App都會(huì)用到的):
AgentWebConfig.clearDiskCache(this.getContext());
混淆代碼
-keep class com.just.agentweb.** {
*;
}
-dontwarn com.just.agentweb.**
注意事項(xiàng)
開源的大佬提示需要注意以下情況:
- 支付寶使用需要引入支付寶SDK ,并在項(xiàng)目中依賴 页徐, 微信支付不需要做任何操作苏潜。
-
AgentWeb
內(nèi)部使用了AlertDialog
需要依賴AppCompat
主題 。 -
setAgentWebParent
不支持ConstraintLayout
变勇。 -
mAgentWeb.getWebLifeCycle().onPause();
會(huì)暫停應(yīng)用內(nèi)所有WebView
恤左。 -
minSdkVersion
低于等于16
以下自定義WebView
請(qǐng)注意與JS
之間通信安全。