diff --git a/core/api/system-current.txt b/core/api/system-current.txt index f96e9bc158468..0abab96f1381d 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -366,6 +366,7 @@ package android { } public static final class R.bool { + field public static final int config_enableQrCodeScannerOnLockScreen; field public static final int config_sendPackageName = 17891328; // 0x1110000 field public static final int config_showDefaultAssistant = 17891329; // 0x1110001 field public static final int config_showDefaultEmergency = 17891330; // 0x1110002 diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index e9ba92fe95892..d8b3785d7f4e7 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -5612,4 +5612,7 @@ false + + + false diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index d2ac8a3c5fbc5..cfe65eb00cea8 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -3324,6 +3324,8 @@ + + diff --git a/packages/SystemUI/src/com/android/systemui/qrcodescanner/controller/QRCodeScannerController.java b/packages/SystemUI/src/com/android/systemui/qrcodescanner/controller/QRCodeScannerController.java index c8e2ca7e7ea84..1da94aa234aac 100644 --- a/packages/SystemUI/src/com/android/systemui/qrcodescanner/controller/QRCodeScannerController.java +++ b/packages/SystemUI/src/com/android/systemui/qrcodescanner/controller/QRCodeScannerController.java @@ -93,6 +93,7 @@ public class QRCodeScannerController implements private final DeviceConfigProxy mDeviceConfigProxy; private final ArrayList mCallbacks = new ArrayList<>(); private final UserTracker mUserTracker; + private final boolean mConfigEnableLockScreenButton; private HashMap mQRCodeScannerPreferenceObserver = new HashMap<>(); private DeviceConfig.OnPropertiesChangedListener mOnDefaultQRCodeScannerChangedListener = null; @@ -118,6 +119,9 @@ public class QRCodeScannerController implements mSecureSettings = secureSettings; mDeviceConfigProxy = proxy; mUserTracker = userTracker; + + mConfigEnableLockScreenButton = mContext.getResources().getBoolean( + android.R.bool.config_enableQrCodeScannerOnLockScreen); } /** @@ -156,7 +160,7 @@ public class QRCodeScannerController implements * Returns true if lock screen entry point for QR Code Scanner is to be enabled. */ public boolean isEnabledForLockScreenButton() { - return mQRCodeScannerEnabled && mIntent != null; + return mQRCodeScannerEnabled && mIntent != null && mConfigEnableLockScreenButton; } /** @@ -235,6 +239,11 @@ public class QRCodeScannerController implements } private void updateQRCodeScannerPreferenceDetails(boolean updateSettings) { + if (!mConfigEnableLockScreenButton) { + // Settings only apply to lock screen entry point. + return; + } + boolean prevQRCodeScannerEnabled = mQRCodeScannerEnabled; mQRCodeScannerEnabled = mSecureSettings.getIntForUser(LOCK_SCREEN_SHOW_QR_CODE_SCANNER, 0, mUserTracker.getUserId()) != 0; @@ -251,8 +260,15 @@ public class QRCodeScannerController implements private void updateQRCodeScannerActivityDetails() { String qrCodeScannerActivity = mDeviceConfigProxy.getString( DeviceConfig.NAMESPACE_SYSTEMUI, - SystemUiDeviceConfigFlags.DEFAULT_QR_CODE_SCANNER, - mContext.getResources().getString(R.string.def_qr_code_component)); + SystemUiDeviceConfigFlags.DEFAULT_QR_CODE_SCANNER, ""); + + // "" means either the flags is not available or is set to "", and in both the cases we + // want to use R.string.def_qr_code_component + if (Objects.equals(qrCodeScannerActivity, "")) { + qrCodeScannerActivity = + mContext.getResources().getString(R.string.def_qr_code_component); + } + String prevQrCodeScannerActivity = mQRCodeScannerActivity; ComponentName componentName = null; Intent intent = new Intent(); @@ -296,6 +312,11 @@ public class QRCodeScannerController implements } private void unregisterQRCodePreferenceObserver() { + if (!mConfigEnableLockScreenButton) { + // Settings only apply to lock screen entry point. + return; + } + mQRCodeScannerPreferenceObserver.forEach((key, value) -> { mSecureSettings.unregisterContentObserver(value); }); @@ -357,6 +378,11 @@ public class QRCodeScannerController implements } private void registerQRCodePreferenceObserver() { + if (!mConfigEnableLockScreenButton) { + // Settings only apply to lock screen entry point. + return; + } + int userId = mUserTracker.getUserId(); if (mQRCodeScannerPreferenceObserver.getOrDefault(userId, null) != null) return;