network: Link to custom eSIM settings

Change-Id: I48cab34d1bb2d7784a4471f17620bc9e8f243bf4
Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
This commit is contained in:
Bruno Martins
2025-10-27 01:50:16 +00:00
committed by Joey
parent 1668677ddf
commit 1388253756
3 changed files with 47 additions and 0 deletions

View File

@@ -191,4 +191,7 @@
<string name="battery_maximum_capacity">Maximum capacity</string>
<string name="battery_maximum_capacity_summary">%1$d mAh (%2$d%%)</string>
<string name="battery_maximum_capacity_not_available" translatable="false">@string/battery_cycle_count_not_available</string>
<!-- eSIM settings -->
<string name="esim_settings_title">eSIM settings</string>
</resources>

View File

@@ -156,6 +156,8 @@ public final class Utils extends com.android.settingslib.Utils {
public static final String PHONE_PACKAGE_NAME = "com.android.phone";
public static final String ESIM_SETTINGS_PACKAGE_NAME = "org.lineageos.settings.esimswitcher";
public static final String OS_PKG = "os";
/**

View File

@@ -23,6 +23,7 @@ import android.telephony.SubscriptionInfo
import android.telephony.euicc.EuiccManager
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Add
import androidx.compose.material.icons.outlined.SettingsApplications
import androidx.compose.material.icons.outlined.SimCard
import androidx.compose.material.icons.outlined.SimCardDownload
import androidx.compose.runtime.Composable
@@ -62,6 +63,7 @@ fun SimsSection(subscriptionInfoList: List<SubscriptionInfo>) {
SimPreference(subInfo)
}
EsimSettings()
AddSim()
}
}
@@ -156,6 +158,46 @@ fun getAddSimIntent() = Intent(EuiccManager.ACTION_PROVISION_EMBEDDED_SUBSCRIPTI
putExtra(EuiccManager.EXTRA_FORCE_PROVISION, true)
}
@Composable
private fun EsimSettings() {
val context = LocalContext.current
val hasEsimSettingsPackage = remember {
try {
context.packageManager.getPackageInfo(Utils.ESIM_SETTINGS_PACKAGE_NAME, 0)
true
} catch (_: Exception) {
false
}
}
val res = context.resources
val euiccSlotsArrayId = remember {
res.getIdentifier("non_removable_euicc_slots", "array", "android")
}
val hasNonRemovableEuicc = remember {
euiccSlotsArrayId > 0 && (res.getIntArray(euiccSlotsArrayId)?.isNotEmpty() == true)
}
if (hasEsimSettingsPackage && hasNonRemovableEuicc) {
RestrictedPreference(
model =
object : PreferenceModel {
override val title = stringResource(id = R.string.esim_settings_title)
override val icon = @Composable { SettingsIcon(Icons.Outlined.SettingsApplications) }
override val onClick = { startEsimSettingsFlow(context) }
},
restrictions = Restrictions(keys = listOf(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)),
)
}
}
fun startEsimSettingsFlow(context: Context) = context.startActivity(getEsimSettingsIntent())
fun getEsimSettingsIntent() = Intent("org.lineageos.settings.device.ESIM_SETTINGS").apply {
setPackage(Utils.ESIM_SETTINGS_PACKAGE_NAME)
}
fun startSatelliteWarningDialogFlow(context: Context) = context.startActivity(getSatelliteWarningDialogIntent(context))
fun getSatelliteWarningDialogIntent(context: Context) = Intent(context,