Android-推荐一个WebView开源库(AgentWeb)

图片来源网络,入侵必删

在维护一些项目的时候,你可以会见到H5页面是使用AgentWeb来加载的。这篇博客来分享一下AgentWeb相关的知识,希望对你有所帮助。

AgentWeb

AgentWeb是一个基于的 Android WebView ,极度容易使用以及功能强大的库,提供了 Android WebView 一系列的问题解决方案 ,并且轻量和极度灵活。

特性

  • 支持进度条以及自定义进度条
  • 支持文件下载
  • 支持文件下载断点续传
  • 支持下载通知形式提示进度
  • 简化 Javascript 通信
  • 支持 Android 4.4 Kitkat 以及其他版本文件上传
  • 支持注入 Cookies
  • 加强 Web 安全
  • 支持全屏播放视频
  • 兼容低版本 Js 安全通信
  • 更省电 。
  • 支持调起微信支付
  • 支持调起支付宝(请参照sample)
  • 默认支持定位
  • 支持传入 WebLayout(下拉回弹效果)
  • 支持自定义 WebView
  • 支持 JsBridge。

导入项目

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

AndroidX项目:

 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项目:

 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' // (可选)

我项目使用的是5.0.0版本,如果想看有没有更新可以看开源库的wiki

使用示例

基础用法:

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都会用到的):

AgentWebConfig.clearDiskCache(this.getContext());

混淆代码

-keep class com.just.agentweb.** {
    *;
}
-dontwarn com.just.agentweb.**

注意事项

开源的大佬提示需要注意以下情况:

  • 支付宝使用需要引入支付宝SDK ,并在项目中依赖 , 微信支付不需要做任何操作。
  • AgentWeb内部使用了AlertDialog需要依赖AppCompat主题 。
  • setAgentWebParent不支持ConstraintLayout
  • mAgentWeb.getWebLifeCycle().onPause();会暂停应用内所有WebView
  • minSdkVersion低于等于16以下自定义WebView请注意与JS之间通信安全。

你可能感兴趣的:(Android-推荐一个WebView开源库(AgentWeb))