AgentWeb 介绍
项目地址: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 介绍相关推荐
- android 除了webview 浏览器控件,AgentWeb是基于Android WebView一个功能完善小型浏览器库...
[技巧沙龙]AI开辟者拭魅战营-7分钟打造1个定制技能.7月22号,我们等你一路! Android 端 AgentWeb 介绍 AgentWeb是一个高度封装的 Android WebView ,简单 ...
- AgentWeb使用
项目地址:https://github.com/Justson/AgentWeb AgentWeb 介绍 AgentWeb 是一个基于的 Android WebView ,极度容易使用以及功能强大的库 ...
- AgentWeb , 一个简洁易用的 Android Web 库
转自:http://www.jianshu.com/p/c80da1c41af7 AgentWeb 介绍 AgentWeb 是一个高度封装的 Android WebView ,简单易用 , 带有进度条 ...
- Android kotlin 简洁易用的 Android web库 - AgentWeb
<<返回总目录 文章目录 一.AgentWeb介绍 二.AgentWeb 功能 三.AgentWeb与WebView对比: 四.简单的AgentWeb的使用 一.AgentWeb介绍 Ag ...
- 隐私合规:收集SDK部分介绍
com.meizu.cloud.pushsdk.SystemReceiver 魅族推送服务是由魅族公司为开发者提供的消息推送服务,开发者可以向集成了魅族 push SDK 的客户端实时地推送通知或者消 ...
- 简单介绍互联网领域选择与营销方法
在我看来,互联网领域的选择是"安家",而营销方法的不同则表现了"定家"的方式多种多样,只有选对了,"家"才得以"安定". ...
- 常用开源协议介绍以及开源软件规范列表
1. 开源协议介绍 GPL: General Public License,开源项目最常用的许可证,衍生代码的分发需开源并且也要遵守此协议.该协议也有很多变种,不同变种要求会略微不同. MPL: MP ...
- python:Json模块dumps、loads、dump、load介绍
20210831 https://www.cnblogs.com/bigtreei/p/10466518.html json dump dumps 区别 python:Json模块dumps.load ...
- pytorch学习笔记(九):PyTorch结构介绍
PyTorch结构介绍 对PyTorch架构的粗浅理解,不能保证完全正确,但是希望可以从更高层次上对PyTorch上有个整体把握.水平有限,如有错误,欢迎指错,谢谢! 几个重要的类型 和数值相关的 T ...
最新文章
- 使用Sublime Text作为Markdown编辑器
- 下面有关html5标签说法错误的有,前端面试题(2016含答案)
- java gui框架_推荐!程序员整理的Java资源大全
- windows下node安装
- java文件名判断练习
- fatal error C1083: Cannot open include file: 'qttreepropertybrowser.moc': No such file or directory
- java intercpt_java – 在Spring的安全性中使用intercept-url
- 设计模式---抽象工厂模式(C++实现)
- 《游戏设计艺术(第2版)》——学习笔记(27)第27章 通过试玩创造好游戏
- 推荐系统学习笔记召回策略之基于内容召回
- J3061《信息物理融合系统网络安全指南》
- 锐捷设备AC虚拟化(VAC)
- matlab tek示波器,SIMULINK示波器参数设置_matlab中对示波器进行设置
- 三国志战略版:三势贾的另类搭配,也可以这么强?
- Reactor模式详解(转)
- 《如果……》拉迪亚德·吉卜林
- 非常专业的图形图像处理工具-Adobe Illustrator CS5提供下载
- 横河川仪压力变送器故障代码_压力变送器常见故障及解决办法
- Abrash和TimSweeney两个文章
- 每七本 你的生命有什么可能