对于允许启用隐私浏览的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中找不到任何可能与之前的隐私浏览功能相似的内容。
答案 0 :(得分:2)
除了我在评论中所拥有的内容之外,这是另一个有多个流程合理的地方。由于CookieManager
是单例,因此单独的进程将具有单独的CookieManager
实例。 “私密浏览”WebView
实例可能与“常规浏览”WebView
实例处于单独的过程中。
这确实有缺点:
它们不能处于同一活动中,因为来自一个进程的View
无法在另一个进程中呈现。因此,如果浏览器的UI隐喻在单个活动中隐含了几个WebView
窗口小部件(例如,标签),则需要调整该UI隐喻以允许在常规浏览和私人浏览之间进行“上下文切换”。
这会消耗更多的系统内存,这对用户来说是不利的,虽然对开发人员有利(OutOfMemoryError
例外的可能性较小)。