安卓Webview的私密浏览模式

14

我在我的Android应用程序中使用Webview从多个站点获取一些网页,但是我对Webview的行为有一些疑问。

  1. Webview是否存储历史记录、cookies和表单自动填充信息?如果是,我们可以停止它吗?
  2. 如果Webview正在存储cookies,它是否与手机上的其他普通浏览器共享cookies(当用户尝试从另一个浏览器打开网站时,可以使用在Webview中打开网站xyz时存储在cookie中的信息)?

我认为WebView不会保存数据,因为它不是浏览器,只是渲染网页。 - Yugandhar Babu
2个回答

25

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 信息能否被使用)?

[答案] 不会。该信息不会与手机上的其他浏览器共享。


非常感谢,你让我的一天变得美好! - Chandler
1
应该使用WebSettings.LOAD_NO_CACHE而不是mWebView.getSettings().LOAD_NO_CACHE - woprandi
第三方cookie怎么办?如果我使用的是一个使用系统webview来渲染各种网站(例如RSS阅读器)的应用程序,我能避免被追踪吗? - z0r

5
  1. 是的,webview 可以存储历史记录、cookie 和表单自动填充信息,但这些信息只在您的应用程序本地可用,而不是系统范围内。您还可以使用此 SO 答案中的提示来管理 cookie。

  2. 正如上面提到的那样,在您的应用程序中 webview 存储的任何内容都不会与手机上的其他浏览器共享。


3
使用myWebView.clearFormData()无法清除表单数据,请改用WebViewDatabase.getInstance(this).clearFormData() - Vitaly Kushner

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