在android1.6之前的api中有有直接的方法来对webview设置代码,但是在之后的API中去掉了。所以只能寻求别的方法来设置代码。
下面代码是用反射原理来对webview设置代理:
-
publicstaticbooleansetProxy(Contextctx,Stringhost,intport){
-
booleanret=false;
-
try{
-
Log.d("WebViewProxySettings","setProxydefaulthost="+host+"port="+port);
-
ObjectrequestQueueObject=getRequestQueue(ctx);
-
if(requestQueueObject!=null){
-
-
HttpHosthttpHost=newHttpHost(host,port,"http");
-
setDeclaredField(requestQueueObject,"mProxyHost",httpHost);
-
ret=true;
-
}
-
}catch(Exceptione){
-
e.printStackTrace();
-
}
-
returnret;
-
}
-
-
-
publicstaticStringgetProxyHostname(Contextctx){
-
Stringres=null;
-
try{
-
ObjectrequestQueueObject=getRequestQueue(ctx);
-
if(requestQueueObject!=null){
-
Objectfild=getDeclaredField(requestQueueObject,"mProxyHost");
-
if(fild!=null){
-
HttpHosthost=(HttpHost)fild;
-
res=host.getHostName();
-
}
-
}
-
}catch(Exceptione){
-
e.printStackTrace();
-
}
-
returnres;
-
}
-
-
publicstaticvoidcancelProxy(Contextctx){
-
try{
-
ObjectrequestQueueObject=getRequestQueue(ctx);
-
if(requestQueueObject!=null){
-
setDeclaredField(requestQueueObject,"mProxyHost",null);
-
}
-
}catch(Exceptione){
-
e.printStackTrace();
-
}
-
}
-
-
publicstaticObjectgetRequestQueue(Contextctx)throwsException{
-
Objectret=null;
-
ClassnetworkClass=Class.forName("android.webkit.Network");
-
if(networkClass!=null){
-
ObjectnetworkObj=invokeMethod(networkClass,"getInstance",newObject[]{ctx},Context.class);
-
if(networkObj!=null){
-
ret=getDeclaredField(networkObj,"mRequestQueue");
-
}
-
}
-
returnret;
-
}
-
-
privatestaticObjectgetDeclaredField(Objectobj,Stringname)
-
throwsSecurityException,NoSuchFieldException,
-
IllegalArgumentException,IllegalAccessException{
-
Fieldf=obj.getClass().getDeclaredField(name);
-
f.setAccessible(true);
-
Objectout=f.get(obj);
-
-
returnout;
-
}
-
-
privatestaticvoidsetDeclaredField(Objectobj,Stringname,Objectvalue)
-
throwsSecurityException,NoSuchFieldException,
-
IllegalArgumentException,IllegalAccessException{
-
Fieldf=obj.getClass().getDeclaredField(name);
-
f.setAccessible(true);
-
f.set(obj,value);
-
}
-
-
privatestaticObjectinvokeMethod(Objectobject,StringmethodName,Object[]params,Class...types)throwsException{
-
Objectout=null;
-
Classc=objectinstanceofClass?(Class)object:object.getClass();
-
if(types!=null){
-
Methodmethod=c.getMethod(methodName,types);
-
out=method.invoke(object,params);
-
}else{
-
Methodmethod=c.getMethod(methodName);
-
out=method.invoke(object);
-
}
-
-
returnout;
-
}
分享到:
相关推荐
网络视图代理设置 Android WebView 代理的类
费了好大一番功夫,才把自己开发的简单浏览器加上是了代理访问功能,所使用的代理是android系统中设置的代理,经过测试完全可用,把方法分享一下,为需要的朋友提供一些帮助。 本来发表在博客上的,但是现在缺乏积分...
DroidWebViewProxyDemo Android WebView代理演示 这是演示如何设置WebView代理的演示。
PrimWeb 是一个代理的WebView基于的 Android WebView 和 腾讯 x5 WebView,容易、灵活使用以及功能非常强大的库,提供了 WebView 一系列的问题解决方案 ,并且轻量和灵活, 更方便 webview 的切换
PrimWeb 是一个代理的WebView基于的 Android WebView 和 腾讯 x5 WebView,容易、灵活使用以及功能非常强大的库,提供了 WebView 一系列的问题解决方案 ,并且轻量和灵活, 更方便 webview 的切换. What Support? ...
lingJuan一套可以设置代理的淘客系统 前段时间自己想做淘客,发现市场上的APP都是网站打包的,说打包都过了,就是webview里面放一个h5的网址,恕我直言,很水,于是就萌生了自己写一个的想法 APP内所有的API调用自轻...
该Module 用于自定义WebView 的UserAgent。 平台 适用于 iOS iphone/ -- TiWebViewUserAgentIOS 适用于 Android (< Titanium Mobile SDK 1.8) android/ -- TiWebViewUserAgentAndroid 执照 麻省理工学院执照 ...
在Android中,常用的Java与Js交互的实现方式是通过函数addJavascriptInterface进行添加在Js中使用的回调代理类。 这种方法虽然方便,但是写出来的js代码并不通用。如果IOS也要实现类似的功能或业务,则IOS要另外写...
在(移动联通电信)wap网络下,android webview控件无法直接访问网络,该程序可自动获取相应网络代理从而进行网络访问。由于wifi等net环境下不需代理,程序也有考虑到。 在此感谢这两位博主分享的博文:...
支持并在融合体验中使用 。 该库还支持 . 介绍 什么是新的? 寻找有兴趣提供有关用 C++ 和 Java 编写的 MSAL x 平台实现的早期反馈的开发人员,可从 Java、Kotlin 和 C++ 调用。 如果您有兴趣,请联系。 11/09/2020 ...
在“高级”设置中关闭“允许站点打开新窗口”,然后在“隐私和安全性设置”中打开“删除标识的HTTP标头”,以及在“常规设置”中将用户代理设置为“移动”即可解决此问题。 支持 需要帮忙? 在此处打开问题,或: ...
安卓java获取webview源码此库已弃用 ...日之前已经在使用此库,则可以转到客户的设置并启用您需要的授权。 Legacy: RO ( http://auth0.com/oauth/legacy/grant-type/ro ):用于数据库连接 Legacy: RO jwt bearer ( ...
个人对Android开发用到的知识进行积累,温故知新,主要针对中高级工程师 语言篇 Java 常用的类原理 ArrayList HashMap jvm虚拟机 内存模型 内存回收机制 并发编程 同步机制 violate和synchronize wait和notify ...
它使用标准Android HTTP方法和提供最佳实践TLS设置,提供简单的Tor集成,使配置HTTP连接和WebView实例的代理变得容易。 更具体地说,该库提供: 加强TLS协议支持和密码套件,尤其是在较旧版本的Android(例如4.4和...
使用Android系统WebView在无边框的全屏窗口中显示任何网站。 提供创建主屏幕快捷方式并以合适的分辨率检索图标的功能。 可以分别为每个Web应用设置各种设置(JavaScript,Cookie,第三方Cookie,AdBlock) 浏览时...
SWeb-Android简单的Web浏览器这是一个小型且简单的基于WebView的浏览器。 其独特的功能包括: 网站的夜间模式(黑色背景上的灰色文本) Adblocker,使用Easylist规则文件记录并显示页面发出的所有HTTP请求,例如嵌入...
为了满足一套H5在不同Webview中兼容,Vimo在初始化时能根据不同平台(微信,支付宝,钉钉等)的特性,调用平台提供的模块方法,例如:在普通浏览器中使用H5的ActionSheet,而在支付宝或钉钉中使用JSSDK提供的...
作者FarWinter,源码IOS-JsAndNativeDemo,通过webview代理方法 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)...
由于本人在项目中会用到这部分功能,做下记录! JS调用OC 很多应用里面或多或少的调用了网页,来达到绚丽的效果,所谓的JS调用OC…..举个例子吧,网页上有个按钮 点击按钮跳转界面,跳转的动作由OC的代码实现。 OC...
- 微信的android版本的内置浏览器是腾讯x5,大致相当于webkit40,具体版本号很神秘,渲染能力和性能有些问题,参考官方说明[Inspector调试WebView](http://x5.tencent.com/guide?id=2001) ## 其他注意事项: - ...