WebView白屏问题和cookie问题

2018-01-25  本文已影响0人  HopCoder

以下解决办法均来自于下面两个博客:http://blog.csdn.net/juhua2012/article/details/52249720
http://blog.csdn.net/qq_34584049/article/details/78280815

cookie实际是这样的一个字符串
// sessionid=shasakaakakasja;username=zhangsan

CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();// 移除
cookieManager.setCookie(url, LibConfig.cookie);// cookies是在HttpClient中获得的cookie
CookieSyncManager.getInstance().sync();

通过抓取得到的cookie值却只有一个
sessionid=shasakaakakasja

CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();// 移除
String cookie = LibConfig.cookie; 
String[] split = cookie.split(";");
if (split != null && split.length > 0){
    for (int index = 0; index < split.length; index++){
        String cookieStr = split[index].substring(0, split[index].length());
        cookieManager.setCookie(url, cookieStr);
    }
}

//cookieManager.setCookie(url, LibConfig.cookie);// cookies是在HttpClient中获得的cookie
CookieSyncManager.getInstance().sync();

得到的cookie值
sessionid=shasakaakakasja
username=zhangsan

问题介绍:在Android开发中,经常会遇到开发原生和H5嵌套的APP,而在android中加载H5界面时通常使用webview控件进行嵌套,而此时就会出现一些很神奇的事情——界面白屏。
解决办法
1.Android中加载网页时界面会有缓存,通过清除webview的缓存,让app每次进入该H5界面时都重新加载:

// 清缓存和记录,缓存引起的白屏  
mWebView.clearCache(true);  
mWebView.clearHistory();  
  
mWebView.requestFocus();  
WebSettings webSettings = mWebView.getSettings();  
webSettings.setDatabaseEnabled(true);  
// 缓存白屏  
String appCachePath = getApplicationContext().getCacheDir()  
            .getAbsolutePath() + "/webcache";  
// 设置 Application Caches 缓存目录  
webSettings.setAppCachePath(appCachePath);  
webSettings.setDatabasePath(appCachePath);  

2.可以通过setAppCacheEnabled方法来控制webview是否有缓存:

// 应用可以有缓存 true false 没有缓存  
webSettings.setAppCacheEnabled(false);
  1. webview加载H5界面时,H5中的一些控件标签可能使用后android中不支持,可以使用setDomStorageEnabled方法来处理:
// 解决对某些标签的不支持出现白屏  
webSettings.setDomStorageEnabled(true);  
  1. setWebViewClient加入这样一段代码 防止在不同android版本上出现白屏的情况:
@Override  
public boolean shouldOverrideUrlLoading(WebView view, String url) {  
    // 重写此方法表明点击网页里面的链接还是在当前的webview里跳转,不另跳浏览器  
    // 在2.3上面不加这句话,可以加载出页面,在4.0上面必须要加入,不然出现白屏  
    if (url.startsWith("http://") || url.startsWith("https://")) {  
        view.loadUrl(url);  
        mWebView.stopLoading();  
        return true;  
    }  
    return false;  
} 

我就是按照上面两个方法解决的问题,两个问题一起遇到了,郁闷了一天。

上一篇下一篇

猜你喜欢

热点阅读