Fix the settings crash
When the user select mobile network settings item with subid=-1 in the search list, then some of objects are not initialized. Bug: 325956182 Test: atest AutoSelectPreferenceControllerTest atest MobileNetworkPhoneNumberPreferenceControllerTest atest MobileNetworkSpnPreferenceControllerTest atest MobileNetworkImeiPreferenceControllerTest atest WifiCallingPreferenceControllerTest Change-Id: I17c24b6f542392f018c65b689862f9735fad4b9f
This commit is contained in:
@@ -84,6 +84,13 @@ open class MobileNetworkEidPreferenceController(context: Context, key: String) :
|
||||
}
|
||||
|
||||
override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
|
||||
if (!this::lazyViewModel.isInitialized) {
|
||||
Log.e(
|
||||
this.javaClass.simpleName,
|
||||
"lateinit property lazyViewModel has not been initialized"
|
||||
)
|
||||
return
|
||||
}
|
||||
preference.isVisible = false
|
||||
|
||||
val viewModel by lazyViewModel
|
||||
|
@@ -78,6 +78,13 @@ class MobileNetworkImeiPreferenceController(context: Context, key: String) :
|
||||
}
|
||||
|
||||
override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
|
||||
if (!this::lazyViewModel.isInitialized) {
|
||||
Log.e(
|
||||
this.javaClass.simpleName,
|
||||
"lateinit property lazyViewModel has not been initialized"
|
||||
)
|
||||
return
|
||||
}
|
||||
val viewModel by lazyViewModel
|
||||
val coroutineScope = viewLifecycleOwner.lifecycleScope
|
||||
|
||||
|
@@ -19,6 +19,7 @@ package com.android.settings.network.telephony
|
||||
import android.content.Context
|
||||
import android.telephony.SubscriptionInfo
|
||||
import android.telephony.SubscriptionManager
|
||||
import android.util.Log
|
||||
import androidx.annotation.VisibleForTesting
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
@@ -66,6 +67,13 @@ class MobileNetworkPhoneNumberPreferenceController(context: Context, key: String
|
||||
}
|
||||
|
||||
override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
|
||||
if (!this::lazyViewModel.isInitialized) {
|
||||
Log.e(
|
||||
this.javaClass.simpleName,
|
||||
"lateinit property lazyViewModel has not been initialized"
|
||||
)
|
||||
return
|
||||
}
|
||||
val viewModel by lazyViewModel
|
||||
val coroutineScope = viewLifecycleOwner.lifecycleScope
|
||||
|
||||
|
@@ -19,6 +19,7 @@ package com.android.settings.network.telephony
|
||||
import android.content.Context
|
||||
import android.telephony.SubscriptionInfo
|
||||
import android.telephony.SubscriptionManager
|
||||
import android.util.Log
|
||||
import androidx.annotation.VisibleForTesting
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
@@ -26,6 +27,7 @@ import androidx.lifecycle.LifecycleOwner
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceScreen
|
||||
import com.android.settings.flags.Flags
|
||||
import com.android.settings.network.SimOnboardingActivity
|
||||
import com.android.settings.network.SubscriptionInfoListViewModel
|
||||
import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
|
||||
|
||||
@@ -57,6 +59,14 @@ class MobileNetworkSpnPreferenceController(context: Context, key: String) :
|
||||
}
|
||||
|
||||
override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
|
||||
if (!this::lazyViewModel.isInitialized) {
|
||||
Log.e(
|
||||
this.javaClass.simpleName,
|
||||
"lateinit property lazyViewModel has not been initialized"
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
val viewModel by lazyViewModel
|
||||
|
||||
viewModel.subscriptionInfoListFlow
|
||||
|
@@ -22,6 +22,7 @@ import android.telecom.TelecomManager
|
||||
import android.telephony.SubscriptionManager
|
||||
import android.telephony.TelephonyManager
|
||||
import android.telephony.ims.ImsMmTelManager
|
||||
import android.util.Log
|
||||
import androidx.lifecycle.LifecycleOwner
|
||||
import androidx.preference.Preference
|
||||
import androidx.preference.PreferenceScreen
|
||||
@@ -76,6 +77,13 @@ open class WifiCallingPreferenceController @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
|
||||
if(mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID){
|
||||
Log.e(
|
||||
this.javaClass.simpleName,
|
||||
"mSubId is INVALID_SUBSCRIPTION_ID"
|
||||
)
|
||||
return
|
||||
}
|
||||
wifiCallingRepositoryFactory(mSubId).wifiCallingReadyFlow()
|
||||
.collectLatestWithLifecycle(viewLifecycleOwner) { isReady ->
|
||||
preference.isVisible = isReady
|
||||
|
@@ -23,6 +23,7 @@ import android.os.PersistableBundle
|
||||
import android.provider.Settings
|
||||
import android.telephony.CarrierConfigManager
|
||||
import android.telephony.ServiceState
|
||||
import android.telephony.SubscriptionManager
|
||||
import android.telephony.TelephonyManager
|
||||
import androidx.annotation.VisibleForTesting
|
||||
import androidx.compose.runtime.Composable
|
||||
@@ -80,7 +81,7 @@ class AutoSelectPreferenceController @JvmOverloads constructor(
|
||||
@VisibleForTesting
|
||||
var progressDialog: ProgressDialog? = null
|
||||
|
||||
private var subId by notNull<Int>()
|
||||
private var subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
||||
|
||||
/**
|
||||
* Initialization based on given subscription id.
|
||||
|
Reference in New Issue
Block a user