Count isActivityEmbedded() state to show split screen warning dialog

According to Activity#isInMultiWindowMode() API design,
When the Task is in fullscreen windowing mode, and the app is in
ActivityEmbedding split (two activities split left and right),
Activity.isInMultiWindowMode() == true.

With the reason, we should consider additional condidion for
foldable device in unfolded mode, while settings activities
config to embedded activity, we can't only count on
isInMultiWindowMode() for split-screen mode

Bug: 278176550
Bug: 276938441
Test: atest CombinedBiometricProfileSettingsTest
Test: atest FingerprintSettingsFragmentTest
Test: manaul go to split screen mode and try to enroll face
Test: manual unfold device and enroll finger or face
Change-Id: I02bd223f27889e74e67b73051531a5b4554f3de1
This commit is contained in:
lbill
2023-04-14 09:36:54 +00:00
parent f77643bec7
commit 09276c9639
5 changed files with 25 additions and 19 deletions

View File

@@ -52,6 +52,7 @@ import com.android.settings.core.SettingsBaseActivity;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.password.ChooseLockGeneric;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settingslib.activityembedding.ActivityEmbeddingUtils;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.transition.SettingsTransitionHelper;
@@ -169,8 +170,8 @@ public abstract class BiometricsSettingsBase extends DashboardFragment {
// If it's split mode and there is no enrolled face, show the dialog. (if there is
// enrolled face, FaceSettingsEnrollButtonPreferenceController#onClick will handle
// the dialog)
if (getActivity().isInMultiWindowMode() && !mFaceManager.hasEnrolledTemplates(
mUserId)) {
if (getActivity().isInMultiWindowMode() && !ActivityEmbeddingUtils.isActivityEmbedded(
getActivity()) && !mFaceManager.hasEnrolledTemplates(mUserId)) {
BiometricsSplitScreenDialog.newInstance(TYPE_FACE).show(
getActivity().getSupportFragmentManager(),
BiometricsSplitScreenDialog.class.getName());
@@ -205,8 +206,8 @@ public abstract class BiometricsSettingsBase extends DashboardFragment {
// If it's split mode and there is no enrolled fingerprint, show the dialog. (if
// there is enrolled fingerprint, FingerprintSettingsFragment#onPreferenceTreeClick
// will handle the dialog)
if (getActivity().isInMultiWindowMode() && !mFingerprintManager.hasEnrolledFingerprints(
mUserId)) {
if (getActivity().isInMultiWindowMode() && !ActivityEmbeddingUtils.isActivityEmbedded(
getActivity()) && !mFingerprintManager.hasEnrolledFingerprints(mUserId)) {
BiometricsSplitScreenDialog.newInstance(TYPE_FINGERPRINT).show(
getActivity().getSupportFragmentManager(),
BiometricsSplitScreenDialog.class.getName());