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
(cherry picked from commit e0b5de28ae
)
This commit is contained in:
committed by
SongFerng Wang
parent
e499724357
commit
428aaacefa
@@ -84,6 +84,13 @@ open class MobileNetworkEidPreferenceController(context: Context, key: String) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
|
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
|
preference.isVisible = false
|
||||||
|
|
||||||
val viewModel by lazyViewModel
|
val viewModel by lazyViewModel
|
||||||
|
@@ -78,6 +78,13 @@ class MobileNetworkImeiPreferenceController(context: Context, key: String) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
|
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 viewModel by lazyViewModel
|
||||||
val coroutineScope = viewLifecycleOwner.lifecycleScope
|
val coroutineScope = viewLifecycleOwner.lifecycleScope
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package com.android.settings.network.telephony
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.telephony.SubscriptionInfo
|
import android.telephony.SubscriptionInfo
|
||||||
import android.telephony.SubscriptionManager
|
import android.telephony.SubscriptionManager
|
||||||
|
import android.util.Log
|
||||||
import androidx.annotation.VisibleForTesting
|
import androidx.annotation.VisibleForTesting
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
@@ -66,6 +67,13 @@ class MobileNetworkPhoneNumberPreferenceController(context: Context, key: String
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
|
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 viewModel by lazyViewModel
|
||||||
val coroutineScope = viewLifecycleOwner.lifecycleScope
|
val coroutineScope = viewLifecycleOwner.lifecycleScope
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ package com.android.settings.network.telephony
|
|||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.telephony.SubscriptionInfo
|
import android.telephony.SubscriptionInfo
|
||||||
import android.telephony.SubscriptionManager
|
import android.telephony.SubscriptionManager
|
||||||
|
import android.util.Log
|
||||||
import androidx.annotation.VisibleForTesting
|
import androidx.annotation.VisibleForTesting
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.viewModels
|
import androidx.fragment.app.viewModels
|
||||||
@@ -26,6 +27,7 @@ import androidx.lifecycle.LifecycleOwner
|
|||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
import androidx.preference.PreferenceScreen
|
import androidx.preference.PreferenceScreen
|
||||||
import com.android.settings.flags.Flags
|
import com.android.settings.flags.Flags
|
||||||
|
import com.android.settings.network.SimOnboardingActivity
|
||||||
import com.android.settings.network.SubscriptionInfoListViewModel
|
import com.android.settings.network.SubscriptionInfoListViewModel
|
||||||
import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
|
import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
|
||||||
|
|
||||||
@@ -57,6 +59,14 @@ class MobileNetworkSpnPreferenceController(context: Context, key: String) :
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
|
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 viewModel by lazyViewModel
|
||||||
|
|
||||||
viewModel.subscriptionInfoListFlow
|
viewModel.subscriptionInfoListFlow
|
||||||
|
@@ -22,6 +22,7 @@ import android.telecom.TelecomManager
|
|||||||
import android.telephony.SubscriptionManager
|
import android.telephony.SubscriptionManager
|
||||||
import android.telephony.TelephonyManager
|
import android.telephony.TelephonyManager
|
||||||
import android.telephony.ims.ImsMmTelManager
|
import android.telephony.ims.ImsMmTelManager
|
||||||
|
import android.util.Log
|
||||||
import androidx.lifecycle.LifecycleOwner
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
import androidx.preference.PreferenceScreen
|
import androidx.preference.PreferenceScreen
|
||||||
@@ -76,6 +77,13 @@ open class WifiCallingPreferenceController @JvmOverloads constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
|
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()
|
wifiCallingRepositoryFactory(mSubId).wifiCallingReadyFlow()
|
||||||
.collectLatestWithLifecycle(viewLifecycleOwner) { isReady ->
|
.collectLatestWithLifecycle(viewLifecycleOwner) { isReady ->
|
||||||
preference.isVisible = isReady
|
preference.isVisible = isReady
|
||||||
|
@@ -23,6 +23,7 @@ import android.os.PersistableBundle
|
|||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import android.telephony.CarrierConfigManager
|
import android.telephony.CarrierConfigManager
|
||||||
import android.telephony.ServiceState
|
import android.telephony.ServiceState
|
||||||
|
import android.telephony.SubscriptionManager
|
||||||
import android.telephony.TelephonyManager
|
import android.telephony.TelephonyManager
|
||||||
import androidx.annotation.VisibleForTesting
|
import androidx.annotation.VisibleForTesting
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
@@ -80,7 +81,7 @@ class AutoSelectPreferenceController @JvmOverloads constructor(
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
var progressDialog: ProgressDialog? = null
|
var progressDialog: ProgressDialog? = null
|
||||||
|
|
||||||
private var subId by notNull<Int>()
|
private var subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialization based on given subscription id.
|
* Initialization based on given subscription id.
|
||||||
|
Reference in New Issue
Block a user