美文网首页
WebView白屏问题和cookie问题

WebView白屏问题和cookie问题

作者: HopCoder | 来源:发表于2018-01-25 21:03 被阅读0次

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

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

    相关文章

      网友评论

          本文标题:WebView白屏问题和cookie问题

          本文链接:https://www.haomeiwen.com/subject/gyjbaxtx.html