我在我的Android应用程序中使用Webview从多个站点获取一些网页,但是我对Webview的行为有一些疑问。
- Webview是否存储历史记录、cookies和表单自动填充信息?如果是,我们可以停止它吗?
- 如果Webview正在存储cookies,它是否与手机上的其他普通浏览器共享cookies(当用户尝试从另一个浏览器打开网站时,可以使用在Webview中打开网站xyz时存储在cookie中的信息)?
我在我的Android应用程序中使用Webview从多个站点获取一些网页,但是我对Webview的行为有一些疑问。
P1. WebView
是否存储历史记录、Cookie和表单自动填充信息?如果是,我们可以阻止它这样做吗?
[答] 是的,WebView
存储历史记录、Cookie和表单自动填充信息。
要停止,请按照以下步骤操作:
//Make sure No cookies are created
CookieManager.getInstance().setAcceptCookie(false);
//Make sure no caching is done
myWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
myWebView.getSettings().setAppCacheEnabled(false);
myWebView.clearHistory();
myWebView.clearCache(true);
//Make sure no autofill for Forms/ user-name password happens for the app
myWebView.clearFormData();
myWebView.getSettings().setSavePassword(false);
myWebView.getSettings().setSaveFormData(false);
P2. 如果 WebView
存储了 cookie,那么它是否会与手机上的其他普通浏览器共享 cookie(当用户尝试从另一个浏览器打开网站时,使用 'WebView' 打开的网站 xyz 中存储的 cookie 信息能否被使用)?
[答案] 不会。该信息不会与手机上的其他浏览器共享。
WebSettings.LOAD_NO_CACHE
而不是mWebView.getSettings().LOAD_NO_CACHE
。 - woprandi是的,webview 可以存储历史记录、cookie 和表单自动填充信息,但这些信息只在您的应用程序本地可用,而不是系统范围内。您还可以使用此 SO 答案中的提示来管理 cookie。
正如上面提到的那样,在您的应用程序中 webview 存储的任何内容都不会与手机上的其他浏览器共享。
myWebView.clearFormData()
无法清除表单数据,请改用WebViewDatabase.getInstance(this).clearFormData()
。 - Vitaly Kushner