From e54e75f9958a7ee8d8f648f0716173c01405798b Mon Sep 17 00:00:00 2001 From: sean <819165594@qq.com> Date: Sun, 24 Mar 2024 16:27:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=BC=96=E8=BE=91=E7=BE=A4=E8=81=8A?= =?UTF-8?q?=E5=90=8E=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kbai/zhenxunui/tool/Ansi2SpannedHelper.kt | 34 +++++++++++-------- .../me/kbai/zhenxunui/tool/CrashHandler.kt | 2 +- .../ui/group/BaseEditInfoFragment.kt | 4 +-- 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/me/kbai/zhenxunui/tool/Ansi2SpannedHelper.kt b/app/src/main/java/me/kbai/zhenxunui/tool/Ansi2SpannedHelper.kt index af48d8f..23bfede 100644 --- a/app/src/main/java/me/kbai/zhenxunui/tool/Ansi2SpannedHelper.kt +++ b/app/src/main/java/me/kbai/zhenxunui/tool/Ansi2SpannedHelper.kt @@ -13,6 +13,7 @@ import android.text.style.StrikethroughSpan import android.text.style.StyleSpan import android.text.style.UnderlineSpan import androidx.annotation.RequiresApi +import me.kbai.zhenxunui.extends.logE import pk.ansi4j.core.DefaultFunctionFinder import pk.ansi4j.core.DefaultParserFactory import pk.ansi4j.core.DefaultTextHandler @@ -30,7 +31,7 @@ import pk.ansi4j.core.iso6429.IndependentControlFunctionHandler import java.util.AbstractCollection class Ansi2SpannedHelper { - private val mFactory: ParserFactory? = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + private val mFactory: ParserFactory? = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { initFactory() } else { null @@ -41,22 +42,27 @@ class Ansi2SpannedHelper { val builder = SpannableStringBuilder() val parser = (mFactory ?: return SpannedString(text)).createParser(text) - while (true) { - val fragment = parser.parse() ?: break - if (fragment.type == FragmentType.TEXT) { - val start = builder.length - builder.append(fragment.text) - mStyles.forEach { - builder.setSpan(it, start, builder.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) - } - } else if (fragment.type == FragmentType.FUNCTION) { - val functionFragment = fragment as FunctionFragment - if (functionFragment.function == ControlSequenceFunction.SGR_SELECT_GRAPHIC_RENDITION) { - functionFragment.arguments.forEach { parseArgument(it) } + try { + while (true) { + val fragment = parser.parse() ?: break + if (fragment.type == FragmentType.TEXT) { + val start = builder.length + builder.append(fragment.text) + mStyles.forEach { + builder.setSpan(it, start, builder.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + } + } else if (fragment.type == FragmentType.FUNCTION) { + val functionFragment = fragment as FunctionFragment + if (functionFragment.function == ControlSequenceFunction.SGR_SELECT_GRAPHIC_RENDITION) { + functionFragment.arguments.forEach { parseArgument(it) } + } } } + mStyles.clear() + } catch (e: Exception) { + logE(e) + return SpannedString(text) } - mStyles.clear() return builder } diff --git a/app/src/main/java/me/kbai/zhenxunui/tool/CrashHandler.kt b/app/src/main/java/me/kbai/zhenxunui/tool/CrashHandler.kt index f91cf9e..e6b5b0a 100644 --- a/app/src/main/java/me/kbai/zhenxunui/tool/CrashHandler.kt +++ b/app/src/main/java/me/kbai/zhenxunui/tool/CrashHandler.kt @@ -21,7 +21,7 @@ object CrashHandler { private fun log(context: Context, throwable: Throwable) = logE( "MODEL: ${Build.MODEL} " + "SDK: ${Build.VERSION.SDK_INT} " + - "CPU_ABI: ${Build.SUPPORTED_ABIS} " + + "CPU_ABI: ${Build.SUPPORTED_ABIS.contentToString()} " + "VERSION: ${getPackageVersionName(context)} " + "\n StackTrace: \n" + Log.getStackTraceString(throwable), diff --git a/app/src/main/java/me/kbai/zhenxunui/ui/group/BaseEditInfoFragment.kt b/app/src/main/java/me/kbai/zhenxunui/ui/group/BaseEditInfoFragment.kt index d395966..b60385a 100644 --- a/app/src/main/java/me/kbai/zhenxunui/ui/group/BaseEditInfoFragment.kt +++ b/app/src/main/java/me/kbai/zhenxunui/ui/group/BaseEditInfoFragment.kt @@ -32,7 +32,7 @@ abstract class BaseEditInfoFragment : BaseFragment() { .build() } - protected abstract fun getWebViews(): Array + protected abstract fun getWebViews(): Array protected abstract fun updateInfo(): Any @@ -45,8 +45,8 @@ abstract class BaseEditInfoFragment : BaseFragment() { } override fun onDestroyView() { - super.onDestroyView() getWebViews().forEach { it.destroy() } + super.onDestroyView() } @SuppressLint("SetJavaScriptEnabled")