使Android WebView不存储cookie或密码



2 Answers

不保存密码:

WebView webview = new WebView(this);
WebSettings mWebSettings = webview.getSettings();
mWebSettings.setSavePassword(false);
mWebSettings.setSaveFormData(false);

饼干:

CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(false);

我不太确定cookie的实现。

Question

我使用Android WebView for Twitter OAuth :Twitter要求用户登录并授权应用程序,我检索访问令牌并将其保留在我的应用程序中。

我不需要(也不要)存储用户密码,但WebView会保留Twitter的cookie,并且还会询问用户是否要记住密码。 因此,即使在通过他的Twitter帐户页面取消授权应用程序之后,我的应用程序也会破坏访问令牌,下次打开WebView时,它可能仍然登录,即使没有,它也有密码框已经填写。

如何强制WebView不要求记住密码,以及不保留会话cookie? 如果不可能,我可以删除所有存储的状态(图像缓存除外)吗?




这是我在这种情况下看到的最佳答案

    webView.clearCache(true);
    webView.clearHistory();
    WebSettings webSettings = webView.getSettings();
    webSettings.setSaveFormData(false);
    webSettings.setSavePassword(false); // Not needed for API level 18 or greater (deprecated)

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
        CookieManager.getInstance().removeAllCookies(null);
        CookieManager.getInstance().flush();
    } else {
        CookieSyncManager cookieSyncMngr = CookieSyncManager.createInstance(this);
        cookieSyncMngr.startSync();
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.removeAllCookie();
        cookieManager.removeSessionCookie();
        cookieSyncMngr.stopSync();
        cookieSyncMngr.sync();
    }



我使用了以下解决方案:

CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(false);

以下方法对我不起作用:

CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();

可能的原因可能是我们未将cookie同步如下:

CookieSyncManager.createInstance(getContext()).sync();

但这可能需要时间。

强制WebView不要求记住密码也不起作用。

它对可用性也不利。






Related