Android - 如何在webview加载URL时传递cookie?

14

我需要在Webview中加载带有一些cookie的url。如何实现?

我正在执行以下代码..

CookieManager cookieManager;

CookieSyncManager.createInstance(PrivacyActivity.this);
cookieManager = CookieManager.getInstance();

cookieManager.setCookie("param", "value");
CookieSyncManager.getInstance().sync();

WebSettings webSettings = wv.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(true);
wv.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return super.shouldOverrideUrlLoading(view, url);
    }
});
wv.loadUrl("https://example.com");

但是没有得到正确的结果。只是得到了原样的 "https://example.com"。Cookie 没有起作用。

2个回答

14

这个解决方案对我很有效(只需在加载网址之前向CookieManager添加cookie就可以了):

WebView webview = (WebView) findViewById(R.id.webview);
...
CookieManager.getInstance().setCookie("http://example.com/", "key=value");
webview.loadUrl("http://example.com/");

6

我解决了问题,方法是...

        WebView webview = (WebView) this.findViewById(R.id.wv_file);
        final WebSettings settings = webview.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setAppCacheEnabled(true);
        settings.setBuiltInZoomControls(true);
        settings.setPluginState(WebSettings.PluginState.ON);

        webview.setWebChromeClient(new WebChromeClient());

        CookieSyncManager.createInstance(ActivityName.this);
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.removeSessionCookie();
        String cookieString = "param=value";
        cookieManager.setCookie(domain_of_url("like http://abc-site.com"), cookieString);
        CookieSyncManager.getInstance().sync();

        Map<String, String> abc = new HashMap<String, String>();
        abc.put("Cookie", cookieString);
        webview.loadUrl("http://abc-site.com/a1/namedFolder/file",
                abc);

什么是CookieSyncManager的替代品? 此外,我们需要手动添加cookie吗?我们不能将所有cookie传递给webview吗? - Mr.India
@Mr.India CookieManager现在有一个flush()方法,该方法会阻塞直到所有cookie同步到磁盘。 - Ionoclast Brigham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接