From 448440b8e2b23031196ee37b3d58c04e5c6adade Mon Sep 17 00:00:00 2001 From: joshmccloskey Date: Mon, 9 Sep 2019 16:11:27 -0700 Subject: [PATCH 1/2] Change cancel button type to skip for SUW Test: Verified in SUW that enrollment will skip after tapping the cancel button in the Introduction. Fixes: 140702414 Change-Id: I9d9da0ff6d10b6ee6929cb52ff4a03a684f43d17 (cherry picked from commit d98257bae6e6fbb756aa71addc6e3e07dfcb94d3) --- .../face/FaceEnrollIntroduction.java | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java index e092891368d..965b8ed6db8 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java @@ -47,15 +47,25 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction { mFaceManager = Utils.getFaceManagerOrNull(this); mFooterBarMixin = getLayout().getMixin(FooterBarMixin.class); - - mFooterBarMixin.setSecondaryButton( - new FooterButton.Builder(this) - .setText(R.string.security_settings_face_enroll_introduction_no_thanks) - .setListener(this::onCancelButtonClick) - .setButtonType(FooterButton.ButtonType.CANCEL) - .setTheme(R.style.SudGlifButton_Secondary) - .build() - ); + if (WizardManagerHelper.isAnySetupWizard(getIntent())) { + mFooterBarMixin.setSecondaryButton( + new FooterButton.Builder(this) + .setText(R.string.security_settings_face_enroll_introduction_no_thanks) + .setListener(this::onSkipButtonClick) + .setButtonType(FooterButton.ButtonType.SKIP) + .setTheme(R.style.SudGlifButton_Secondary) + .build() + ); + } else { + mFooterBarMixin.setSecondaryButton( + new FooterButton.Builder(this) + .setText(R.string.security_settings_face_enroll_introduction_no_thanks) + .setListener(this::onCancelButtonClick) + .setButtonType(FooterButton.ButtonType.CANCEL) + .setTheme(R.style.SudGlifButton_Secondary) + .build() + ); + } mFooterBarMixin.setPrimaryButton( new FooterButton.Builder(this) From 36bbb02dca1c11ac676e70f02dc198d79647b0e7 Mon Sep 17 00:00:00 2001 From: Mill Chen Date: Tue, 16 Jul 2019 17:45:46 +0800 Subject: [PATCH 2/2] Prevent accounts page directly opening in screen pinning mode In Settings there is no auth mechanism to prevent accounts page being opened in screen pinning mode. This CL makes it so that when users are trying to navigate to any pages in Settings from other apps in screen pinning mode, Settings app will directly close its page. Bug: 137015265 Bug: 135604684 Test: manual Change-Id: If26eda408a9ef6fa03ad82e5bee51bb7185950d6 Merged-In: If26eda408a9ef6fa03ad82e5bee51bb7185950d6 (cherry picked from commit f3242dab3546c019d4b79c502f7b8850d36123a5) (cherry picked from commit a545a85f9d003cea33e77476175cad0e7ea19de4) --- .../settings/core/SettingsBaseActivity.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/com/android/settings/core/SettingsBaseActivity.java b/src/com/android/settings/core/SettingsBaseActivity.java index 5ff81d54aa6..6e37b161924 100644 --- a/src/com/android/settings/core/SettingsBaseActivity.java +++ b/src/com/android/settings/core/SettingsBaseActivity.java @@ -17,6 +17,7 @@ package com.android.settings.core; import android.annotation.LayoutRes; import android.annotation.Nullable; +import android.app.ActivityManager; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; @@ -26,6 +27,7 @@ import android.content.pm.PackageManager; import android.content.res.TypedArray; import android.os.AsyncTask; import android.os.Bundle; +import android.text.TextUtils; import android.util.ArraySet; import android.util.Log; import android.view.LayoutInflater; @@ -61,6 +63,10 @@ public class SettingsBaseActivity extends FragmentActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); + if (isLockTaskModePinned() && !isSettingsRunOnTop()) { + Log.w(TAG, "Devices lock task mode pinned."); + finish(); + } final long startTime = System.currentTimeMillis(); getLifecycle().addObserver(new HideNonSystemOverlayMixin(this)); @@ -148,6 +154,20 @@ public class SettingsBaseActivity extends FragmentActivity { } } + private boolean isLockTaskModePinned() { + final ActivityManager activityManager = + getApplicationContext().getSystemService(ActivityManager.class); + return activityManager.getLockTaskModeState() == ActivityManager.LOCK_TASK_MODE_PINNED; + } + + private boolean isSettingsRunOnTop() { + final ActivityManager activityManager = + getApplicationContext().getSystemService(ActivityManager.class); + final String taskPkgName = activityManager.getRunningTasks(1 /* maxNum */) + .get(0 /* index */).baseActivity.getPackageName(); + return TextUtils.equals(getPackageName(), taskPkgName); + } + /** * @return whether or not the enabled state actually changed. */