Fix kotlin nullable errors in Settings

Fix kotlin nullable errors that were exposed by setting the retention
of android.annotation.NonNull and android.annotation.Nullable to
class retention.

Bug: 294110802
Test: builds
Change-Id: I6aa0516fa4f6443b6d4dff873baf3b08ff9189f0
This commit is contained in:
Colin Cross
2023-08-14 12:29:02 -07:00
parent beea9e488d
commit 87b870a090
12 changed files with 25 additions and 23 deletions

View File

@@ -46,7 +46,7 @@ class RegulatoryInfoDisplayActivity : Activity() {
getRegulatoryInfo()?.let {
val view = layoutInflater.inflate(R.layout.regulatory_info, null)
val image = view.findViewById<ImageView>(R.id.regulatoryInfo)
val image = view.requireViewById<ImageView>(R.id.regulatoryInfo)
image.setImageDrawable(it)
builder.setView(view)
builder.show()

View File

@@ -106,8 +106,8 @@ class FingerprintSettingsRenameDialog : InstrumentedDialogFragment() {
val dialog = FingerprintSettingsRenameDialog()
val onClick =
DialogInterface.OnClickListener { _, _ ->
val dialogTextField =
dialog.requireDialog().findViewById(R.id.fingerprint_rename_field) as ImeAwareEditText
val dialogTextField = dialog.requireDialog()
.requireViewById(R.id.fingerprint_rename_field) as ImeAwareEditText
val newName = dialogTextField.text.toString()
if (!TextUtils.equals(newName, fp.name)) {
Log.d(TAG, "rename $fp.name to $newName for $dialog")

View File

@@ -205,8 +205,8 @@ class FingerprintEnrollIntroFragment : Fragment() {
private fun getDescriptionDisabledByAdmin(context: Context): String? {
val defaultStrId: Int =
R.string.security_settings_fingerprint_enroll_introduction_message_unlock_disabled
val devicePolicyManager: DevicePolicyManager = requireActivity()
.getSystemService(DevicePolicyManager::class.java)
val devicePolicyManager: DevicePolicyManager =
checkNotNull(requireActivity().getSystemService(DevicePolicyManager::class.java))
return devicePolicyManager.resources.getString(FINGERPRINT_UNLOCK_DISABLED) {
context.getString(defaultStrId)
@@ -234,7 +234,7 @@ class FingerprintEnrollIntroFragment : Fragment() {
else
View.INVISIBLE
view!!.findViewById<TextView>(R.id.error_text).let {
view!!.requireViewById<TextView>(R.id.error_text).let {
when (status.enrollableStatus) {
FINGERPRINT_ENROLLABLE_OK -> {
it.text = null

View File

@@ -95,10 +95,10 @@ class SimEidPreferenceController(context: Context, preferenceKey: String) :
WindowManager.LayoutParams.FLAG_SECURE
)
dialog.setCanceledOnTouchOutside(false)
val textView = dialog.findViewById<TextView>(R.id.esim_id_value)
val textView = dialog.requireViewById<TextView>(R.id.esim_id_value)
textView.text = PhoneNumberUtil.expandByTts(eid)
val qrCodeView = dialog.findViewById<ImageView>(R.id.esim_id_qrcode)
val qrCodeView = dialog.requireViewById<ImageView>(R.id.esim_id_qrcode)
qrCodeView.setImageBitmap(getEidQrCode(eid))
// After "Tap to show", eid is displayed on preference.

View File

@@ -81,7 +81,7 @@ class FullScreenIntentPermissionPreferenceController(
private fun isPermissionRequested(): Boolean {
val packageInfo = packageManager.getPackageInfo(packageName, GET_PERMISSIONS)
for (requestedPermission in packageInfo.requestedPermissions) {
for (requestedPermission in packageInfo.requestedPermissions.orEmpty()) {
if (USE_FULL_SCREEN_INTENT.equals(requestedPermission)) {
return true
}
@@ -115,4 +115,4 @@ class FullScreenIntentPermissionPreferenceController(
const val KEY_FSI_PERMISSION = "fsi_permission"
const val TAG = "FsiPermPrefController"
}
}
}

View File

@@ -65,7 +65,7 @@ abstract class RemoteAuthEnrollBase(
abstract fun initializeSecondaryFooterButton(): FooterButton?
private fun initializeFooterbarMixin(view: View) {
val footerBarMixin = getGlifLayout(view).getMixin(FooterBarMixin::class.java)
val footerBarMixin = checkNotNull(getGlifLayout(view)).getMixin(FooterBarMixin::class.java)
primaryFooterButton.also { footerBarMixin.primaryButton = it }
secondaryFooterButton?.also { footerBarMixin.secondaryButton = it }
footerBarMixin.getButtonContainer().setBackgroundColor(getBackgroundColor())
@@ -80,4 +80,4 @@ abstract class RemoteAuthEnrollBase(
private companion object{
const val TAG = "RemoteAuthEnrollBase"
}
}
}

View File

@@ -38,13 +38,15 @@ import com.android.settings.R
import com.android.settingslib.widget.LottieColorUtils
class IntroductionImageCarousel : ConstraintLayout {
private val carousel: ViewPager2 by lazy { findViewById<ViewPager2>(R.id.image_carousel) }
private val carousel: ViewPager2 by lazy { requireViewById<ViewPager2>(R.id.image_carousel) }
private val progressIndicator: RecyclerView by lazy {
findViewById<RecyclerView>(R.id.carousel_progress_indicator)
requireViewById<RecyclerView>(R.id.carousel_progress_indicator)
}
private val backArrow: ImageView by lazy {
requireViewById<ImageView>(R.id.carousel_back_arrow)
}
private val backArrow: ImageView by lazy { findViewById<ImageView>(R.id.carousel_back_arrow) }
private val forwardArrow: ImageView by lazy {
findViewById<ImageView>(R.id.carousel_forward_arrow)
requireViewById<ImageView>(R.id.carousel_forward_arrow)
}
private val progressIndicatorAdapter = ProgressIndicatorAdapter()
// The index of the current animation we are on
@@ -156,4 +158,4 @@ class IntroductionImageCarousel : ConstraintLayout {
)
const val TAG = "RemoteAuthCarousel"
}
}
}

View File

@@ -71,7 +71,7 @@ class RemoteAuthEnrollIntroduction :
}
private fun initializeRequireScrollMixin(view: View) {
val layout = getGlifLayout(view)
val layout = checkNotNull(getGlifLayout(view))
secondaryFooterButton?.visibility = View.INVISIBLE
val requireScrollMixin = layout.getMixin(RequireScrollMixin::class.java)
requireScrollMixin.requireScrollWithButton(requireContext(), primaryFooterButton,
@@ -89,4 +89,4 @@ class RemoteAuthEnrollIntroduction :
private companion object {
const val TAG = "RemoteAuthEnrollIntro"
}
}
}

View File

@@ -45,7 +45,7 @@ private class AppButtonsPresenter(private val packageInfoPresenter: PackageInfoP
@Composable
fun getActionButtons() =
packageInfoPresenter.flow.collectAsStateWithLifecycle(initialValue = null).value?.let {
getActionButtons(it.applicationInfo)
getActionButtons(checkNotNull(it.applicationInfo))
} ?: emptyList()
@Composable

View File

@@ -118,7 +118,7 @@ object AppInfoSettingsProvider : SettingsPageProvider {
private fun AppInfoSettings(packageInfoPresenter: PackageInfoPresenter) {
LifecycleEffect(onStart = { packageInfoPresenter.reloadPackageInfo() })
val packageInfo = packageInfoPresenter.flow.collectAsStateWithLifecycle().value ?: return
val app = packageInfo.applicationInfo
val app = checkNotNull(packageInfo.applicationInfo)
RegularScaffold(
title = stringResource(R.string.application_info_label),
actions = {

View File

@@ -41,7 +41,7 @@ private class CloneAppButtonsPresenter(private val packageInfoPresenter: Package
@Composable
fun getActionButtons() =
packageInfoPresenter.flow.collectAsStateWithLifecycle(initialValue = null).value?.let {
getActionButtons(it.applicationInfo)
getActionButtons(checkNotNull(it.applicationInfo))
} ?: emptyList()
@Composable

View File

@@ -77,7 +77,7 @@ class PackageInfoPresenter(
DisposableBroadcastReceiverAsUser(intentFilter, userHandle) { intent ->
if (packageName == intent.data?.schemeSpecificPart) {
val packageInfo = flow.value
if (packageInfo != null && packageInfo.applicationInfo.isSystemApp) {
if (packageInfo != null && packageInfo.applicationInfo?.isSystemApp == true) {
// System app still exists after uninstalling the updates, refresh the page.
reloadPackageInfo()
} else {