原先的 browser 实作就已经包含了无痕模式的细部功能,像是禁止使用 Cookie,和不记录浏览历史;但是却没有一个快速开关能够进到一般浏览器支援的无痕模式。
所以,今天我来讲讲怎麽实作一键进入无痕模式。
首先,将进入点实作在长按分页键。这是个蛮合理的位置。并在ConfigManager
中加入一个关於无痕模式的状态。
binding.omniboxTabcount.setOnLongClickListener {
config.isIncognitoMode = !config.isIncognitoMode
true
}
当 ConfigManager
的状态被改变时,BrowserActivity
会将这个状态传入当前的 WebView
分页中,然後 updateWebViewCountUI()
将分页预览按钮的图案改成是虚线的。
private val preferenceChangeListener = SharedPreferences.OnSharedPreferenceChangeListener { _, key ->
key.equals(ConfigManager.K_IS_INCOGNITO_MODE) -> {
ninjaWebView.incognito = config.isIncognitoMode
updateWebViewCountUI()
NinjaToast.showShort(
this,
"Incognito mode is " + if (config.isIncognitoMode) "enabled." else "disabled."
)
}
...
}
再来看看 NinjaWebView
中的修改。首先也是增加 incognito 的状态。当它被赋值时,会同时去呼叫 toggleCookieSupport()
,藉此开关 Cookie 的支援。
var incognito: Boolean = false
set(value) {
field = value
toggleCookieSupport(!incognito)
}
除了 Cookie 开关外,在 NinjaWebViewClient
中的 onPageFinished()
原先有在记录浏览历转的地方,也要多加上 incognito 的判断才行:
override fun onPageFinished(view: WebView, url: String) {
// skip translation pages
if (config.saveHistory && !ninjaWebView.incognito && !isTranslationDomain(url)) {
addHistoryAction(url)
}
...
}
如此一来,就可以在主画面快速地切换到无痕模式,不用再一样样功能去切来切去。使用上方便许多。
>>: DAY12 - 档案类的物件关系厘清(1) - File, FileList, Blob
前言 接着昨天分享的话题,针对成为 Scrum Master 的经历与想法再进行补充。 大家从标题「...
看完这篇文章你会得到的成果图 此篇文章的范例程序码 github https://github.co...
新增团购讯息 add 关键字 讯息 删除团购讯息 删除 关键字 查询团购讯息 团购 手动新增团购者...
在疫情爆发之前,一切的一切看似都非常的正常,但是在爆发之後,所有的一切都被疫情给打乱了,并且所有的秩...
结束了恼人的环境安装,但我们还没有要开始Spring Boot 的实作,因为在开始学习一项技术之前,...