From 578b02f33c163440daa0e2538745e729849810c1 Mon Sep 17 00:00:00 2001 From: Bartosz Fabianowski Date: Fri, 24 Mar 2017 18:04:31 +0100 Subject: [PATCH] Keep EnterprisePrivacySettingsActivity always enabled The existing code checks during Settings startup whether the device is managed. If it is not, EnterprisePrivacySettingsActivity is disabled. If the device then becomes managed, Settings will not notice until the next restart, causing any attempt to launch this Activity via an Intent to crash. This CL changes things so that the Activity is always enabled but simply does nothing when launched on a non-managed device. Bug: 34122104 Test: Integration test coming in a separate CL Change-Id: I0a1dfcb41b405d981309696d97678df6787b4f72 (cherry picked from commit 92d25fb5f324f1e996e2cdf2e95d829860abb952) --- src/com/android/settings/Settings.java | 13 ++++++++++++- src/com/android/settings/SettingsActivity.java | 5 ----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index 8f645f82488..589421f0ffa 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -16,7 +16,10 @@ package com.android.settings; +import android.os.Bundle; + import com.android.settings.applications.AppOpsSummary; +import com.android.settings.enterprise.EnterprisePrivacySettings; import com.android.settings.fingerprint.FingerprintEnrollIntroduction; import com.android.settings.fingerprint.FingerprintSettings; @@ -154,7 +157,15 @@ public class Settings extends SettingsActivity { public static class TestingSettingsActivity extends SettingsActivity { /* empty */ } public static class WifiAPITestActivity extends SettingsActivity { /* empty */ } public static class WifiInfoActivity extends SettingsActivity { /* empty */ } - public static class EnterprisePrivacySettingsActivity extends SettingsActivity { /* empty */ } + public static class EnterprisePrivacySettingsActivity extends SettingsActivity { + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (!EnterprisePrivacySettings.isPageEnabled(this)) { + finish(); + } + } + } public static class WebViewAppPickerActivity extends SettingsActivity { /* empty */ } // Top level categories for new IA diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java index 11190d57086..6e10588ff7b 100644 --- a/src/com/android/settings/SettingsActivity.java +++ b/src/com/android/settings/SettingsActivity.java @@ -61,7 +61,6 @@ import com.android.settings.core.instrumentation.SharedPreferencesLogger; import com.android.settings.dashboard.DashboardFeatureProvider; import com.android.settings.dashboard.DashboardSummary; import com.android.settings.development.DevelopmentSettings; -import com.android.settings.enterprise.EnterprisePrivacySettings; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.DynamicIndexableContentMonitor; import com.android.settings.search2.SearchFeatureProvider; @@ -865,10 +864,6 @@ public class SettingsActivity extends SettingsDrawerActivity BackupSettingsActivity.class.getName()), true, isAdmin || Utils.isCarrierDemoUser(this)); - setTileEnabled(new ComponentName(packageName, - Settings.EnterprisePrivacySettingsActivity.class.getName()), - EnterprisePrivacySettings.isPageEnabled(this), isAdmin); - setTileEnabled(new ComponentName(packageName, Settings.WifiDisplaySettingsActivity.class.getName()), WifiDisplaySettings.isAvailable(this), isAdmin);