android WebView使用cmwap无法联网解决办法

本文分享了Android设备在使用CMWAP代理接入点时遇到的问题,包括网络环境判断避免错误代理获取、WebKit连接异常解决方法,以及针对特定Rom的优化策略。提供了解决方案如在特定场景下调用WebView平台通知API,以及如何快速加载页面并处理错误情况。
 

 android 在cmwap等代理接入点下的一些经验分享

文/rslhg


1.某些Rom在wifi环境下取代理依然会取到cmwap设置的代理值,所以取代理时判断一下手机网络环境,如果是gprs上网,则不取代理。
ConnectivityManager connectivityManager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo activeNetworkInfo = connectivityManager
                    .getActiveNetworkInfo();
            if (activeNetworkInfo != null) {
                int type = activeNetworkInfo.getType();

                // TODO 防止wifi下读取移动的代理
                if (type == ConnectivityManager.TYPE_MOBILE) {
                      //取代理
                       }else{
                  //不取代理
                }
              }

2. 某些rom的webkit在cmwap下,webkit连接不上或是时断时连,需要在onResume()添加 WebView.enablePlatformNotifications();,onStop添加 WebView.disablePlatformNotifications();。但是此时如果你需要刚进入这个activity就load页面,第一次进入时load的第一个页面是load不出来的,会停留很久并且不出错误页面,不调用WebViewClient.onReceivedError。个人试过setHttpAuthUsernamePassword也不好使。
个人解决方案:

    mWebPage.post(new Runnable(){
            @Override
            public void run() {
                mWebPage.loadUrl(url);
                
            }
            
        });

此时第一此load页面会很快调用WebViewClient.onReceivedError,你再在WebViewClient.onReceivedError里面设置标志,重新载入第一个页面即可。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值