当前位置: 首页 > 科技观察

AgentWeb是一个基于AndroidWebView的全功能小型浏览器库

时间:2023-03-18 13:32:51 科技观察

AgentWeb介绍AgentWeb是一个高度封装的AndroidWebView,简单易用,带进度条,支持文件上传,下载,简化Javascript通信,链式调用,增强Libraries用于网络安全。允许您使用几行代码将小型浏览器集成到您的应用程序中。应用下载体验前言WebView可以说是每一个应用的必备控件,但是说到它的使用,很多人并不是那么喜欢它。比如每个Web页面都需要各种各样的设置,那么一点点可能封装成一个BaseWebActivity和BaseWebFragment,但是重复的代码总是让一味追求整洁的程序员不舒服,而且WebView本身的功能也不是很完善,AgentWeb填补了这些空缺。AgentWeb功能支持进度条和自定义进度条支持文件下载支持文件下载断点续传支持下载通知表单提示进度简化Javascript通信支持Android4.4Kitkat等版本文件上传支持注入Cookies加强web安全兼容低版本安全Js通信为什么要用代理网络?Web文件下载,文件上传,Js通信,断点续传,易用性,进度条,线程安全,WebView不支持,不支持,不支持,麻烦不支持,不支持AgentWeb,支持更简洁,支持简单,安全,简单易用,为什么叫它?是否简单易用?以下京东效果图只需一句话!mAgentWeb=AgentWeb.with(this)//传入Activity.setAgentWebParent(mLinearLayout,newLinearLayout.LayoutParams(-1,-1))//传入AgentWeb父控件,如果父控件是RelativeLayout,则第二个参数需要传入RelativeLayout.LayoutParams.useDefaultIndicator()//使用默认进度条.defaultProgressBarColor()//使用默认进度条颜色.setReceivedTitleCallback(mCallback)//设置网页标题回调.createAgentWeb()//.ready().go("http://www.jd.com");你没看错,里面没有setting,就算不配置WebChromeClient也有进度条Javascript通信拼接太麻烦?请参见。//Javascript方法functioncallByAndroid(){console.log("callByAndroid")}AndroidmAgentWeb.getJsEntraceAccess().quickCallJs("callByAndroid");结果consoleMessage:callByAndroidlineNumber:27效果图来了弱弱的问题,你还有什么理由不使用AgentWeb?说说进度条为什么要说说进度条呢?因为没有进度条的WebView页面体验真的很差。AgentWeb默认的进度条是一般浏览器的进度条。为什么要用这种进度条呢?因为体验好,所以微信和QQ、支付宝、UC、Safari都使用了这种进度条。不要在用户确定情况下播放Dialog,尤其是用户网络不好的时候,加载速度突然变慢,那么Dialog就会一直存在,用户没有耐心,只能kill你的进程。Agentweb视图结构com.just.library.BaseIndicatorViewandroid:layout_width="match_parent"android:layout_height="2dp">AgentWeb的最外层是FrameLayout,所以在使用AgentWeb的时候,需要给FrameLayout指定父控件(下面如何使用)。AgentWeb内部结构IndicatorController进度条控制器WebCreator创建WebView。WebSettings统一设置WebViewWebSecurityController安全控制器JsEntraceAccessJs方法入口importGradlecompile'c??om.just.agentweb:agentweb:1.1.0'Mavencom.just.agentwebagentweb1.1.0pom用法Activity使用如下mAgentWeb=AgentWeb.with(this)//传入Activity.setAgentWebParent(mLinearLayout,newLinearLayout.LayoutParams(-1,-1))//传入AgentWeb的父控件,如果父控件是RelativeLayout,那么第二个参数需要传入RelativeLayout.LayoutParams.useDefaultIndicator()//使用默认进度条.defaultProgressBarColor()//使用默认进度条color.setReceivedTitleCallback(mCallback)//设置网页标题回调.createAgentWeb()//.ready().go("http://www.jd.com");Fragment使用如下@OverridepublicvoidonViewCreated(Viewview,@NullableBundlesavedInstanceState){super.onViewCreated(view,savedInstanceState);mAgentWeb=AgentWeb.with(this)//这里需要传入Fragment.setAgentWebParent((ViewGroup)view,newLinearLayout.LayoutParams(-1,-1))//设置AgentWeb的父控件。这里的view是LinearLayout,所以需要传入LinearLayout.LayoutParams.useDefaultIndicator()//使用默认进度条.setReceivedTitleCallback(mCallback)//标题回调。setSecurityType(AgentWeb.SecurityType.strict)//注意这里开启了严格模式。如果设备低于4.2,所有注入的J都会被清除。建议使用onJsPromptcommunication.createAgentWeb()//.ready()//.go(getUrl());}混淆防止WebChromeClient子类被混淆-keeppublicclass*extendsandroid.webkit.WebChromeClient{*;}Java注入类不应该混淆,比如App中的HelloJs对象,需要Keep-keepclassmembersclasscom.just.library.agentweb.HelloJs{*;}Thanks360大牛SafeWebViewWebViewReferencesSummaryAgentWeb是一个独立的AndroidWeb库,完全代理WebView并与Activity和Fragmentxml布局分开。***如果本库对您有帮助,请点击右上角的Star支持我,非常感谢!当然,我更喜欢你ForkPR成为项目贡献者。AgentWeb