Some work on sim card detection

This commit is contained in:
Juha Heinanen
2026-06-30 11:39:19 +03:00
parent b8831fcc00
commit 026e845d9b

View File

@ -2270,17 +2270,10 @@ class BaresipService: Service() {
account.regint = 0
account.telProvider = ""
val mobileUa = UserAgent(0L, account)
val isAirplaneModeOn = Settings.Global.getInt(contentResolver, Settings.Global.AIRPLANE_MODE_ON, 0) != 0
val sm = getSystemService(TELEPHONY_SUBSCRIPTION_SERVICE) as android.telephony.SubscriptionManager
val hasActiveSubscription = if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE) ==
PackageManager.PERMISSION_GRANTED)
!sm.activeSubscriptionInfoList.isNullOrEmpty()
else
false
mobileUa.status = if (isAirplaneModeOn)
val isAirplaneModeOn = Utils.isAirplaneModeOn(this)
val hasSimCard = hasSimCard()
mobileUa.status = if (isAirplaneModeOn || !hasSimCard)
R.drawable.circle_white
else if (hasActiveSubscription)
circleGreen.getValue(colorblind)
else
circleRed.getValue(colorblind)
updateMobileStatus(mobileUa.status)
@ -2305,7 +2298,8 @@ class BaresipService: Service() {
private fun updateMobileStatus(newStatus: Int? = null) {
uas.value.find { it.account.isMobile }?.let { ua ->
val isAirplaneModeOn = Utils.isAirplaneModeOn(this)
val status = newStatus ?: if (isAirplaneModeOn) {
val hasSimCard = hasSimCard()
val status = newStatus ?: if (isAirplaneModeOn || !hasSimCard) {
if (ua.status == circleGreen.getValue(colorblind))
ua.status
else
@ -2330,9 +2324,10 @@ class BaresipService: Service() {
if (state == previousMobileServiceState) return
previousMobileServiceState = state
val isAirplaneModeOn = Utils.isAirplaneModeOn(this)
val hasSimCard = hasSimCard()
val status = if (state == ServiceState.STATE_IN_SERVICE)
circleGreen.getValue(colorblind)
else if (isAirplaneModeOn)
else if (isAirplaneModeOn || !hasSimCard)
R.drawable.circle_white
else
circleRed.getValue(colorblind)
@ -3022,6 +3017,13 @@ class BaresipService: Service() {
external fun baresipStop(force: Boolean)
private fun hasSimCard(): Boolean {
if (checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED)
return false
val sm = getSystemService(TELEPHONY_SUBSCRIPTION_SERVICE) as android.telephony.SubscriptionManager
return sm.activeSubscriptionInfoList?.isNotEmpty() ?: false
}
@SuppressLint("MutableCollectionMutableState")
companion object {