diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java index f339c585991..aca04cb11cd 100755 --- a/src/com/android/settings/applications/InstalledAppDetails.java +++ b/src/com/android/settings/applications/InstalledAppDetails.java @@ -16,6 +16,8 @@ package com.android.settings.applications; +import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; + import android.Manifest.permission; import android.app.Activity; import android.app.ActivityManager; @@ -83,6 +85,7 @@ import com.android.settings.applications.instantapps.InstantAppButtonsController import com.android.settings.datausage.AppDataUsage; import com.android.settings.datausage.DataUsageList; import com.android.settings.datausage.DataUsageSummary; +import com.android.settings.development.DevelopmentSettingsEnabler; import com.android.settings.fuelgauge.AdvancedPowerUsageDetail; import com.android.settings.fuelgauge.BatteryEntry; import com.android.settings.fuelgauge.BatteryStatsHelperLoader; @@ -109,8 +112,6 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; - /** * Activity to display application information from Settings. This activity presents * extended information associated with a package like code, data, total size, permissions @@ -176,7 +177,7 @@ public class InstalledAppDetails extends AppInfoBase private Preference mMemoryPreference; private Preference mVersionPreference; private AppDomainsPreference mInstantAppDomainsPreference; - + private DevelopmentSettingsEnabler mDevelopmentSettingsEnabler; private boolean mDisableAfterUninstall; // Used for updating notification preference. @@ -376,6 +377,7 @@ public class InstalledAppDetails extends AppInfoBase setHasOptionsMenu(true); addPreferencesFromResource(R.xml.installed_app_details); + addDynamicPrefs(); if (Utils.isBandwidthControlEnabled()) { INetworkStatsService statsService = INetworkStatsService.Stub.asInterface( @@ -389,6 +391,8 @@ public class InstalledAppDetails extends AppInfoBase removePreference(KEY_DATA); } mBatteryUtils = BatteryUtils.getInstance(getContext()); + mDevelopmentSettingsEnabler = new DevelopmentSettingsEnabler( + activity, null /* lifecycle */); } @Override @@ -412,7 +416,9 @@ public class InstalledAppDetails extends AppInfoBase loaderManager.restartLoader(LOADER_STORAGE, Bundle.EMPTY, this); } restartBatteryStatsLoader(); - new MemoryUpdater().execute(); + if (mDevelopmentSettingsEnabler.getLastEnabledState()) { + new MemoryUpdater().execute(); + } updateDynamicPrefs(); } @@ -466,6 +472,7 @@ public class InstalledAppDetails extends AppInfoBase mBatteryPreference.setOnPreferenceClickListener(this); mMemoryPreference = findPreference(KEY_MEMORY); mMemoryPreference.setOnPreferenceClickListener(this); + mMemoryPreference.setVisible(mDevelopmentSettingsEnabler.getLastEnabledState()); mVersionPreference = findPreference(KEY_VERSION); mInstantAppDomainsPreference = (AppDomainsPreference) findPreference(KEY_INSTANT_APP_SUPPORTED_LINKS); diff --git a/src/com/android/settings/development/DevelopmentSettingsEnabler.java b/src/com/android/settings/development/DevelopmentSettingsEnabler.java index 7132631b944..ed750e41b4e 100644 --- a/src/com/android/settings/development/DevelopmentSettingsEnabler.java +++ b/src/com/android/settings/development/DevelopmentSettingsEnabler.java @@ -34,6 +34,7 @@ public class DevelopmentSettingsEnabler implements LifecycleObserver, OnResume { mContext = context; mDevelopmentPreferences = context.getSharedPreferences(DevelopmentSettings.PREF_FILE, Context.MODE_PRIVATE); + updateEnabledState(); if (lifecycle != null) { lifecycle.addObserver(this); } @@ -41,8 +42,7 @@ public class DevelopmentSettingsEnabler implements LifecycleObserver, OnResume { @Override public void onResume() { - mLastEnabledState = Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0; + updateEnabledState(); } public static boolean enableDevelopmentSettings(Context context, SharedPreferences prefs) { @@ -53,6 +53,11 @@ public class DevelopmentSettingsEnabler implements LifecycleObserver, OnResume { Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1); } + private void updateEnabledState() { + mLastEnabledState = Settings.Global.getInt(mContext.getContentResolver(), + Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0; + } + public boolean getLastEnabledState() { return mLastEnabledState; } diff --git a/tests/robotests/src/com/android/settings/development/DevelopmentSettingsEnablerTest.java b/tests/robotests/src/com/android/settings/development/DevelopmentSettingsEnablerTest.java index c9378417f83..223f98d7686 100644 --- a/tests/robotests/src/com/android/settings/development/DevelopmentSettingsEnablerTest.java +++ b/tests/robotests/src/com/android/settings/development/DevelopmentSettingsEnablerTest.java @@ -16,12 +16,14 @@ package com.android.settings.development; +import static com.google.common.truth.Truth.assertThat; + import android.content.Context; import android.content.SharedPreferences; import android.provider.Settings; -import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.TestConfig; +import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Test; @@ -33,8 +35,6 @@ import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.util.ReflectionHelpers; -import static com.google.common.truth.Truth.assertThat; - @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class DevelopmentSettingsEnablerTest { @@ -52,6 +52,16 @@ public class DevelopmentSettingsEnablerTest { ReflectionHelpers.setField(mEnabler, "mDevelopmentPreferences", mDevelopmentPreferences); } + @Test + public void constructor_shouldInitEnabledState() { + Settings.Global.putInt(mContext.getContentResolver(), + Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1); + + mEnabler = new DevelopmentSettingsEnabler(mContext, null); + + assertThat(mEnabler.getLastEnabledState()).isTrue(); + } + @Test public void onResume_shouldReadStateFromSettingProvider() { Settings.Global.putInt(mContext.getContentResolver(),