Browse Source

ui: Disable language picker for privileged OpenEUICC (for now)

...because AOSP is stupid and doesn't allow apps signed with the
platform key to use language settings.
Peter Cai 1 year ago
parent
commit
bcd1295a18

+ 5 - 0
app/src/main/java/im/angry/openeuicc/di/PrivilegedUiComponentFactory.kt

@@ -1,9 +1,14 @@
 package im.angry.openeuicc.di
 package im.angry.openeuicc.di
 
 
+import androidx.fragment.app.Fragment
 import im.angry.openeuicc.ui.EuiccManagementFragment
 import im.angry.openeuicc.ui.EuiccManagementFragment
 import im.angry.openeuicc.ui.PrivilegedEuiccManagementFragment
 import im.angry.openeuicc.ui.PrivilegedEuiccManagementFragment
+import im.angry.openeuicc.ui.PrivilegedSettingsFragment
 
 
 class PrivilegedUiComponentFactory : DefaultUiComponentFactory() {
 class PrivilegedUiComponentFactory : DefaultUiComponentFactory() {
     override fun createEuiccManagementFragment(slotId: Int, portId: Int): EuiccManagementFragment =
     override fun createEuiccManagementFragment(slotId: Int, portId: Int): EuiccManagementFragment =
         PrivilegedEuiccManagementFragment.newInstance(slotId, portId)
         PrivilegedEuiccManagementFragment.newInstance(slotId, portId)
+
+    override fun createSettingsFragment(): Fragment =
+        PrivilegedSettingsFragment()
 }
 }

+ 17 - 0
app/src/main/java/im/angry/openeuicc/ui/PrivilegedSettingsFragment.kt

@@ -0,0 +1,17 @@
+package im.angry.openeuicc.ui
+
+import android.os.Bundle
+import androidx.preference.Preference
+
+class PrivilegedSettingsFragment : SettingsFragment() {
+    override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
+        super.onCreatePreferences(savedInstanceState, rootKey)
+        // It's stupid to _disable_ things for privileged, but for now, the per-app locale picker
+        // is not usable for apps signed with the platform key.
+        // ref: <https://android.googlesource.com/platform/packages/apps/Settings/+/refs/tags/android-15.0.0_r6/src/com/android/settings/applications/AppLocaleUtil.java#60>
+        // This is disabled here, not moved to unprivileged, because I have hope that this will
+        // eventually work for platform-signed apps. Or, at some point we might introduce our own
+        // locale picker, which hopefully works whether privileged or not.
+        requirePreference<Preference>("pref_advanced_language").isVisible = false
+    }
+}