项目地址:https://link.jianshu.com/?t=https://github.com/Justson/AgentWeb

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

引入
Gradle
api ‘com.just.agentweb:agentweb:4.0.3-beta’ // (必选)
api ‘com.just.agentweb:filechooser:4.0.3-beta’// (可选)
api ‘com.just.agentweb:download:4.0.3-beta’ // (可选)
api ‘com.github.Justson:Downloader:v4.0.3’// (可选)

基础用法

mAgentWeb = AgentWeb.with(this).setAgentWebParent(view, new LinearLayout.LayoutParams(-1, -1))                .useDefaultIndicator().createAgentWeb().ready().go("URL");

调用 Javascript 方法拼接太麻烦 ? 请看 。

    function callByAndroid(){console.log("callByAndroid")}
mAgentWeb.getJsAccessEntrace().quickCallJs("callByAndroid");

Javascript 调 Java ?

 mAgentWeb.getJsInterfaceHolder().addJavaObject("android",new AndroidInterface(mAgentWeb,this));window.android.callAndroid();

事件处理

 @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {if (mAgentWeb.handleKeyEvent(keyCode, event)) {    return true;}return super.onKeyDown(keyCode, event);
}

跟随 Activity Or Fragment 生命周期 , 释放 CPU 更省电 。

  @Overrideprotected void onPause() {mAgentWeb.getWebLifeCycle().onPause(); super.onPause();}@Overrideprotected void onResume() {mAgentWeb.getWebLifeCycle().onResume();super.onResume();}@Overridepublic void onDestroyView() {mAgentWeb.getWebLifeCycle().onDestroy();super.onDestroyView();}

全屏视频播放
如果你的应用需要用到视频 , 那么请你在使用 AgentWeb 的 Activity 对应的清单文件里加入如下配置

  android:hardwareAccelerated="true"android:configChanges="orientation|screenSize"

