From 957fc67af21b87c01e2c5939f0611021d8fe6c31 Mon Sep 17 00:00:00 2001 From: Maurice Lam Date: Thu, 30 Mar 2017 16:18:08 -0700 Subject: [PATCH] Disable SetupRedactionInterstitial when complete When RedactionInterstitial is complete, there is no need to show the SetupRedactionInterstitial as optional step anymore. Disable it via package manager when RedactionInterstatial completes. Test: Manual Bug: 36696006 Change-Id: I3fd421d6a8a0d24d7ebbe8c1e688a10e00067f2f --- .../settings/SetupChooseLockGeneric.java | 8 -------- .../settings/SetupChooseLockPassword.java | 3 +++ .../settings/SetupChooseLockPattern.java | 3 +++ .../settings/SetupRedactionInterstitial.java | 20 ++++++++++++++++--- .../notification/RedactionInterstitial.java | 15 +++++++------- 5 files changed, 30 insertions(+), 19 deletions(-) diff --git a/src/com/android/settings/SetupChooseLockGeneric.java b/src/com/android/settings/SetupChooseLockGeneric.java index 61545a66ff1..2c8195d7075 100644 --- a/src/com/android/settings/SetupChooseLockGeneric.java +++ b/src/com/android/settings/SetupChooseLockGeneric.java @@ -17,10 +17,8 @@ package com.android.settings; import android.app.admin.DevicePolicyManager; -import android.content.ComponentName; import android.content.Context; import android.content.Intent; -import android.content.pm.PackageManager; import android.content.res.Resources; import android.os.Bundle; import android.os.UserHandle; @@ -120,12 +118,6 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric { data.putExtra(EXTRA_PASSWORD_QUALITY, lockPatternUtils.getKeyguardStoredPasswordQuality(UserHandle.myUserId())); - PackageManager packageManager = getPackageManager(); - ComponentName componentName = new ComponentName("com.android.settings", - "com.android.settings.SetupRedactionInterstitial"); - packageManager.setComponentEnabledSetting(componentName, - PackageManager.COMPONENT_ENABLED_STATE_ENABLED, - PackageManager.DONT_KILL_APP); super.onActivityResult(requestCode, resultCode, data); } // If the started activity was cancelled (e.g. the user presses back), then this diff --git a/src/com/android/settings/SetupChooseLockPassword.java b/src/com/android/settings/SetupChooseLockPassword.java index f0a9a262354..f2c24d0f0f7 100644 --- a/src/com/android/settings/SetupChooseLockPassword.java +++ b/src/com/android/settings/SetupChooseLockPassword.java @@ -87,6 +87,9 @@ public class SetupChooseLockPassword extends ChooseLockPassword { @Override protected Intent getRedactionInterstitialIntent(Context context) { + // Setup wizard's redaction interstitial is deferred to optional step. Enable that + // optional step if the lock screen was set up. + SetupRedactionInterstitial.setEnabled(context, true); return null; } } diff --git a/src/com/android/settings/SetupChooseLockPattern.java b/src/com/android/settings/SetupChooseLockPattern.java index 09b951e0e1e..30a3c7c9d24 100644 --- a/src/com/android/settings/SetupChooseLockPattern.java +++ b/src/com/android/settings/SetupChooseLockPattern.java @@ -73,6 +73,9 @@ public class SetupChooseLockPattern extends ChooseLockPattern { @Override protected Intent getRedactionInterstitialIntent(Context context) { + // Setup wizard's redaction interstitial is deferred to optional step. Enable that + // optional step if the lock screen was set up. + SetupRedactionInterstitial.setEnabled(context, false); return null; } } diff --git a/src/com/android/settings/SetupRedactionInterstitial.java b/src/com/android/settings/SetupRedactionInterstitial.java index d527585738c..321040eb0e7 100644 --- a/src/com/android/settings/SetupRedactionInterstitial.java +++ b/src/com/android/settings/SetupRedactionInterstitial.java @@ -16,11 +16,11 @@ package com.android.settings; +import android.content.ComponentName; +import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.content.res.Resources; -import android.os.Bundle; -import android.view.View; -import android.widget.Button; import com.android.settings.notification.RedactionInterstitial; @@ -33,6 +33,20 @@ import com.android.settings.notification.RedactionInterstitial; */ public class SetupRedactionInterstitial extends RedactionInterstitial { + /** + * Set the enabled state of SetupRedactionInterstitial activity to configure whether it is shown + * as part of setup wizard's optional steps. + */ + public static void setEnabled(Context context, boolean enabled) { + PackageManager packageManager = context.getPackageManager(); + ComponentName componentName = new ComponentName(context, SetupRedactionInterstitial.class); + packageManager.setComponentEnabledSetting( + componentName, + enabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED + : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP); + } + @Override public Intent getIntent() { Intent modIntent = new Intent(super.getIntent()); diff --git a/src/com/android/settings/notification/RedactionInterstitial.java b/src/com/android/settings/notification/RedactionInterstitial.java index 08474a0eb38..b2690629167 100644 --- a/src/com/android/settings/notification/RedactionInterstitial.java +++ b/src/com/android/settings/notification/RedactionInterstitial.java @@ -16,7 +16,11 @@ package com.android.settings.notification; -import android.app.admin.DevicePolicyManager; +import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_SECURE_NOTIFICATIONS; +import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS; + +import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; + import android.content.Context; import android.content.Intent; import android.os.Bundle; @@ -26,7 +30,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; -import android.widget.CompoundButton; import android.widget.LinearLayout; import android.widget.RadioButton; import android.widget.RadioGroup; @@ -34,18 +37,13 @@ import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.settings.R; -import com.android.settings.RestrictedCheckBox; import com.android.settings.RestrictedRadioButton; import com.android.settings.SettingsActivity; import com.android.settings.SettingsPreferenceFragment; +import com.android.settings.SetupRedactionInterstitial; import com.android.settings.Utils; import com.android.settingslib.RestrictedLockUtils; -import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_SECURE_NOTIFICATIONS; -import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS; - -import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; - public class RedactionInterstitial extends SettingsActivity { @Override @@ -128,6 +126,7 @@ public class RedactionInterstitial extends SettingsActivity { @Override public void onClick(View v) { if (v.getId() == R.id.redaction_done_button) { + SetupRedactionInterstitial.setEnabled(getContext(), false); final RedactionInterstitial activity = (RedactionInterstitial) getActivity(); if (activity != null) { activity.setResult(RESULT_OK, null);