WebView白屏问题和cookie问题

以下解决办法均来自于下面两个博客: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;  
} 

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

转载于:https://my.oschina.net/u/4112587/blog/3036623

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值