network: Link to custom eSIM settings
Change-Id: I48cab34d1bb2d7784a4471f17620bc9e8f243bf4 Signed-off-by: Pranav Vashi <neobuddy89@gmail.com>
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -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";
|
||||
|
||||
/**
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user