`
king_tt
  • 浏览: 2112089 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android 在webview中设置代理

 
阅读更多

在android1.6之前的api中有有直接的方法来对webview设置代码,但是在之后的API中去掉了。所以只能寻求别的方法来设置代码。

下面代码是用反射原理来对webview设置代理:

Java代码
收藏代码
  1. publicstaticbooleansetProxy(Contextctx,Stringhost,intport){
  2. booleanret=false;
  3. try{
  4. Log.d("WebViewProxySettings","setProxydefaulthost="+host+"port="+port);
  5. ObjectrequestQueueObject=getRequestQueue(ctx);
  6. if(requestQueueObject!=null){
  7. //CreateProxyconfigobjectandsetitintorequestQ
  8. HttpHosthttpHost=newHttpHost(host,port,"http");
  9. setDeclaredField(requestQueueObject,"mProxyHost",httpHost);
  10. ret=true;
  11. }
  12. }catch(Exceptione){
  13. e.printStackTrace();
  14. }
  15. returnret;
  16. }
  17. publicstaticStringgetProxyHostname(Contextctx){
  18. Stringres=null;
  19. try{
  20. ObjectrequestQueueObject=getRequestQueue(ctx);
  21. if(requestQueueObject!=null){
  22. Objectfild=getDeclaredField(requestQueueObject,"mProxyHost");
  23. if(fild!=null){
  24. HttpHosthost=(HttpHost)fild;
  25. res=host.getHostName();
  26. }
  27. }
  28. }catch(Exceptione){
  29. e.printStackTrace();
  30. }
  31. returnres;
  32. }
  33. publicstaticvoidcancelProxy(Contextctx){
  34. try{
  35. ObjectrequestQueueObject=getRequestQueue(ctx);
  36. if(requestQueueObject!=null){
  37. setDeclaredField(requestQueueObject,"mProxyHost",null);
  38. }
  39. }catch(Exceptione){
  40. e.printStackTrace();
  41. }
  42. }
  43. publicstaticObjectgetRequestQueue(Contextctx)throwsException{
  44. Objectret=null;
  45. ClassnetworkClass=Class.forName("android.webkit.Network");
  46. if(networkClass!=null){
  47. ObjectnetworkObj=invokeMethod(networkClass,"getInstance",newObject[]{ctx},Context.class);
  48. if(networkObj!=null){
  49. ret=getDeclaredField(networkObj,"mRequestQueue");
  50. }
  51. }
  52. returnret;
  53. }
  54. privatestaticObjectgetDeclaredField(Objectobj,Stringname)
  55. throwsSecurityException,NoSuchFieldException,
  56. IllegalArgumentException,IllegalAccessException{
  57. Fieldf=obj.getClass().getDeclaredField(name);
  58. f.setAccessible(true);
  59. Objectout=f.get(obj);
  60. //System.out.println(obj.getClass().getName()+"."+name+"="+out);
  61. returnout;
  62. }
  63. privatestaticvoidsetDeclaredField(Objectobj,Stringname,Objectvalue)
  64. throwsSecurityException,NoSuchFieldException,
  65. IllegalArgumentException,IllegalAccessException{
  66. Fieldf=obj.getClass().getDeclaredField(name);
  67. f.setAccessible(true);
  68. f.set(obj,value);
  69. }
  70. privatestaticObjectinvokeMethod(Objectobject,StringmethodName,Object[]params,Class...types)throwsException{
  71. Objectout=null;
  72. Classc=objectinstanceofClass?(Class)object:object.getClass();
  73. if(types!=null){
  74. Methodmethod=c.getMethod(methodName,types);
  75. out=method.invoke(object,params);
  76. }else{
  77. Methodmethod=c.getMethod(methodName);
  78. out=method.invoke(object);
  79. }
  80. //System.out.println(object.getClass().getName()+"."+methodName+"()="+out);
  81. returnout;
  82. }

分享到:
评论

相关推荐

    WebViewProxy:设置 Android WebView 代理的类

    网络视图代理设置 Android WebView 代理的类

    webview通过代理访问网络

    费了好大一番功夫,才把自己开发的简单浏览器加上是了代理访问功能,所使用的代理是android系统中设置的代理,经过测试完全可用,把方法分享一下,为需要的朋友提供一些帮助。 本来发表在博客上的,但是现在缺乏积分...

    DroidWebViewProxyDemo:Android WebView代理演示

    DroidWebViewProxyDemo Android WebView代理演示 这是演示如何设置WebView代理的演示。

    封装WebView

    PrimWeb 是一个代理的WebView基于的 Android WebView 和 腾讯 x5 WebView,容易、灵活使用以及功能非常强大的库,提供了 WebView 一系列的问题解决方案 ,并且轻量和灵活, 更方便 webview 的切换

    Android代码-PrimWeb

    PrimWeb 是一个代理的WebView基于的 Android WebView 和 腾讯 x5 WebView,容易、灵活使用以及功能非常强大的库,提供了 WebView 一系列的问题解决方案 ,并且轻量和灵活, 更方便 webview 的切换. What Support? ...

    Android代码-一套可以设置代理的淘客系统

    lingJuan一套可以设置代理的淘客系统 前段时间自己想做淘客,发现市场上的APP都是网站打包的,说打包都过了,就是webview里面放一个h5的网址,恕我直言,很水,于是就萌生了自己写一个的想法 APP内所有的API调用自轻...

    TiWebViewUserAgent:设置 Ti.UI.WebView 的用户代理

    该Module 用于自定义WebView 的UserAgent。 平台 适用于 iOS iphone/ -- TiWebViewUserAgentIOS 适用于 Android (< Titanium Mobile SDK 1.8) android/ -- TiWebViewUserAgentAndroid 执照 麻省理工学院执照 ...

    Android Webview使用小结

    在Android中,常用的Java与Js交互的实现方式是通过函数addJavascriptInterface进行添加在Js中使用的回调代理类。 这种方法虽然方便,但是写出来的js代码并不通用。如果IOS也要实现类似的功能或业务,则IOS要另外写...

    android浏览器-真机环境下可自动获取不同运营商网络代理

    在(移动联通电信)wap网络下,android webview控件无法直接访问网络,该程序可自动获取相应网络代理从而进行网络访问。由于wifi等net环境下不需代理,程序也有考虑到。 在此感谢这两位博主分享的博文:...

    安卓java获取webview源码-microsoft-authentication-library-for-android:适用于Andro

    支持并在融合体验中使用 。 该库还支持 . 介绍 什么是新的? 寻找有兴趣提供有关用 C++ 和 Java 编写的 MSAL x 平台实现的早期反馈的开发人员,可从 Java、Kotlin 和 C++ 调用。 如果您有兴趣,请联系。 11/09/2020 ...

    SmartCookieWeb:适用于Android的安全,开源Web浏览器

    在“高级”设置中关闭“允许站点打开新窗口”,然后在“隐私和安全性设置”中打开“删除标识的HTTP标头”,以及在“常规设置”中将用户代理设置为“移动”即可解决此问题。 支持 需要帮忙? 在此处打开问题,或: ...

    安卓java获取webview源码-react-native-lock:[已弃用]与ReactNative(iOS和Android)一起使用的

    安卓java获取webview源码此库已弃用 ...日之前已经在使用此库,则可以转到客户的设置并启用您需要的授权。 Legacy: RO ( http://auth0.com/oauth/legacy/grant-type/ro ):用于数据库连接 Legacy: RO jwt bearer ( ...

    积分管理系统java源码-AndroidKnowledgeSystem:Android知识架构体系

    个人对Android开发用到的知识进行积累,温故知新,主要针对中高级工程师 语言篇 Java 常用的类原理 ArrayList HashMap jvm虚拟机 内存模型 内存回收机制 并发编程 同步机制 violate和synchronize wait和notify ...

    NetCipher:https的镜像

    它使用标准Android HTTP方法和提供最佳实践TLS设置,提供简单的Tor集成,使配置HTTP连接和WebView实例的代理变得容易。 更具体地说,该库提供: 加强TLS协议支持和密码套件,尤其是在较旧版本的Android(例如4.4和...

    NativeAlphaForAndroid

    使用Android系统WebView在无边框的全屏窗口中显示任何网站。 提供创建主屏幕快捷方式并以合适的分辨率检索图标的功能。 可以分别为每个Web应用设置各种设置(JavaScript,Cookie,第三方Cookie,AdBlock) 浏览时...

    sweb:Android简单网络浏览器

    SWeb-Android简单的Web浏览器这是一个小型且简单的基于WebView的浏览器。 其独特的功能包括: 网站的夜间模式(黑色背景上的灰色文本) Adblocker,使用Easylist规则文件记录并显示页面发出的所有HTTP请求,例如嵌入...

    vimo:基于Vue2.x的H5平台

    为了满足一套H5在不同Webview中兼容,Vimo在初始化时能根据不同平台(微信,支付宝,钉钉等)的特性,调用平台提供的模块方法,例如:在普通浏览器中使用H5的ActionSheet,而在支付宝或钉钉中使用JSSDK提供的...

    JS与Native交互

    作者FarWinter,源码IOS-JsAndNativeDemo,通过webview代理方法 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)...

    Objective-C 代码与Javascript 代码相互调用实例

    由于本人在项目中会用到这部分功能,做下记录! JS调用OC 很多应用里面或多或少的调用了网页,来达到绚丽的效果,所谓的JS调用OC…..举个例子吧,网页上有个按钮 点击按钮跳转界面,跳转的动作由OC的代码实现。 OC...

    IONIC 功能全演示

    - 微信的android版本的内置浏览器是腾讯x5,大致相当于webkit40,具体版本号很神秘,渲染能力和性能有些问题,参考官方说明[Inspector调试WebView](http://x5.tencent.com/guide?id=2001) ## 其他注意事项: - ...

Global site tag (gtag.js) - Google Analytics