diff options
| author | 2022-03-10 16:29:26 +0000 | |
|---|---|---|
| committer | 2022-03-10 16:29:26 +0000 | |
| commit | 65858d10c289a34faec612b36d15f950f07aa1e2 (patch) | |
| tree | 560dddfa2b5fbaca17b3f56f1d218751a64fddbf | |
| parent | a18d20f9e54f91c987e54e475f809a4230cc4c60 (diff) | |
| parent | 7186d0bbfd35f89fbe4fa3bde5dc07463ddf4cc9 (diff) | |
Merge "Only enable scanner entry points if the scanner activity is callable" into tm-dev
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/qrcodescanner/controller/QRCodeScannerController.java | 20 |
1 files changed, 16 insertions, 4 deletions
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 e26c768a5e80..8000bdccfa68 100644 --- a/packages/SystemUI/src/com/android/systemui/qrcodescanner/controller/QRCodeScannerController.java +++ b/packages/SystemUI/src/com/android/systemui/qrcodescanner/controller/QRCodeScannerController.java @@ -160,14 +160,15 @@ 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 && mConfigEnableLockScreenButton; + return mQRCodeScannerEnabled && mIntent != null && mConfigEnableLockScreenButton + && isActivityCallable(mIntent); } /** * Returns true if quick settings entry point for QR Code Scanner is to be enabled. */ public boolean isEnabledForQuickSettings() { - return mIntent != null; + return mIntent != null && isActivityCallable(mIntent); } /** @@ -278,7 +279,7 @@ public class QRCodeScannerController implements intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); } - if (isActivityCallable(intent)) { + if (isActivityAvailable(intent)) { mQRCodeScannerActivity = qrCodeScannerActivity; mComponentName = componentName; mIntent = intent; @@ -293,7 +294,7 @@ public class QRCodeScannerController implements } } - private boolean isActivityCallable(Intent intent) { + private boolean isActivityAvailable(Intent intent) { // Our intent should always be explicit and should have a component set if (intent.getComponent() == null) return false; @@ -307,6 +308,17 @@ public class QRCodeScannerController implements flags).isEmpty(); } + private boolean isActivityCallable(Intent intent) { + // Our intent should always be explicit and should have a component set + if (intent.getComponent() == null) return false; + + int flags = PackageManager.MATCH_DIRECT_BOOT_AWARE + | PackageManager.MATCH_DIRECT_BOOT_UNAWARE + | PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS; + return !mContext.getPackageManager().queryIntentActivities(intent, + flags).isEmpty(); + } + private void unregisterUserChangeObservers() { mUserTracker.removeCallback(mUserChangedListener); |