diff --git a/app-common/src/main/res/xml/pref_settings.xml b/app-common/src/main/res/xml/pref_settings.xml
index f719ef5..bbdb50a 100644
--- a/app-common/src/main/res/xml/pref_settings.xml
+++ b/app-common/src/main/res/xml/pref_settings.xml
@@ -77,7 +77,6 @@
diff --git a/app/src/main/java/im/angry/openeuicc/core/PrivilegedEuiccChannelFactory.kt b/app/src/main/java/im/angry/openeuicc/core/PrivilegedEuiccChannelFactory.kt
index 2044c02..6dccda9 100644
--- a/app/src/main/java/im/angry/openeuicc/core/PrivilegedEuiccChannelFactory.kt
+++ b/app/src/main/java/im/angry/openeuicc/core/PrivilegedEuiccChannelFactory.kt
@@ -8,7 +8,8 @@ import im.angry.openeuicc.util.*
import kotlinx.coroutines.flow.first
import java.lang.IllegalArgumentException
-class PrivilegedEuiccChannelFactory(context: Context) : DefaultEuiccChannelFactory(context) {
+class PrivilegedEuiccChannelFactory(context: Context) : DefaultEuiccChannelFactory(context),
+ PrivilegedEuiccContextMarker {
private val tm by lazy {
(context.applicationContext as OpenEuiccApplication).appContainer.telephonyManager
}
@@ -22,7 +23,7 @@ class PrivilegedEuiccChannelFactory(context: Context) : DefaultEuiccChannelFacto
super.tryOpenEuiccChannel(port)?.let { return it }
}
- if (port.card.isEuicc || (context.preferenceRepository as PrivilegedPreferenceRepository).removableTelephonyManagerFlow.first()) {
+ if (port.card.isEuicc || preferenceRepository.removableTelephonyManagerFlow.first()) {
Log.i(
DefaultEuiccChannelManager.TAG,
"Trying TelephonyManager for slot ${port.card.physicalSlotIndex} port ${port.portIndex}"
diff --git a/app/src/main/java/im/angry/openeuicc/ui/PrivilegedSettingsFragment.kt b/app/src/main/java/im/angry/openeuicc/ui/PrivilegedSettingsFragment.kt
index 7229688..c67d880 100644
--- a/app/src/main/java/im/angry/openeuicc/ui/PrivilegedSettingsFragment.kt
+++ b/app/src/main/java/im/angry/openeuicc/ui/PrivilegedSettingsFragment.kt
@@ -6,7 +6,7 @@ import androidx.preference.Preference
import im.angry.openeuicc.R
import im.angry.openeuicc.util.*
-class PrivilegedSettingsFragment : SettingsFragment() {
+class PrivilegedSettingsFragment : SettingsFragment(), PrivilegedEuiccContextMarker {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
super.onCreatePreferences(savedInstanceState, rootKey)
addPreferencesFromResource(R.xml.pref_privileged_settings)
@@ -21,7 +21,7 @@ class PrivilegedSettingsFragment : SettingsFragment() {
requirePreference("pref_advanced_language").isVisible = false
// Force use TelephonyManager API
- requirePreference("pref_developer_tmapi_removable")
- .bindBooleanFlow((preferenceRepository as PrivilegedPreferenceRepository).removableTelephonyManagerFlow)
+ requirePreference("pref_developer_removable_telephony_manager")
+ .bindBooleanFlow(preferenceRepository.removableTelephonyManagerFlow)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/im/angry/openeuicc/util/PrivilegedUtils.kt b/app/src/main/java/im/angry/openeuicc/util/PrivilegedUtils.kt
index e295f26..21c8002 100644
--- a/app/src/main/java/im/angry/openeuicc/util/PrivilegedUtils.kt
+++ b/app/src/main/java/im/angry/openeuicc/util/PrivilegedUtils.kt
@@ -5,10 +5,23 @@ import android.content.Context
import android.content.Intent
import android.content.ServiceConnection
import android.os.IBinder
+import androidx.fragment.app.Fragment
import java.util.concurrent.Executors
import kotlin.coroutines.resume
import kotlin.coroutines.suspendCoroutine
+interface PrivilegedEuiccContextMarker {
+ val privilegedEuiccMarkerContext: Context
+ get() = when (this) {
+ is Context -> this
+ is Fragment -> requireContext()
+ else -> throw RuntimeException("PrivilegedEuiccContextMarker shall only be used on Fragments or UI types that derive from Context")
+ }
+
+ val preferenceRepository: PrivilegedPreferenceRepository
+ get() = privilegedEuiccMarkerContext.preferenceRepository as PrivilegedPreferenceRepository
+}
+
suspend fun Context.bindServiceSuspended(intent: Intent, flags: Int): Pair Unit> =
suspendCoroutine { cont ->
var binder: IBinder?
diff --git a/app/src/main/res/xml/pref_privileged_settings.xml b/app/src/main/res/xml/pref_privileged_settings.xml
index 339233b..5279126 100644
--- a/app/src/main/res/xml/pref_privileged_settings.xml
+++ b/app/src/main/res/xml/pref_privileged_settings.xml
@@ -5,7 +5,7 @@
app:key="pref_developer_overlay">