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裡面設定標誌,重新載入第一個頁面即可。