forked from PeterCxy/OpenEUICC
Compare commits
3 commits
29d72e8db0
...
402e09a376
Author | SHA1 | Date | |
---|---|---|---|
402e09a376 | |||
88eb1ce0e2 | |||
74cc08ce8e |
5 changed files with 20 additions and 7 deletions
|
@ -77,7 +77,6 @@
|
||||||
|
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
app:iconSpaceReserved="false"
|
app:iconSpaceReserved="false"
|
||||||
app:isPreferenceVisible="false"
|
|
||||||
app:key="pref_developer_euicc_memory_reset"
|
app:key="pref_developer_euicc_memory_reset"
|
||||||
app:summary="@string/pref_developer_euicc_memory_reset_desc"
|
app:summary="@string/pref_developer_euicc_memory_reset_desc"
|
||||||
app:title="@string/pref_developer_euicc_memory_reset" />
|
app:title="@string/pref_developer_euicc_memory_reset" />
|
||||||
|
|
|
@ -8,7 +8,8 @@ import im.angry.openeuicc.util.*
|
||||||
import kotlinx.coroutines.flow.first
|
import kotlinx.coroutines.flow.first
|
||||||
import java.lang.IllegalArgumentException
|
import java.lang.IllegalArgumentException
|
||||||
|
|
||||||
class PrivilegedEuiccChannelFactory(context: Context) : DefaultEuiccChannelFactory(context) {
|
class PrivilegedEuiccChannelFactory(context: Context) : DefaultEuiccChannelFactory(context),
|
||||||
|
PrivilegedEuiccContextMarker {
|
||||||
private val tm by lazy {
|
private val tm by lazy {
|
||||||
(context.applicationContext as OpenEuiccApplication).appContainer.telephonyManager
|
(context.applicationContext as OpenEuiccApplication).appContainer.telephonyManager
|
||||||
}
|
}
|
||||||
|
@ -22,7 +23,7 @@ class PrivilegedEuiccChannelFactory(context: Context) : DefaultEuiccChannelFacto
|
||||||
super.tryOpenEuiccChannel(port)?.let { return it }
|
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(
|
Log.i(
|
||||||
DefaultEuiccChannelManager.TAG,
|
DefaultEuiccChannelManager.TAG,
|
||||||
"Trying TelephonyManager for slot ${port.card.physicalSlotIndex} port ${port.portIndex}"
|
"Trying TelephonyManager for slot ${port.card.physicalSlotIndex} port ${port.portIndex}"
|
||||||
|
|
|
@ -6,7 +6,7 @@ import androidx.preference.Preference
|
||||||
import im.angry.openeuicc.R
|
import im.angry.openeuicc.R
|
||||||
import im.angry.openeuicc.util.*
|
import im.angry.openeuicc.util.*
|
||||||
|
|
||||||
class PrivilegedSettingsFragment : SettingsFragment() {
|
class PrivilegedSettingsFragment : SettingsFragment(), PrivilegedEuiccContextMarker {
|
||||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||||
super.onCreatePreferences(savedInstanceState, rootKey)
|
super.onCreatePreferences(savedInstanceState, rootKey)
|
||||||
addPreferencesFromResource(R.xml.pref_privileged_settings)
|
addPreferencesFromResource(R.xml.pref_privileged_settings)
|
||||||
|
@ -21,7 +21,7 @@ class PrivilegedSettingsFragment : SettingsFragment() {
|
||||||
requirePreference<Preference>("pref_advanced_language").isVisible = false
|
requirePreference<Preference>("pref_advanced_language").isVisible = false
|
||||||
|
|
||||||
// Force use TelephonyManager API
|
// Force use TelephonyManager API
|
||||||
requirePreference<CheckBoxPreference>("pref_developer_tmapi_removable")
|
requirePreference<CheckBoxPreference>("pref_developer_removable_telephony_manager")
|
||||||
.bindBooleanFlow((preferenceRepository as PrivilegedPreferenceRepository).removableTelephonyManagerFlow)
|
.bindBooleanFlow(preferenceRepository.removableTelephonyManagerFlow)
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -5,10 +5,23 @@ import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.ServiceConnection
|
import android.content.ServiceConnection
|
||||||
import android.os.IBinder
|
import android.os.IBinder
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
import java.util.concurrent.Executors
|
import java.util.concurrent.Executors
|
||||||
import kotlin.coroutines.resume
|
import kotlin.coroutines.resume
|
||||||
import kotlin.coroutines.suspendCoroutine
|
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<IBinder?, () -> Unit> =
|
suspend fun Context.bindServiceSuspended(intent: Intent, flags: Int): Pair<IBinder?, () -> Unit> =
|
||||||
suspendCoroutine { cont ->
|
suspendCoroutine { cont ->
|
||||||
var binder: IBinder?
|
var binder: IBinder?
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
app:key="pref_developer_overlay">
|
app:key="pref_developer_overlay">
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
app:iconSpaceReserved="false"
|
app:iconSpaceReserved="false"
|
||||||
app:key="pref_developer_tmapi_removable"
|
app:key="pref_developer_removable_telephony_manager"
|
||||||
app:summary="@string/pref_developer_telephony_manager_removable_desc"
|
app:summary="@string/pref_developer_telephony_manager_removable_desc"
|
||||||
app:title="@string/pref_developer_telephony_manager_removable" />
|
app:title="@string/pref_developer_telephony_manager_removable" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
Loading…
Add table
Reference in a new issue