in Codex

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

原文:http://hi.baidu.com/rslhg/blog/item/17501ab574655adc37d3ca69.html

作者:rslhg,就职于Tencent

  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里面设置标志,重新载入第一个页面即可。

Write a Comment

Comment