From 3e183a9b2cca4d51697f8729071737dcf805ba54 Mon Sep 17 00:00:00 2001 From: septs Date: Wed, 5 Mar 2025 20:40:55 +0800 Subject: [PATCH] feat: force use tmapi --- .../java/im/angry/openeuicc/ui/SettingsFragment.kt | 2 +- .../java/im/angry/openeuicc/util/PreferenceUtils.kt | 2 ++ app-common/src/main/res/xml/pref_settings.xml | 4 ++-- .../openeuicc/core/PrivilegedEuiccChannelFactory.kt | 3 ++- .../angry/openeuicc/ui/PrivilegedSettingsFragment.kt | 10 ++++++++++ app/src/main/res/values/strings.xml | 4 ++++ app/src/main/res/xml/pref_privileged_settings.xml | 12 ++++++++++++ 7 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/xml/pref_privileged_settings.xml diff --git a/app-common/src/main/java/im/angry/openeuicc/ui/SettingsFragment.kt b/app-common/src/main/java/im/angry/openeuicc/ui/SettingsFragment.kt index fab680f..c54d6a1 100644 --- a/app-common/src/main/java/im/angry/openeuicc/ui/SettingsFragment.kt +++ b/app-common/src/main/java/im/angry/openeuicc/ui/SettingsFragment.kt @@ -122,7 +122,7 @@ open class SettingsFragment: PreferenceFragmentCompat() { return true } - private fun CheckBoxPreference.bindBooleanFlow(flow: PreferenceFlowWrapper) { + protected fun CheckBoxPreference.bindBooleanFlow(flow: PreferenceFlowWrapper) { lifecycleScope.launch { flow.collect { isChecked = it } } diff --git a/app-common/src/main/java/im/angry/openeuicc/util/PreferenceUtils.kt b/app-common/src/main/java/im/angry/openeuicc/util/PreferenceUtils.kt index f5e3ca2..cfa3d80 100644 --- a/app-common/src/main/java/im/angry/openeuicc/util/PreferenceUtils.kt +++ b/app-common/src/main/java/im/angry/openeuicc/util/PreferenceUtils.kt @@ -31,6 +31,7 @@ internal object PreferenceKeys { // ---- Developer Options ---- val DEVELOPER_OPTIONS_ENABLED = booleanPreferencesKey("developer_options_enabled") + val REMOVABLE_TMAPI = booleanPreferencesKey("removable_tmapi") val UNFILTERED_PROFILE_LIST = booleanPreferencesKey("unfiltered_profile_list") val IGNORE_TLS_CERTIFICATE = booleanPreferencesKey("ignore_tls_certificate") } @@ -48,6 +49,7 @@ class PreferenceRepository(private val context: Context) { // ---- Developer Options ---- val developerOptionsEnabledFlow = bindFlow(PreferenceKeys.DEVELOPER_OPTIONS_ENABLED, false) + val removableTMAPIFlow = bindFlow(PreferenceKeys.REMOVABLE_TMAPI, false) val unfilteredProfileListFlow = bindFlow(PreferenceKeys.UNFILTERED_PROFILE_LIST, false) val ignoreTLSCertificateFlow = bindFlow(PreferenceKeys.IGNORE_TLS_CERTIFICATE, false) diff --git a/app-common/src/main/res/xml/pref_settings.xml b/app-common/src/main/res/xml/pref_settings.xml index bb5bd50..944bd27 100644 --- a/app-common/src/main/res/xml/pref_settings.xml +++ b/app-common/src/main/res/xml/pref_settings.xml @@ -52,7 +52,7 @@ - @@ -69,7 +69,7 @@ app:summary="@string/pref_developer_ignore_tls_certificate_desc" app:title="@string/pref_developer_ignore_tls_certificate" /> - + @@ -13,5 +19,9 @@ class PrivilegedSettingsFragment : SettingsFragment() { // 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("pref_advanced_language").isVisible = false + + // Force use TelephonyManager API + requirePreference("pref_developer_tmapi_removable") + .bindBooleanFlow(preferenceRepository.removableTMAPIFlow) } } \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 47c88bd..36e584a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -22,4 +22,8 @@ Your device supports eSIMs. To connect to mobile network, download your eSIM issued by a carrier, or insert a physical SIM. Skip Download eSIM + + + Using TMAPI for removable + TMAPI (TelephonyManager API) will not be enabled in non-euicc mode and some removable eSIM cards may not work.\nEnable this option to skip detection and force TMAPI to be enabled. \ No newline at end of file diff --git a/app/src/main/res/xml/pref_privileged_settings.xml b/app/src/main/res/xml/pref_privileged_settings.xml new file mode 100644 index 0000000..4411d42 --- /dev/null +++ b/app/src/main/res/xml/pref_privileged_settings.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file -- 2.45.3