瀏覽代碼

Disallow PackageInstaller extension installer option on MIUI

arkon 3 年之前
父節點
當前提交
8c1662cfdb

+ 4 - 0
app/src/main/java/eu/kanade/tachiyomi/Migrations.kt

@@ -19,6 +19,7 @@ import eu.kanade.tachiyomi.ui.library.setting.SortModeSetting
 import eu.kanade.tachiyomi.ui.reader.setting.OrientationType
 import eu.kanade.tachiyomi.util.preference.minusAssign
 import eu.kanade.tachiyomi.util.preference.plusAssign
+import eu.kanade.tachiyomi.util.system.DeviceUtil
 import eu.kanade.tachiyomi.util.system.toast
 import eu.kanade.tachiyomi.widget.ExtendedNavigationView
 import uy.kohesive.injekt.Injekt
@@ -251,6 +252,9 @@ object Migrations {
                 if (oldSecureScreen) {
                     preferences.secureScreen().set(PreferenceValues.SecureScreenMode.ALWAYS)
                 }
+                if (DeviceUtil.isMiui && preferences.extensionInstaller().get() == PreferenceValues.ExtensionInstaller.PACKAGEINSTALLER) {
+                    preferences.extensionInstaller().set(PreferenceValues.ExtensionInstaller.LEGACY)
+                }
             }
 
             return true

+ 13 - 13
app/src/main/java/eu/kanade/tachiyomi/data/preference/PreferenceValues.kt

@@ -55,22 +55,22 @@ object PreferenceValues {
         LOWEST(47),
     }
 
-    enum class TabletUiMode {
-        AUTOMATIC,
-        ALWAYS,
-        LANDSCAPE,
-        NEVER,
+    enum class TabletUiMode(val titleResId: Int) {
+        AUTOMATIC(R.string.automatic_background),
+        ALWAYS(R.string.lock_always),
+        LANDSCAPE(R.string.landscape),
+        NEVER(R.string.lock_never),
     }
 
-    enum class ExtensionInstaller {
-        LEGACY,
-        PACKAGEINSTALLER,
-        SHIZUKU,
+    enum class ExtensionInstaller(val titleResId: Int) {
+        LEGACY(R.string.ext_installer_legacy),
+        PACKAGEINSTALLER(R.string.ext_installer_packageinstaller),
+        SHIZUKU(R.string.ext_installer_shizuku),
     }
 
-    enum class SecureScreenMode {
-        ALWAYS,
-        INCOGNITO,
-        NEVER,
+    enum class SecureScreenMode(val titleResId: Int) {
+        ALWAYS(R.string.lock_always),
+        INCOGNITO(R.string.pref_incognito_mode),
+        NEVER(R.string.lock_never),
     }
 }

+ 13 - 7
app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsAdvancedController.kt

@@ -36,6 +36,7 @@ import eu.kanade.tachiyomi.util.preference.preferenceCategory
 import eu.kanade.tachiyomi.util.preference.summaryRes
 import eu.kanade.tachiyomi.util.preference.switchPreference
 import eu.kanade.tachiyomi.util.preference.titleRes
+import eu.kanade.tachiyomi.util.system.DeviceUtil
 import eu.kanade.tachiyomi.util.system.isPackageInstalled
 import eu.kanade.tachiyomi.util.system.powerManager
 import eu.kanade.tachiyomi.util.system.toast
@@ -209,12 +210,17 @@ class SettingsAdvancedController : SettingsController() {
                 bindTo(preferences.extensionInstaller())
                 titleRes = R.string.ext_installer_pref
                 summary = "%s"
-                entriesRes = arrayOf(
-                    R.string.ext_installer_legacy,
-                    R.string.ext_installer_packageinstaller,
-                    R.string.ext_installer_shizuku,
-                )
-                entryValues = PreferenceValues.ExtensionInstaller.values().map { it.name }.toTypedArray()
+
+                // PackageInstaller doesn't work on MIUI properly for non-allowlisted apps
+                val values = if (DeviceUtil.isMiui) {
+                    PreferenceValues.ExtensionInstaller.values()
+                        .filter { it != PreferenceValues.ExtensionInstaller.PACKAGEINSTALLER }
+                } else {
+                    PreferenceValues.ExtensionInstaller.values().toList()
+                }
+
+                entriesRes = values.map { it.titleResId }.toTypedArray()
+                entryValues = values.map { it.name }.toTypedArray()
 
                 onChange {
                     if (it == PreferenceValues.ExtensionInstaller.SHIZUKU.name &&
@@ -243,7 +249,7 @@ class SettingsAdvancedController : SettingsController() {
                 bindTo(preferences.tabletUiMode())
                 titleRes = R.string.pref_tablet_ui_mode
                 summary = "%s"
-                entriesRes = arrayOf(R.string.automatic_background, R.string.lock_always, R.string.landscape, R.string.lock_never)
+                entriesRes = PreferenceValues.TabletUiMode.values().map { it.titleResId }.toTypedArray()
                 entryValues = PreferenceValues.TabletUiMode.values().map { it.name }.toTypedArray()
 
                 onChange {

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsLibraryController.kt

@@ -73,7 +73,7 @@ class SettingsLibraryController : SettingsController() {
                     }
                 }
 
-                preferences.portraitColumns().asFlow().combine(preferences.landscapeColumns().asFlow()) { portraitCols, landscapeCols -> Pair(portraitCols, landscapeCols) }
+                combine(preferences.portraitColumns().asFlow(), preferences.landscapeColumns().asFlow()) { portraitCols, landscapeCols -> Pair(portraitCols, landscapeCols) }
                     .onEach { (portraitCols, landscapeCols) ->
                         val portrait = getColumnValue(portraitCols)
                         val landscape = getColumnValue(landscapeCols)

+ 1 - 5
app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSecurityController.kt

@@ -93,11 +93,7 @@ class SettingsSecurityController : SettingsController() {
             bindTo(preferences.secureScreen())
             titleRes = R.string.secure_screen
             summary = "%s"
-            entriesRes = arrayOf(
-                R.string.lock_always,
-                R.string.pref_incognito_mode,
-                R.string.lock_never,
-            )
+            entriesRes = PreferenceValues.SecureScreenMode.values().map { it.titleResId }.toTypedArray()
             entryValues = PreferenceValues.SecureScreenMode.values().map { it.name }.toTypedArray()
         }