From ac2d2415aba1fb364384c2b437c2376681002907 Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Wed, 11 May 2022 20:04:57 -0400 Subject: [PATCH 1/2] Expose removable property in EuiccService --- .../java/im/angry/openeuicc/service/OpenEuiccService.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/im/angry/openeuicc/service/OpenEuiccService.kt b/app/src/main/java/im/angry/openeuicc/service/OpenEuiccService.kt index 6ef9863..037b6db 100644 --- a/app/src/main/java/im/angry/openeuicc/service/OpenEuiccService.kt +++ b/app/src/main/java/im/angry/openeuicc/service/OpenEuiccService.kt @@ -52,7 +52,8 @@ class OpenEuiccService : EuiccService() { } override fun onGetEuiccProfileInfoList(slotId: Int): GetEuiccProfileInfoListResult? { - val profiles = (findChannel(slotId) ?: return null).lpa.profiles.filter { + val channel = findChannel(slotId) ?: return null + val profiles = channel.lpa.profiles.filter { it.profileClass != LocalProfileInfo.Clazz.Testing }.map { EuiccProfileInfo.Builder(it.iccidLittleEndian).apply { @@ -75,8 +76,7 @@ class OpenEuiccService : EuiccService() { }.build() } - // TODO: Does isRemovable matter? Will Android even query us for removable SIMs? - return GetEuiccProfileInfoListResult(RESULT_OK, profiles.toTypedArray(), false) + return GetEuiccProfileInfoListResult(RESULT_OK, profiles.toTypedArray(), channel.removable) } override fun onGetEuiccInfo(slotId: Int): EuiccInfo { From cc7f9a2957f92ffaf89543b5d8fefc9e764040e9 Mon Sep 17 00:00:00 2001 From: Peter Cai Date: Wed, 11 May 2022 20:30:57 -0400 Subject: [PATCH 2/2] Filter all profiles that are not operational --- .../main/java/im/angry/openeuicc/service/OpenEuiccService.kt | 2 +- .../main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/im/angry/openeuicc/service/OpenEuiccService.kt b/app/src/main/java/im/angry/openeuicc/service/OpenEuiccService.kt index 037b6db..1fc8d6c 100644 --- a/app/src/main/java/im/angry/openeuicc/service/OpenEuiccService.kt +++ b/app/src/main/java/im/angry/openeuicc/service/OpenEuiccService.kt @@ -54,7 +54,7 @@ class OpenEuiccService : EuiccService() { override fun onGetEuiccProfileInfoList(slotId: Int): GetEuiccProfileInfoListResult? { val channel = findChannel(slotId) ?: return null val profiles = channel.lpa.profiles.filter { - it.profileClass != LocalProfileInfo.Clazz.Testing + it.profileClass == LocalProfileInfo.Clazz.Operational }.map { EuiccProfileInfo.Builder(it.iccidLittleEndian).apply { setProfileName(it.name) diff --git a/app/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt b/app/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt index c6f2dc3..cda8d38 100644 --- a/app/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt +++ b/app/src/main/java/im/angry/openeuicc/ui/EuiccManagementFragment.kt @@ -81,7 +81,7 @@ class EuiccManagementFragment : Fragment(), EuiccFragmentMarker, EuiccProfilesCh } withContext(Dispatchers.Main) { - adapter.profiles = profiles.filter { it.profileClass != LocalProfileInfo.Clazz.Testing } + adapter.profiles = profiles.filter { it.profileClass == LocalProfileInfo.Clazz.Operational } adapter.notifyDataSetChanged() binding.swipeRefresh.isRefreshing = false }