从API 17开始,Android WebView中不推荐使用私有浏览。有什么替代方案?

时间:2013-11-22 14:58:16

标签: android cookies webview webkit privacy

对于允许启用隐私浏览的WebView构造函数,API规范如下所示:

(来自http://developer.android.com/reference/android/webkit/WebView.html

WebView(Context context,AttributeSet attrs,int defStyle,boolean privateBrowsing)

在API级别17中不推荐使用此构造函数。不再直接通过WebView支持私有浏览,并将在以后的版本中删除。首选使用WebSettings,WebViewDatabase,CookieManager和WebStorage对隐私数据进行细粒度控制。

从API 19(KitKat)开始,私人浏览被禁用。尝试使用值true调用此构造函数会导致IllegalArgumentException。

建议的替代方案在复制隐私浏览行为方面甚至不会有效。 CookieManager类是一个单例,所有设置都应用于整个应用程序。使用这种方法没有“对隐私数据的细粒度控制”。 CookieManager提供的唯一控件是能够为应用程序中存在的每个WebView完全禁用cookie。此更改意味着第三方浏览器无法再以任何身份复制Google自己浏览器的隐私浏览功能。

我非常感谢有关解决此问题的任何建议。到目前为止,我在API中找不到任何可能与之前的隐私浏览功能相似的内容。

1 个答案:

答案 0 :(得分:2)

除了我在评论中所拥有的内容之外,这是另一个有多个流程合理的地方。由于CookieManager是单例,因此单独的进程将具有单独的CookieManager实例。 “私密浏览”WebView实例可能与“常规浏览”WebView实例处于单独的过程中。

这确实有缺点:

  • 它们不能处于同一活动中,因为来自一个进程的View无法在另一个进程中呈现。因此,如果浏览器的UI隐喻在单个活动中隐含了几个WebView窗口小部件(例如,标签),则需要调整该UI隐喻以允许在常规浏览和私人浏览之间进行“上下文切换”。

  • 这会消耗更多的系统内存,这对用户来说是不利的,虽然对开发人员有利(OutOfMemoryError例外的可能性较小)。