定位
AgentWeb 是默认允许定位的 ,如果你需要该功能 , 请在你的 AndroidManifest 文件里面加入如下权限

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

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(){@Overridepublic void onPageStarted(WebView view, String url, Bitmap favicon) {//do you  work}};private WebChromeClient mWebChromeClient=new WebChromeClient(){@Overridepublic void onProgressChanged(WebView view, int newProgress) {//do you work}};

返回上一页

if (!mAgentWeb.back()){AgentWebFragment.this.getActivity().finish();
}

获取 WebView

mAgentWeb.getWebCreator().getWebView();

文件下载监听
protected DownloadListenerAdapter mDownloadListenerAdapter = new DownloadListenerAdapter() {

 @Overridepublic boolean onStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength, AgentWebDownloader.Extra extra) {extra.setOpenBreakPointDownload(true).setIcon(R.drawable.ic_file_download_black_24dp).setConnectTimeOut(6000).setBlockMaxTime(2000).setDownloadTimeOut(60L * 5L * 1000L).setAutoOpen(true).setForceDownload(false);return false;}@Overridepublic void onBindService(String url, DownloadingService downloadingService) {super.onBindService(url, downloadingService);mDownloadingService = downloadingService;LogUtils.i(TAG, "onBindService:" + url + "  DownloadingService:" + downloadingService);}@Overridepublic void onUnbindService(String url, DownloadingService downloadingService) {super.onUnbindService(url, downloadingService);mDownloadingService = null;LogUtils.i(TAG, "onUnbindService:" + url);}@Overridepublic void onProgress(String url, long loaded, long length, long usedTime) {int mProgress = (int) ((loaded) / Float.valueOf(length) * 100);LogUtils.i(TAG, "onProgress:" + mProgress);super.onProgress(url, loaded, length, usedTime);}@Overridepublic boolean onResult(String path, String url, Throwable throwable) {if (null == throwable) { //do you work} else {}return false; }
};

查看 Cookies

String cookies=AgentWebConfig.getCookiesByUrl(targetUrl);

同步 Cookie

AgentWebConfig.syncCookie("http://www.jd.com","ID=XXXX");
MiddlewareWebChromeBase 支持多个 WebChromeClient

清空缓存

AgentWebConfig.clearDiskCache(this.getContext());

权限拦截

protected PermissionInterceptor mPermissionInterceptor = new PermissionInterceptor() {@Overridepublic boolean intercept(String url, String[] permissions, String action) {Log.i(TAG, "url:" + url + "  permission:" + permissions + " action:" + action);return false;}};

AgentWeb 完整用法

 mAgentWeb = AgentWeb.with(this).setAgentWebParent((LinearLayout) view, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)).useDefaultIndicator(-1, 3).setAgentWebWebSettings(getSettings()).setWebViewClient(mWebViewClient).setWebChromeClient(mWebChromeClient).setPermissionInterceptor(mPermissionInterceptor) .setSecurityType(AgentWeb.SecurityType.STRICT_CHECK) .setAgentWebUIController(new UIController(getActivity())) .setMainFrameErrorView(R.layout.agentweb_error_page, -1).useMiddlewareWebChrome(getMiddlewareWebChrome()).useMiddlewareWebClient(getMiddlewareWebClient()) .setOpenOtherPageWays(DefaultWebClient.OpenOtherPageWays.DISALLOW).interceptUnkownUrl() .createAgentWeb().ready().go(getUrl());

AgentWeb 所需要的权限(在你工程中根据需求选择加入权限)

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"></uses-permission>

AgentWeb 所依赖的库

  compile "com.android.support:design:${SUPPORT_LIB_VERSION}" // (3.0.0开始该库可选)compile "com.android.support:support-v4:${SUPPORT_LIB_VERSION}"SUPPORT_LIB_VERSION=27.0.2(该值会更新)

AgentWeb 介绍相关推荐

  1. android 除了webview 浏览器控件,AgentWeb是基于Android WebView一个功能完善小型浏览器库...

    [技巧沙龙]AI开辟者拭魅战营-7分钟打造1个定制技能.7月22号,我们等你一路! Android 端 AgentWeb 介绍 AgentWeb是一个高度封装的 Android WebView ,简单 ...

  2. AgentWeb使用

    项目地址:https://github.com/Justson/AgentWeb AgentWeb 介绍 AgentWeb 是一个基于的 Android WebView ,极度容易使用以及功能强大的库 ...

  3. AgentWeb , 一个简洁易用的 Android Web 库

    转自:http://www.jianshu.com/p/c80da1c41af7 AgentWeb 介绍 AgentWeb 是一个高度封装的 Android WebView ,简单易用 , 带有进度条 ...

  4. Android kotlin 简洁易用的 Android web库 - AgentWeb

    <<返回总目录 文章目录 一.AgentWeb介绍 二.AgentWeb 功能 三.AgentWeb与WebView对比: 四.简单的AgentWeb的使用 一.AgentWeb介绍 Ag ...

  5. 隐私合规:收集SDK部分介绍

    com.meizu.cloud.pushsdk.SystemReceiver 魅族推送服务是由魅族公司为开发者提供的消息推送服务,开发者可以向集成了魅族 push SDK 的客户端实时地推送通知或者消 ...

  6. 简单介绍互联网领域选择与营销方法

    在我看来,互联网领域的选择是"安家",而营销方法的不同则表现了"定家"的方式多种多样,只有选对了,"家"才得以"安定". ...

  7. 常用开源协议介绍以及开源软件规范列表

    1. 开源协议介绍 GPL: General Public License,开源项目最常用的许可证,衍生代码的分发需开源并且也要遵守此协议.该协议也有很多变种,不同变种要求会略微不同. MPL: MP ...

  8. python:Json模块dumps、loads、dump、load介绍

    20210831 https://www.cnblogs.com/bigtreei/p/10466518.html json dump dumps 区别 python:Json模块dumps.load ...

  9. pytorch学习笔记(九):PyTorch结构介绍

    PyTorch结构介绍 对PyTorch架构的粗浅理解,不能保证完全正确,但是希望可以从更高层次上对PyTorch上有个整体把握.水平有限,如有错误,欢迎指错,谢谢! 几个重要的类型 和数值相关的 T ...

最新文章

  1. 使用Sublime Text作为Markdown编辑器
  2. 下面有关html5标签说法错误的有,前端面试题(2016含答案)
  3. java gui框架_推荐!程序员整理的Java资源大全
  4. windows下node安装
  5. java文件名判断练习
  6. fatal error C1083: Cannot open include file: 'qttreepropertybrowser.moc': No such file or directory
  7. java intercpt_java – 在Spring的安全性中使用intercept-url
  8. 设计模式---抽象工厂模式(C++实现)
  9. 《游戏设计艺术(第2版)》——学习笔记(27)第27章 通过试玩创造好游戏
  10. 推荐系统学习笔记召回策略之基于内容召回
  11. J3061《信息物理融合系统网络安全指南》
  12. 锐捷设备AC虚拟化(VAC)
  13. matlab tek示波器,SIMULINK示波器参数设置_matlab中对示波器进行设置
  14. 三国志战略版:三势贾的另类搭配,也可以这么强?
  15. Reactor模式详解(转)
  16. 《如果……》拉迪亚德·吉卜林
  17. 非常专业的图形图像处理工具-Adobe Illustrator CS5提供下载
  18. 横河川仪压力变送器故障代码_压力变送器常见故障及解决办法
  19. Abrash和TimSweeney两个文章
  20. 每七本 你的生命有什么可能

热门文章

  1. C# Minitab Sigma 无偏常量
  2. Python绘制指数加权平均线
  3. 泵引理 Pumping Lemma
  4. 电影《面包店的女孩+苏姗娜的故事》观后感
  5. 互联网新机遇: 移动社交电商将成为下一个风口?
  6. idea中git版本回退
  7. basename command
  8. java求循环节长度
  9. python qq群自动加入_Python实现向QQ群成员自动发邮件的方法
  10. IIC/I2C总线实验