HapeLee 1 rok temu
rodzic
commit
b7c50dff05

+ 6 - 6
app/src/main/AndroidManifest.xml

@@ -33,7 +33,7 @@
         tools:ignore="AllowBackup,GoogleAppIndexingWarning,UnusedAttribute">
         <!-- 图标1 -->
         <activity-alias
-            android:name=".ui.welcome.Launcher1"
+            android:name=".Launcher1"
             android:enabled="false"
             android:exported="true"
             android:icon="@mipmap/launcher1"
@@ -46,7 +46,7 @@
         </activity-alias>
         <!-- 图标2 -->
         <activity-alias
-            android:name=".ui.welcome.Launcher2"
+            android:name=".Launcher2"
             android:enabled="false"
             android:exported="true"
             android:icon="@mipmap/launcher2"
@@ -59,7 +59,7 @@
         </activity-alias>
         <!-- 图标3 -->
         <activity-alias
-            android:name=".ui.welcome.Launcher3"
+            android:name=".Launcher3"
             android:enabled="false"
             android:exported="true"
             android:icon="@mipmap/launcher3"
@@ -72,7 +72,7 @@
         </activity-alias>
         <!-- 图标4 -->
         <activity-alias
-            android:name=".ui.welcome.Launcher4"
+            android:name=".Launcher4"
             android:enabled="false"
             android:exported="true"
             android:icon="@mipmap/launcher4"
@@ -85,7 +85,7 @@
         </activity-alias>
         <!-- 图标5 -->
         <activity-alias
-            android:name=".ui.welcome.Launcher5"
+            android:name=".Launcher5"
             android:enabled="false"
             android:exported="true"
             android:icon="@mipmap/launcher5"
@@ -98,7 +98,7 @@
         </activity-alias>
         <!-- 图标6 -->
         <activity-alias
-            android:name=".ui.welcome.Launcher6"
+            android:name=".Launcher6"
             android:enabled="false"
             android:exported="true"
             android:icon="@mipmap/launcher6"

+ 7 - 6
app/src/main/java/io/legato/kazusa/base/BaseActivity.kt

@@ -75,7 +75,7 @@ abstract class BaseActivity<VB : ViewBinding>(
         return super.onCreateView(parent, name, context, attrs)
     }
 
