fix: 修复颜色字符串非法时 Color.parseColor 崩溃的问题
ensureColorInts 和 ensureAccentColorInts 中对 toColorInt() 加 try-catch 保护, 解析失败时回退到字段默认值,避免数据库中存储损坏颜色字符串导致崩溃
This commit is contained in:
@@ -1141,21 +1141,25 @@ object ReadBookConfig {
|
||||
}
|
||||
}
|
||||
|
||||
private fun String.toColorIntSafe(fallback: Int): Int {
|
||||
return runCatching { toColorInt() }.getOrDefault(fallback)
|
||||
}
|
||||
|
||||
private fun ensureColorInts() {
|
||||
if (initColorInt) {
|
||||
return
|
||||
}
|
||||
textColorIntEInk = textColorEInk.toColorInt()
|
||||
textColorIntNight = textColorNight.toColorInt()
|
||||
textColorInt = textColor.toColorInt()
|
||||
shadowColorNightInt = shadowColorN.toColorInt()
|
||||
shadowColorInt = shadowColor.toColorInt()
|
||||
menuBgColorInt = menuBgColor.toColorInt()
|
||||
menuBgColorNightInt = menuBgColorNight.toColorInt()
|
||||
menuAcColorInt = menuAcColor.toColorInt()
|
||||
menuAcColorNightInt = menuAcColorNight.toColorInt()
|
||||
underlineColorInt = underlineColor.toColorInt()
|
||||
underlineColorNightInt = underlineColorNight.toColorInt()
|
||||
textColorIntEInk = textColorEInk.toColorIntSafe(0xFF000000.toInt())
|
||||
textColorIntNight = textColorNight.toColorIntSafe(0xFFADADAD.toInt())
|
||||
textColorInt = textColor.toColorIntSafe(0xFF3E3D3B.toInt())
|
||||
shadowColorNightInt = shadowColorN.toColorIntSafe(0xFF3E3D3B.toInt())
|
||||
shadowColorInt = shadowColor.toColorIntSafe(0xFF3E3D3B.toInt())
|
||||
menuBgColorInt = menuBgColor.toColorIntSafe(-1)
|
||||
menuBgColorNightInt = menuBgColorNight.toColorIntSafe(-1)
|
||||
menuAcColorInt = menuAcColor.toColorIntSafe(-1)
|
||||
menuAcColorNightInt = menuAcColorNight.toColorIntSafe(-1)
|
||||
underlineColorInt = underlineColor.toColorIntSafe(0xFF3E3D3B.toInt())
|
||||
underlineColorNightInt = underlineColorNight.toColorIntSafe(0xFFADADAD.toInt())
|
||||
initColorInt = true
|
||||
}
|
||||
|
||||
@@ -1163,9 +1167,9 @@ object ReadBookConfig {
|
||||
if (initAccentColorInt) {
|
||||
return
|
||||
}
|
||||
textAccentColorIntEInk = textAccentColorEInk.toColorInt()
|
||||
textAccentColorIntNight = textAccentColorNight.toColorInt()
|
||||
textAccentColorInt = textAccentColor.toColorInt()
|
||||
textAccentColorIntEInk = textAccentColorEInk.toColorIntSafe(0xFF000000.toInt())
|
||||
textAccentColorIntNight = textAccentColorNight.toColorIntSafe(0xFFFE4D55.toInt())
|
||||
textAccentColorInt = textAccentColor.toColorIntSafe(0xFF834E00.toInt())
|
||||
initAccentColorInt = true
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user