Merge "Fix PrivateVolumeSettings be launched repeatedly" am: 31a7b2a4c7
am: 5973d32c77

Change-Id: I66747a250e7461cfc3fe04fb8228bb7fe7541b5a
diff --git a/src/com/android/settings/deviceinfo/StorageSettings.java b/src/com/android/settings/deviceinfo/StorageSettings.java
index 0107555..db68bac 100644
--- a/src/com/android/settings/deviceinfo/StorageSettings.java
+++ b/src/com/android/settings/deviceinfo/StorageSettings.java
@@ -93,6 +93,8 @@
     private StorageSummaryPreference mInternalSummary;
     private static long sTotalInternalStorage;
 
+    private boolean mHasLaunchedPrivateVolumeSettings = false;
+
     @Override
     public int getMetricsCategory() {
         return MetricsEvent.DEVICEINFO_STORAGE;
@@ -110,7 +112,6 @@
         final Context context = getActivity();
 
         mStorageManager = context.getSystemService(StorageManager.class);
-        mStorageManager.registerListener(mStorageListener);
 
         if (sTotalInternalStorage <= 0) {
             sTotalInternalStorage = mStorageManager.getPrimaryStorageSize();
@@ -231,14 +232,17 @@
         if (mInternalCategory.getPreferenceCount() == 2
                 && mExternalCategory.getPreferenceCount() == 0) {
             // Only showing primary internal storage, so just shortcut
-            final Bundle args = new Bundle();
-            args.putString(VolumeInfo.EXTRA_VOLUME_ID, VolumeInfo.ID_PRIVATE_INTERNAL);
-            Intent intent = Utils.onBuildStartFragmentIntent(getActivity(),
-                    StorageDashboardFragment.class.getName(), args, null,
-                    R.string.storage_settings, null, false, getMetricsCategory());
-            intent.putExtra(SettingsDrawerActivity.EXTRA_SHOW_MENU, true);
-            getActivity().startActivity(intent);
-            finish();
+            if (!mHasLaunchedPrivateVolumeSettings) {
+                mHasLaunchedPrivateVolumeSettings = true;
+                final Bundle args = new Bundle();
+                args.putString(VolumeInfo.EXTRA_VOLUME_ID, VolumeInfo.ID_PRIVATE_INTERNAL);
+                Intent intent = Utils.onBuildStartFragmentIntent(getActivity(),
+                        StorageDashboardFragment.class.getName(), args, null,
+                        R.string.storage_settings, null, false, getMetricsCategory());
+                intent.putExtra(SettingsDrawerActivity.EXTRA_SHOW_MENU, true);
+                getActivity().startActivity(intent);
+                finish();
+            }
         }
     }