Skip to content

Commit 88eb1ce

Browse files
septsPeterCxy
authored andcommitted
feat: update TelephonyManager preference key and implement context marker interface (#167)
Reviewed-on: https://gitea.angry.im/PeterCxy/OpenEUICC/pulls/167 Co-authored-by: septs <github@septs.pw> Co-committed-by: septs <github@septs.pw>
1 parent 74cc08c commit 88eb1ce

File tree

4 files changed

+20
-6
lines changed

4 files changed

+20
-6
lines changed

app/src/main/java/im/angry/openeuicc/core/PrivilegedEuiccChannelFactory.kt

+3-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ import im.angry.openeuicc.util.*
88
import kotlinx.coroutines.flow.first
99
import java.lang.IllegalArgumentException
1010

11-
class PrivilegedEuiccChannelFactory(context: Context) : DefaultEuiccChannelFactory(context) {
11+
class PrivilegedEuiccChannelFactory(context: Context) : DefaultEuiccChannelFactory(context),
12+
PrivilegedEuiccContextMarker {
1213
private val tm by lazy {
1314
(context.applicationContext as OpenEuiccApplication).appContainer.telephonyManager
1415
}
@@ -22,7 +23,7 @@ class PrivilegedEuiccChannelFactory(context: Context) : DefaultEuiccChannelFacto
2223
super.tryOpenEuiccChannel(port)?.let { return it }
2324
}
2425

25-
if (port.card.isEuicc || (context.preferenceRepository as PrivilegedPreferenceRepository).removableTelephonyManagerFlow.first()) {
26+
if (port.card.isEuicc || preferenceRepository.removableTelephonyManagerFlow.first()) {
2627
Log.i(
2728
DefaultEuiccChannelManager.TAG,
2829
"Trying TelephonyManager for slot ${port.card.physicalSlotIndex} port ${port.portIndex}"

app/src/main/java/im/angry/openeuicc/ui/PrivilegedSettingsFragment.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import androidx.preference.Preference
66
import im.angry.openeuicc.R
77
import im.angry.openeuicc.util.*
88

9-
class PrivilegedSettingsFragment : SettingsFragment() {
9+
class PrivilegedSettingsFragment : SettingsFragment(), PrivilegedEuiccContextMarker {
1010
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
1111
super.onCreatePreferences(savedInstanceState, rootKey)
1212
addPreferencesFromResource(R.xml.pref_privileged_settings)
@@ -21,7 +21,7 @@ class PrivilegedSettingsFragment : SettingsFragment() {
2121
requirePreference<Preference>("pref_advanced_language").isVisible = false
2222

2323
// Force use TelephonyManager API
24-
requirePreference<CheckBoxPreference>("pref_developer_tmapi_removable")
25-
.bindBooleanFlow((preferenceRepository as PrivilegedPreferenceRepository).removableTelephonyManagerFlow)
24+
requirePreference<CheckBoxPreference>("pref_developer_removable_telephony_manager")
25+
.bindBooleanFlow(preferenceRepository.removableTelephonyManagerFlow)
2626
}
2727
}

app/src/main/java/im/angry/openeuicc/util/PrivilegedUtils.kt

+13
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,23 @@ import android.content.Context
55
import android.content.Intent
66
import android.content.ServiceConnection
77
import android.os.IBinder
8+
import androidx.fragment.app.Fragment
89
import java.util.concurrent.Executors
910
import kotlin.coroutines.resume
1011
import kotlin.coroutines.suspendCoroutine
1112

13+
interface PrivilegedEuiccContextMarker {
14+
val privilegedEuiccMarkerContext: Context
15+
get() = when (this) {
16+
is Context -> this
17+
is Fragment -> requireContext()
18+
else -> throw RuntimeException("PrivilegedEuiccContextMarker shall only be used on Fragments or UI types that derive from Context")
19+
}
20+
21+
val preferenceRepository: PrivilegedPreferenceRepository
22+
get() = privilegedEuiccMarkerContext.preferenceRepository as PrivilegedPreferenceRepository
23+
}
24+
1225
suspend fun Context.bindServiceSuspended(intent: Intent, flags: Int): Pair<IBinder?, () -> Unit> =
1326
suspendCoroutine { cont ->
1427
var binder: IBinder?

app/src/main/res/xml/pref_privileged_settings.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
app:key="pref_developer_overlay">
66
<CheckBoxPreference
77
app:iconSpaceReserved="false"
8-
app:key="pref_developer_tmapi_removable"
8+
app:key="pref_developer_removable_telephony_manager"
99
app:summary="@string/pref_developer_telephony_manager_removable_desc"
1010
app:title="@string/pref_developer_telephony_manager_removable" />
1111
</PreferenceCategory>

0 commit comments

Comments
 (0)