From 18a5c4bef4078a2f94a86e683747cf592a82905b Mon Sep 17 00:00:00 2001 From: testwind Date: Wed, 28 May 2025 07:40:13 +0800 Subject: [PATCH] =?UTF-8?q?bug=E9=97=AE=E9=A2=98=EF=BC=9AAPI=2021=20?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E8=AE=BE=E7=BD=AE=E5=8C=BA=E5=9F=9F?= =?UTF-8?q?=E4=BC=9A=E6=8A=A5=E9=94=99=EF=BC=8Cdb.setLocale?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/data/AppDatabase.kt | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/data/AppDatabase.kt b/app/src/main/java/io/legado/app/data/AppDatabase.kt index e655a12f2..b9254ed1f 100644 --- a/app/src/main/java/io/legado/app/data/AppDatabase.kt +++ b/app/src/main/java/io/legado/app/data/AppDatabase.kt @@ -2,6 +2,8 @@ package io.legado.app.data import android.content.ContentValues import android.database.sqlite.SQLiteDatabase +import android.os.Build +import android.util.Log import androidx.room.AutoMigration import androidx.room.Database import androidx.room.Room @@ -143,7 +145,19 @@ abstract class AppDatabase : RoomDatabase() { val dbCallback = object : Callback() { override fun onCreate(db: SupportSQLiteDatabase) { - db.setLocale(Locale.CHINESE) + // 只在 API 级别 23 (Marshmallow) 及以上版本尝试设置区域设置 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + try { + Log.d("AppDatabaseCallback", "准备 设置 locale for API ${Build.VERSION.SDK_INT}...") + db.setLocale(Locale.CHINESE) + // 在 21 上报错,但无法拦截 + Log.d("AppDatabaseCallback", "成功 设置 locale for API ${Build.VERSION.SDK_INT}.") + } catch (e: Exception) { + Log.e("AppDatabaseCallback", "错误 设置 locale in onCreate for API ${Build.VERSION.SDK_INT}", e) + } + } else { + Log.i("AppDatabaseCallback", "跳过 setLocale for API ${Build.VERSION.SDK_INT} (below M).") + } } override fun onOpen(db: SupportSQLiteDatabase) {