diff --git a/app/src/main/java/dev/bluehouse/enablevolte/IMSStatusQSTileService.kt b/app/src/main/java/dev/bluehouse/enablevolte/IMSStatusQSTileService.kt index 9334cb02..5572fe90 100644 --- a/app/src/main/java/dev/bluehouse/enablevolte/IMSStatusQSTileService.kt +++ b/app/src/main/java/dev/bluehouse/enablevolte/IMSStatusQSTileService.kt @@ -1,5 +1,6 @@ package dev.bluehouse.enablevolte +import android.os.Build import android.service.quicksettings.Tile import android.service.quicksettings.TileService import org.lsposed.hiddenapibypass.HiddenApiBypass @@ -12,6 +13,9 @@ class SIM2IMSStatusQSTileService : IMSStatusQSTileService(1) open class IMSStatusQSTileService( private val simSlotIndex: Int, ) : TileService() { + @Suppress("ktlint:standard:property-naming") + private val TAG = "SIM${simSlotIndex}IMSStatusQSTileService" + init { HiddenApiBypass.addHiddenApiExemptions("L") HiddenApiBypass.addHiddenApiExemptions("I") @@ -31,10 +35,11 @@ open class IMSStatusQSTileService( } return null } + private val imsActivated: Boolean? get() { /* - * true: VoLTE enabled - * false: VoLTE disabled + * true: IMS registered + * false: IMS unregistered * null: cannot determine status (Shizuku not running or permission not granted, SIM slot not active, ...) */ val moder = this.moder ?: return null @@ -52,33 +57,35 @@ open class IMSStatusQSTileService( } } - private fun refreshStatus() { - val imsActivated = this.imsActivated + private fun refreshStatus(imsActivated: Boolean?) { qsTile.state = when (imsActivated) { true -> Tile.STATE_ACTIVE false -> Tile.STATE_INACTIVE null -> Tile.STATE_UNAVAILABLE } - qsTile.subtitle = - getString( - when (imsActivated) { - true -> R.string.registered - false -> R.string.unregistered - null -> R.string.unknown - }, - ) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + qsTile.subtitle = + getString( + when (imsActivated) { + true -> R.string.registered + false -> R.string.unregistered + null -> R.string.unknown + }, + ) + } qsTile.updateTile() } override fun onStartListening() { super.onStartListening() - this.refreshStatus() + this.refreshStatus(this.imsActivated) } + // Called when the user taps on your tile in an active or inactive state. override fun onClick() { super.onClick() moder?.restartIMSRegistration() - this.refreshStatus() + this.refreshStatus(this.imsActivated) } } diff --git a/app/src/main/java/dev/bluehouse/enablevolte/VoLTEConfigToggleQSTileService.kt b/app/src/main/java/dev/bluehouse/enablevolte/VoLTEConfigToggleQSTileService.kt index 14b6a550..2239cb98 100644 --- a/app/src/main/java/dev/bluehouse/enablevolte/VoLTEConfigToggleQSTileService.kt +++ b/app/src/main/java/dev/bluehouse/enablevolte/VoLTEConfigToggleQSTileService.kt @@ -27,7 +27,6 @@ open class VoLTEConfigToggleQSTileService( try { if (checkShizukuPermission(0) == ShizukuStatus.GRANTED && carrierModer.deviceSupportsIMS) { - carrierModer.subscriptions val sub = carrierModer.getActiveSubscriptionInfoForSimSlotIndex(this.simSlotIndex) ?: return null @@ -59,10 +58,9 @@ open class VoLTEConfigToggleQSTileService( } } - override fun onStartListening() { - super.onStartListening() + private fun refreshStatus(volteEnabled: Boolean?) { qsTile.state = - when (this.volteEnabled) { + when (volteEnabled) { true -> Tile.STATE_ACTIVE false -> Tile.STATE_INACTIVE null -> Tile.STATE_UNAVAILABLE @@ -70,7 +68,7 @@ open class VoLTEConfigToggleQSTileService( if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { qsTile.subtitle = getString( - when (this.volteEnabled) { + when (volteEnabled) { true -> R.string.enabled false -> R.string.disabled null -> R.string.unknown @@ -80,16 +78,17 @@ open class VoLTEConfigToggleQSTileService( qsTile.updateTile() } + override fun onStartListening() { + super.onStartListening() + this.refreshStatus(this.volteEnabled) + } + private fun toggleVoLTEStatus() { val moder = this.moder ?: return val volteEnabled = this.volteEnabled ?: return moder.updateCarrierConfig(CarrierConfigManager.KEY_CARRIER_VOLTE_AVAILABLE_BOOL, !volteEnabled) moder.restartIMSRegistration() - qsTile.state = if (volteEnabled) Tile.STATE_INACTIVE else Tile.STATE_ACTIVE - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { - qsTile.subtitle = getString(if (volteEnabled) R.string.disabled else R.string.enabled) - } - qsTile.updateTile() + this.refreshStatus(!volteEnabled) } // Called when the user taps on your tile in an active or inactive state.