CookieSyncManager现已弃用,我可以使用哪些内容?

时间:2015-05-28 09:24:12

标签: android cookies webview synchronize

我在我的应用程序中使用cookie在所有浏览器中都能正常工作,但在Android设备中,cookie设置不如我想​​要的那么快,需要一些时间才能保存cookie,同样的情况发生在我删除cookie。有什么办法可以让它更好地运作吗?提前感谢您的回答。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    webview = new WebView(this);
    webview.getSettings().setJavaScriptEnabled(true); // enable javascript

    CookieManager.setAcceptFileSchemeCookies(true);
    CookieManager cookieManager = CookieManager.getInstance();
    cookieManager.setAcceptCookie(true);
    cookieManager.acceptCookie();
    String cookie = CookieManager.getInstance().getCookie("mylink");

    final Activity activity = this;

    webview.setWebViewClient(new WebViewClient() {
        public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
            Toast.makeText(activity, description, Toast.LENGTH_SHORT).show();
        }
    });
    webview.loadUrl("mylink");

    setContentView(webview);
}

3 个答案:

答案 0 :(得分:16)

在棒棒糖及其他方面,CookieManager单例本身可以正常工作。 (参考链接 - http://developer.android.com/reference/android/webkit/CookieManager.html) 但是,在Lollipop之前,它还需要使用CookieSyncManager中的其他静态方法。在WebView上设置cookie时,以下代码适用于所有Android版本 -

CookieManager cookieManager = CookieManager.getInstance();
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
    CookieSyncManager.createInstance(this);
}
cookieManager.setAcceptCookie(true);

答案 1 :(得分:0)

只需启用javascript和Dom存储。这可以帮助我记住我的webview android应用程序中的登录详细信息。我没有使用任何CookieManager,而是启用了此功能。

 webView.getSettings().setJavaScriptEnabled(true);
 webView.getSettings().setDomStorageEnabled(true);

答案 2 :(得分:0)

没什么:“ WebView现在会根据需要自动同步cookie。您不再需要创建或使用CookieSyncManager。”

如DarkKnight所说,您可以测试您的应用程序目标是否低于API 21 Lollipop(5.0),如果不需要,则不再需要CookieSyncManager。