diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index a2195df1b6b..370b17a7156 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -63,6 +63,7 @@ import android.os.BatteryManager; import android.os.Binder; import android.os.Build; import android.os.Bundle; +import android.os.Environment; import android.os.IBinder; import android.os.INetworkManagementService; import android.os.RemoteException; @@ -97,7 +98,6 @@ import android.widget.TabWidget; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.annotation.StringRes; import androidx.annotation.VisibleForTesting; import androidx.core.graphics.drawable.IconCompat; import androidx.core.graphics.drawable.RoundedBitmapDrawable; @@ -1309,4 +1309,15 @@ public final class Utils extends com.android.settingslib.Utils { com.android.internal.R.bool.config_dreamsOnlyEnabledForDockUser); return dreamsSupported && (!dreamsOnlyEnabledForDockUser || canCurrentUserDream(context)); } + + /** + * Get private total size directly. + * Referred from StorageManager + */ + public static long getPrimaryStorageSize() { + // TODO(b/288103116): remove this method once support by StorageManager. + return Environment.getDataDirectory().getTotalSpace() + + Environment.getRootDirectory().getTotalSpace(); + } + } diff --git a/src/com/android/settings/deviceinfo/StorageCategoryFragment.java b/src/com/android/settings/deviceinfo/StorageCategoryFragment.java index 52f453d46a9..d1d4cbe7f50 100644 --- a/src/com/android/settings/deviceinfo/StorageCategoryFragment.java +++ b/src/com/android/settings/deviceinfo/StorageCategoryFragment.java @@ -211,7 +211,9 @@ public class StorageCategoryFragment extends DashboardFragment setLoading(false /* loading */, false /* animate */); - final long privateUsedBytes = mStorageInfo.totalBytes - mStorageInfo.freeBytes; + // TODO(b/288103116): replace with new API to get TotalBytes before rounding + // once support by StorageManager. + final long privateUsedBytes = Utils.getPrimaryStorageSize() - mStorageInfo.freeBytes; mPreferenceController.setVolume(mSelectedStorageEntry.getVolumeInfo()); mPreferenceController.setUsedSize(privateUsedBytes); mPreferenceController.setTotalSize(mStorageInfo.totalBytes); diff --git a/src/com/android/settings/deviceinfo/StorageDashboardFragment.java b/src/com/android/settings/deviceinfo/StorageDashboardFragment.java index f31f2be0049..4138057a90c 100644 --- a/src/com/android/settings/deviceinfo/StorageDashboardFragment.java +++ b/src/com/android/settings/deviceinfo/StorageDashboardFragment.java @@ -387,7 +387,9 @@ public class StorageDashboardFragment extends DashboardFragment setLoading(false /* loading */, false /* animate */); - final long privateUsedBytes = mStorageInfo.totalBytes - mStorageInfo.freeBytes; + // TODO(b/288103116): replace with new API to get TotalBytes before rounding + // once support by StorageManager. + final long privateUsedBytes = Utils.getPrimaryStorageSize() - mStorageInfo.freeBytes; mPreferenceController.setVolume(mSelectedStorageEntry.getVolumeInfo()); mPreferenceController.setUsedSize(privateUsedBytes); mPreferenceController.setTotalSize(mStorageInfo.totalBytes); diff --git a/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java b/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java index e6827832a8e..43dc9dd0d15 100644 --- a/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java +++ b/src/com/android/settings/deviceinfo/TopLevelStoragePreferenceController.java @@ -74,10 +74,14 @@ public class TopLevelStoragePreferenceController extends BasePreferenceControlle return ThreadUtils.postOnBackgroundThread(() -> { final PrivateStorageInfo info = PrivateStorageInfo.getPrivateStorageInfo( getStorageManagerVolumeProvider()); - storageCacheHelper.cacheUsedSize(info.totalBytes - info.freeBytes); + + // TODO(b/288103116): replace with new API to get TotalBytes before rounding + // once support by StorageManager. + long usedBytes = Utils.getPrimaryStorageSize() - info.freeBytes; + storageCacheHelper.cacheUsedSize(usedBytes); ThreadUtils.postOnMainThread(() -> { preference.setSummary( - getSummary(info.totalBytes - info.freeBytes, info.totalBytes)); + getSummary(usedBytes, info.totalBytes)); }); }); } diff --git a/src/com/android/settings/deviceinfo/storage/StorageUsageProgressBarPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageUsageProgressBarPreferenceController.java index be2a64abf58..23559d4db00 100644 --- a/src/com/android/settings/deviceinfo/storage/StorageUsageProgressBarPreferenceController.java +++ b/src/com/android/settings/deviceinfo/storage/StorageUsageProgressBarPreferenceController.java @@ -26,6 +26,7 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; +import com.android.settings.Utils; import com.android.settings.core.BasePreferenceController; import com.android.settingslib.utils.ThreadUtils; import com.android.settingslib.widget.UsageProgressBarPreference; @@ -92,7 +93,9 @@ public class StorageUsageProgressBarPreferenceController extends BasePreferenceC if (mStorageEntry.isPrivate()) { // StorageStatsManager can only query private storages. mTotalBytes = mStorageStatsManager.getTotalBytes(mStorageEntry.getFsUuid()); - mUsedBytes = mTotalBytes + // TODO(b/288103116): replace with new API to get TotalBytes before rounding + // once support by StorageManager. + mUsedBytes = Utils.getPrimaryStorageSize() - mStorageStatsManager.getFreeBytes(mStorageEntry.getFsUuid()); } else { final File rootFile = mStorageEntry.getPath();