-    @SuppressLint("ObsoleteSdkInt")
+
     override fun onCreate(savedInstanceState: Bundle?) {
         applyTheme()
         window.decorView.disableAutoFill()
@@ -84,10 +84,8 @@ abstract class BaseActivity<VB : ViewBinding>(
         //setupSystemBar()
         setContentView(binding.root)
         upBackgroundImage()
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
-            findViewById<AppBarLayout>(R.id.title_bar)
-                //?.onMultiWindowModeChanged(isInMultiWindowMode, fullScreen)
-        }
+        findViewById<AppBarLayout>(R.id.title_bar)
+        //?.onMultiWindowModeChanged(isInMultiWindowMode, fullScreen)
         onBackPressedDispatcher.addCallback(this) {
             finish()
         }
@@ -137,7 +135,10 @@ abstract class BaseActivity<VB : ViewBinding>(
 
     open fun applyTheme() {
         when (getPrefString("app_theme", "0")) {
-            "0" -> DynamicColors.applyToActivitiesIfAvailable(application)
+            "0" ->
+            {
+                DynamicColors.applyToActivitiesIfAvailable(application)
+            }
             "1" -> setTheme(R.style.Theme_Base_GR)
             "2" -> setTheme(R.style.Theme_Base_Lemon)
             "3" -> setTheme(R.style.Theme_Base_WH)

+ 79 - 31
app/src/main/java/io/legato/kazusa/help/LauncherIconHelp.kt

@@ -15,12 +15,18 @@ import splitties.init.appCtx
 object LauncherIconHelp {
     private val packageManager: PackageManager = appCtx.packageManager
     private val componentNames = arrayListOf(
-        ComponentName(appCtx, Launcher1::class.java.name),
-        ComponentName(appCtx, Launcher2::class.java.name),
-        ComponentName(appCtx, Launcher3::class.java.name),
-        ComponentName(appCtx, Launcher4::class.java.name),
-        ComponentName(appCtx, Launcher5::class.java.name),
-        ComponentName(appCtx, Launcher6::class.java.name)
+        ComponentName(appCtx.packageName, "${appCtx.packageName}.Launcher1"),
+        ComponentName(appCtx.packageName, "${appCtx.packageName}.Launcher2"),
+        ComponentName(appCtx.packageName, "${appCtx.packageName}.Launcher3"),
+        ComponentName(appCtx.packageName, "${appCtx.packageName}.Launcher4"),
+        ComponentName(appCtx.packageName, "${appCtx.packageName}.Launcher5"),
+        ComponentName(appCtx.packageName, "${appCtx.packageName}.Launcher6")
+    )
+
+    // 主Activity的ComponentName
+    private val mainActivity = ComponentName(
+        appCtx.packageName,
+        "${appCtx.packageName}.ui.main.MainActivity"
     )
 
     fun changeIcon(icon: String?) {
@@ -29,37 +35,79 @@ object LauncherIconHelp {
             appCtx.toastOnUi(R.string.change_icon_error)
             return
         }
-        var hasEnabled = false
-        componentNames.forEach {
-            if (icon.equals(it.className.substringAfterLast("."), true)) {
-                hasEnabled = true
-                //启用
+
+        try {
+            // 首先禁用主Activity的启动器intent
+            disableMainActivityLauncher()
+
+            // 然后处理所有别名
+            var matched = false
+            componentNames.forEach {
+                val aliasName = it.className.substringAfterLast(".")
+                if (icon.equals(aliasName, ignoreCase = true)) {
+                    matched = true
+                    packageManager.setComponentEnabledSetting(
+                        it,
+                        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+                        PackageManager.DONT_KILL_APP
+                    )
+                } else {
+                    packageManager.setComponentEnabledSetting(
+                        it,
+                        PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+                        PackageManager.DONT_KILL_APP
+                    )
+                }
+            }
+
+            if (!matched) {
+                enableMainActivityLauncher()
+            }
+
+            // 通知用户图标已更改
+            appCtx.toastOnUi(R.string.change_icon_success)
+
+        } catch (e: Exception) {
+            e.printStackTrace()
+            appCtx.toastOnUi(R.string.change_icon_error)
+        }
+    }
+
+    // 禁用主Activity的启动器功能
+    private fun disableMainActivityLauncher() {
+        try {
+            // 获取当前组件状态
+            val state = packageManager.getComponentEnabledSetting(mainActivity)
+
+            // 如果已经禁用,不需要再次操作
+            if (state != PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {
                 packageManager.setComponentEnabledSetting(
-                    it,
-                    PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
+                    mainActivity,
+                    PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                     PackageManager.DONT_KILL_APP
                 )
-            } else {
-                //禁用
+            }
+        } catch (e: Exception) {
+            e.printStackTrace()
+        }
+    }
+
+    // 启用主Activity的启动器功能
+    private fun enableMainActivityLauncher() {
+        try {
+            // 获取当前组件状态
+            val state = packageManager.getComponentEnabledSetting(mainActivity)
+
+            // 如果已经启用,不需要再次操作
+            if (state != PackageManager.COMPONENT_ENABLED_STATE_ENABLED) {
                 packageManager.setComponentEnabledSetting(
-                    it,
-                    PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
+                    mainActivity,
+                    PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                     PackageManager.DONT_KILL_APP
                 )
             }
-        }
-        if (hasEnabled) {
-            packageManager.setComponentEnabledSetting(
-                ComponentName(appCtx, WelcomeActivity::class.java.name),
-                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                PackageManager.DONT_KILL_APP
-            )
-        } else {
-            packageManager.setComponentEnabledSetting(
-                ComponentName(appCtx, WelcomeActivity::class.java.name),
-                PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
-                PackageManager.DONT_KILL_APP
-            )
+        } catch (e: Exception) {
+            e.printStackTrace()
         }
     }
-}
+}

+ 2 - 2
app/src/main/java/io/legato/kazusa/lib/prefs/ThemeCardPreference.kt

@@ -88,7 +88,7 @@ class ThemeCardPreference(context: Context, attrs: AttributeSet) : Preference(co
     }
 
     private val themeResIdMap = mapOf(
-        "0" to R.style.Base_AppTheme,
+        "0" to R.style.Theme_Base_Dycolors,
         "1" to R.style.Theme_Base_GR,
         "2" to R.style.Theme_Base_Lemon,
         "3" to R.style.Theme_Base_WH,
@@ -106,7 +106,7 @@ class ThemeCardPreference(context: Context, attrs: AttributeSet) : Preference(co
             com.google.android.material.R.attr.colorPrimary,
             com.google.android.material.R.attr.colorOnSurfaceVariant,
             com.google.android.material.R.attr.colorSurface,
-            com.google.android.material.R.attr.colorPrimaryFixed,
+            com.google.android.material.R.attr.colorSecondaryContainer,
         )
 
         val ta = themedContext.obtainStyledAttributes(attrs)

+ 0 - 1
app/src/main/java/io/legato/kazusa/ui/book/toc/rule/TxtTocRuleDialog.kt

@@ -83,7 +83,6 @@ class TxtTocRuleDialog() : BaseDialogFragment(R.layout.dialog_toc_regex),
 
     override fun onStart() {
         super.onStart()
-        setLayout(0.9f, 0.8f)
     }
 
     override fun onFragmentCreated(view: View, savedInstanceState: Bundle?) {

+ 2 - 1
app/src/main/java/io/legato/kazusa/ui/main/MainActivity.kt

@@ -57,6 +57,7 @@ import splitties.views.bottomPadding
 import kotlin.coroutines.resume
 import kotlin.coroutines.suspendCoroutine
 import androidx.core.view.get
+import io.legato.kazusa.ui.welcome.WelcomeActivity
 
 /**
  * 主界面
@@ -413,7 +414,7 @@ class MainActivity : VMBaseActivity<ActivityMainBinding, MainViewModel>(),
         }
     }
 
-    @Suppress("DEPRECATION")
+
     private inner class TabFragmentPageAdapter(fm: FragmentManager) :
         FragmentStatePagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
 

+ 0 - 1
app/src/main/res/layout/activity_main.xml

@@ -19,5 +19,4 @@
         android:layout_height="wrap_content"
         app:menu="@menu/main_bnv" />
 
-
 </LinearLayout>

+ 0 - 1
app/src/main/res/layout/dialog_toc_regex.xml

@@ -36,7 +36,6 @@
             android:layout_marginRight="16dp"
             android:padding="12dp"
             android:text="@string/cancel"
-            android:textColor="@color/secondaryText"
             tools:ignore="RtlHardcoded" />
 
         <io.legato.kazusa.ui.widget.text.AccentTextView

+ 1 - 2
app/src/main/res/layout/dialog_toc_regex_edit.xml

@@ -3,8 +3,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:padding="16dp">
+    android:layout_height="wrap_content">
 
     <LinearLayout
         android:layout_width="match_parent"

+ 1 - 0
app/src/main/res/values-zh/strings.xml

@@ -1217,4 +1217,5 @@
     <string name="manga_color_filter">滤镜</string>
     <string name="hide_manga_title">隐藏漫画列表标题</string>
     <string name="refresh_explore">刷新发现</string>
+    <string name="change_icon_success">图标已修改</string>
 </resources>

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -1220,4 +1220,5 @@
     <string name="refresh_explore">刷新发现</string>
     <string name="ungroup">未分组</string>
     <string name="dynamic_colors">动态取色</string>
+    <string name="change_icon_success">图标已修改</string>
 </resources>

+ 7 - 0
app/src/main/res/values/themes.xml

@@ -30,6 +30,10 @@
         <item name="popupMenuBackground">@drawable/popup_background</item>
         <item name="alertDialogTheme">@style/AppTheme.AlertDialog</item>
     </style>
+
+    <style name="Theme.Base.Dycolors" parent="Theme.Material3.DynamicColors.DayNight.NoActionBar">
+
+    </style>
     
     <style name="Theme.Base.GR" parent="Base.AppTheme">
         <item name="colorPrimary">@color/md_theme_primary</item>
@@ -49,6 +53,7 @@
         <item name="colorErrorContainer">@color/md_theme_errorContainer</item>
         <item name="colorOnErrorContainer">@color/md_theme_onErrorContainer</item>
         <item name="android:colorBackground">@color/md_theme_background</item>
+        <item name="android:textColor">@color/md_theme_onSurface</item>
         <item name="colorOnBackground">@color/md_theme_onBackground</item>
         <item name="colorSurface">@color/md_theme_surface</item>
         <item name="colorOnSurface">@color/md_theme_onSurface</item>
@@ -98,6 +103,7 @@
         <item name="colorErrorContainer">@color/wh_theme_errorContainer</item>
         <item name="colorOnErrorContainer">@color/wh_theme_onErrorContainer</item>
         <item name="android:colorBackground">@color/wh_theme_background</item>
+        <item name="android:textColor">@color/wh_theme_onSurface</item>
         <item name="colorOnBackground">@color/wh_theme_onBackground</item>
         <item name="colorSurface">@color/wh_theme_surface</item>
         <item name="colorOnSurface">@color/wh_theme_onSurface</item>
@@ -147,6 +153,7 @@
         <item name="colorErrorContainer">@color/lemon_theme_errorContainer</item>
         <item name="colorOnErrorContainer">@color/lemon_theme_onErrorContainer</item>
         <item name="android:colorBackground">@color/lemon_theme_background</item>
+        <item name="android:textColor">@color/lemon_theme_onSurface</item>
         <item name="colorOnBackground">@color/lemon_theme_onBackground</item>
         <item name="colorSurface">@color/lemon_theme_surface</item>
         <item name="colorOnSurface">@color/lemon_theme_onSurface</item>