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

tli*_*eck 13 cookies android webkit privacy webview

对于允许启用隐私浏览的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中找不到任何可能使之前的私有浏览功能相似的内容.

Com*_*are 3

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

这确实有缺点:

  • 它们不能位于同一活动中,因为View一个进程中的活动不能在另一个进程中呈现。因此,如果浏览器的 UI 隐喻意味着WebView单个活动中的多个小部件(例如选项卡),则需要调整该 UI 隐喻以允许常规浏览和私密浏览之间的“上下文切换”。

  • 这将消耗更多的系统 RAM,这对用户不利,但对开发人员有利(出现OutOfMemoryError异常的可能性较小)。