From 2000bb8da2b8fda1b175ec85cbbc93e420f028bb Mon Sep 17 00:00:00 2001 From: Abel Tesfaye Date: Wed, 23 Jun 2021 22:06:00 +0000 Subject: [PATCH] Fix camera permission warning message not disappearing after permission is re-granted Test: locally Bug: 191907683 Change-Id: Idb45e99ff9f0569ad43aadcde830f0c69a3be4f3 --- .../SmartAutoRotatePermissionController.java | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/display/SmartAutoRotatePermissionController.java b/src/com/android/settings/display/SmartAutoRotatePermissionController.java index caa306d6a9d..aa6a96d55da 100644 --- a/src/com/android/settings/display/SmartAutoRotatePermissionController.java +++ b/src/com/android/settings/display/SmartAutoRotatePermissionController.java @@ -23,19 +23,24 @@ import android.content.Context; import android.content.Intent; import android.net.Uri; +import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; +import com.android.settingslib.core.lifecycle.LifecycleObserver; +import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.widget.BannerMessagePreference; /** * The controller of camera based rotate permission warning preference. The preference appears when * the camera permission is missing for the camera based rotation feature. */ -public class SmartAutoRotatePermissionController extends BasePreferenceController { +public class SmartAutoRotatePermissionController extends BasePreferenceController implements + LifecycleObserver, OnResume { private final Intent mIntent; + private BannerMessagePreference mPreference; public SmartAutoRotatePermissionController(Context context, String key) { super(context, key); @@ -48,15 +53,27 @@ public class SmartAutoRotatePermissionController extends BasePreferenceControlle @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); - final BannerMessagePreference preference = - (BannerMessagePreference) screen.findPreference(getPreferenceKey()); - preference + mPreference = screen.findPreference(getPreferenceKey()); + mPreference .setPositiveButtonText(R.string.auto_rotate_manage_permission_button) .setPositiveButtonOnClickListener(v -> { mContext.startActivity(mIntent); }); } + @Override + public void onResume() { + updateState(mPreference); + } + + @Override + public void updateState(Preference preference) { + super.updateState(preference); + if (preference != null) { + preference.setVisible(isAvailable()); + } + } + @Override @AvailabilityStatus public int getAvailabilityStatus() {