diff --git a/res/drawable/ic_category_vd_theme_24.xml b/res/drawable/ic_category_vd_theme_24.xml
new file mode 100644
index 0000000..4cf30cf
--- /dev/null
+++ b/res/drawable/ic_category_vd_theme_24.xml
@@ -0,0 +1,25 @@
+<!--
+  ~ Copyright (C) 2024 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="960"
+        android:viewportHeight="960"
+        android:tint="?android:attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M260,440L480,80L700,440L260,440ZM700,880Q625,880 572.5,827.5Q520,775 520,700Q520,625 572.5,572.5Q625,520 700,520Q775,520 827.5,572.5Q880,625 880,700Q880,775 827.5,827.5Q775,880 700,880ZM120,860L120,540L440,540L440,860L120,860ZM700,800Q742,800 771,771Q800,742 800,700Q800,658 771,629Q742,600 700,600Q658,600 629,629Q600,658 600,700Q600,742 629,771Q658,800 700,800ZM200,780L360,780L360,620L200,620L200,780ZM402,360L558,360L480,234L402,360ZM480,360L480,360L480,360L480,360ZM360,620L360,620L360,620L360,620L360,620ZM700,700Q700,700 700,700Q700,700 700,700Q700,700 700,700Q700,700 700,700Q700,700 700,700Q700,700 700,700Q700,700 700,700Q700,700 700,700Z"/>
+</vector>
\ No newline at end of file
diff --git a/res/values/config.xml b/res/values/config.xml
index e3d8e7d..cd17ee0 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -604,8 +604,11 @@
     <!-- Media Uri to view audio storage category. -->
     <string name="config_audio_storage_category_uri" translatable="false">content://com.android.providers.media.documents/root/audio_root</string>
 
-    <!-- Media Uri to view documents & other storage category. -->
-    <string name="config_documents_and_other_storage_category_uri" translatable="false">content://com.android.providers.media.documents/root/documents_root</string>
+    <!-- Media Uri to view documents storage category. -->
+    <string name="config_documents_storage_category_uri" translatable="false">content://com.android.providers.media.documents/root/documents_root</string>
+
+    <!-- Media Uri to view "other" storage category. -->
+    <string name="config_other_storage_category_uri" translatable="false">content://com.android.providers.media.documents/root/others_root</string>
 
     <!-- Whether to show Smart Storage toggle -->
     <bool name="config_show_smart_storage_toggle">true</bool>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 55f42fa..860e1c8 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -10957,9 +10957,6 @@
     <!-- Preference label for the Apps storage section. [CHAR LIMIT=50] -->
     <string name="storage_apps">Apps</string>
 
-    <!-- Preference label for the Documents & other storage section. [CHAR LIMIT=50] -->
-    <string name="storage_documents_and_other">Documents &amp; other</string>
-
     <!-- Old Preference label for the System storage section. [CHAR LIMIT=50] -->
     <string name="storage_system">System</string>
 
diff --git a/res/xml/storage_category_fragment.xml b/res/xml/storage_category_fragment.xml
index 58bd891..8af6639 100644
--- a/res/xml/storage_category_fragment.xml
+++ b/res/xml/storage_category_fragment.xml
@@ -57,15 +57,20 @@
         android:icon="@drawable/ic_videogame_vd_theme_24"
         android:order="105"/>
     <com.android.settings.deviceinfo.StorageItemPreference
-        android:key="pref_documents_and_other"
-        android:title="@string/storage_documents_and_other"
+        android:key="pref_documents"
+        android:title="@string/storage_documents"
         android:icon="@drawable/ic_folder_vd_theme_24"
         android:order="106"/>
     <com.android.settings.deviceinfo.StorageItemPreference
+        android:key="pref_other"
+        android:title="@string/storage_other"
+        android:icon="@drawable/ic_category_vd_theme_24"
+        android:order="107"/>
+    <com.android.settings.deviceinfo.StorageItemPreference
         android:key="pref_trash"
         android:title="@string/storage_trash"
         android:icon="@drawable/ic_trash_can"
-        android:order="107"/>
+        android:order="108"/>
     <!-- Preference order 100~200 are 'ONLY' for storage category
     preferences that are sorted by size. -->
     <PreferenceCategory
diff --git a/res/xml/storage_dashboard_fragment.xml b/res/xml/storage_dashboard_fragment.xml
index fd866ad..f14f4ad 100644
--- a/res/xml/storage_dashboard_fragment.xml
+++ b/res/xml/storage_dashboard_fragment.xml
@@ -76,15 +76,20 @@
         android:icon="@drawable/ic_videogame_vd_theme_24"
         android:order="105"/>
     <com.android.settings.deviceinfo.StorageItemPreference
-        android:key="pref_documents_and_other"
-        android:title="@string/storage_documents_and_other"
+        android:key="pref_documents"
+        android:title="@string/storage_documents"
         android:icon="@drawable/ic_folder_vd_theme_24"
         android:order="106"/>
     <com.android.settings.deviceinfo.StorageItemPreference
+        android:key="pref_other"
+        android:title="@string/storage_other"
+        android:icon="@drawable/ic_category_vd_theme_24"
+        android:order="107"/>
+    <com.android.settings.deviceinfo.StorageItemPreference
         android:key="pref_trash"
         android:title="@string/storage_trash"
         android:icon="@drawable/ic_trash_can"
-        android:order="107"/>
+        android:order="108"/>
     <!-- Preference order 100~200 are 'ONLY' for storage category
     preferences that are sorted by size. -->
     <PreferenceCategory
diff --git a/src/com/android/settings/biometrics/face/FaceEnrollIntroductionInternal.java b/src/com/android/settings/biometrics/face/FaceEnrollIntroductionInternal.java
index 7dd29da..51d3a3a 100644
--- a/src/com/android/settings/biometrics/face/FaceEnrollIntroductionInternal.java
+++ b/src/com/android/settings/biometrics/face/FaceEnrollIntroductionInternal.java
@@ -16,8 +16,34 @@
 
 package com.android.settings.biometrics.face;
 
+import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
+
+import android.content.Intent;
+import android.os.Bundle;
+
+import androidx.fragment.app.FragmentActivity;
+
 /**
  * Wrapper of {@link FaceEnrollIntroduction} to use with a pre-defined task affinity.
+ *
+ * <p>Trampolines over to FaceEnrollIntroduction - doing this as a trampoline rather than having
+ * this activity extend FaceEnrollIntroduction works around b/331157120.
  */
-public class FaceEnrollIntroductionInternal extends FaceEnrollIntroduction {
+public class FaceEnrollIntroductionInternal extends FragmentActivity {
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        if (isFinishing()) {
+            return;
+        }
+
+        // Copy our intent to grab all extras. Drop flags so we don't start new tasks twice.
+        Intent trampoline = new Intent(getIntent());
+        trampoline.setFlags(0);
+
+        // Trampoline to the intended activity, and finish
+        trampoline.setClassName(SETTINGS_PACKAGE_NAME, FaceEnrollIntroduction.class.getName());
+        startActivity(trampoline);
+        finish();
+    }
 }
diff --git a/src/com/android/settings/datausage/ChartDataUsagePreference.java b/src/com/android/settings/datausage/ChartDataUsagePreference.java
index e8e2109..0c7db71 100644
--- a/src/com/android/settings/datausage/ChartDataUsagePreference.java
+++ b/src/com/android/settings/datausage/ChartDataUsagePreference.java
@@ -124,7 +124,7 @@
             UsageView chart, @NonNull List<NetworkUsageData> usageSummary) {
         final Context context = getContext();
         final StringBuilder contentDescription = new StringBuilder();
-        final int flags = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_ABBREV_MONTH;
+        final int flags = DateUtils.FORMAT_SHOW_DATE;
 
         // Setup a brief content description.
         final String startDate = DateUtils.formatDateTime(context, mStart, flags);
@@ -153,7 +153,7 @@
                 nodeDate = DateUtils.formatDateRange(context, data.getStartTime(),
                         data.getEndTime(), flags);
             }
-            nodeContentDescription = String.format(";%s %d%%", nodeDate, dataUsagePercentage);
+            nodeContentDescription = String.format("; %s, %d%%", nodeDate, dataUsagePercentage);
 
             contentDescription.append(nodeContentDescription);
         }
diff --git a/src/com/android/settings/deviceinfo/storage/StorageAsyncLoader.java b/src/com/android/settings/deviceinfo/storage/StorageAsyncLoader.java
index 4906cf2..7b8b237 100644
--- a/src/com/android/settings/deviceinfo/storage/StorageAsyncLoader.java
+++ b/src/com/android/settings/deviceinfo/storage/StorageAsyncLoader.java
@@ -98,15 +98,24 @@
                     media /* queryArgs */);
             result.systemSize = getSystemSize();
 
-            final Bundle documentsAndOtherQueryArgs = new Bundle();
-            documentsAndOtherQueryArgs.putString(ContentResolver.QUERY_ARG_SQL_SELECTION,
-                    FileColumns.MEDIA_TYPE + "!=" + FileColumns.MEDIA_TYPE_IMAGE
-                    + " AND " + FileColumns.MEDIA_TYPE + "!=" + FileColumns.MEDIA_TYPE_VIDEO
-                    + " AND " + FileColumns.MEDIA_TYPE + "!=" + FileColumns.MEDIA_TYPE_AUDIO
-                    + " AND " + FileColumns.MIME_TYPE + " IS NOT NULL");
-            result.documentsAndOtherSize = getFilesSize(info.id,
+            final Bundle documentsQueryArgs = new Bundle();
+            documentsQueryArgs.putString(ContentResolver.QUERY_ARG_SQL_SELECTION,
+                    FileColumns.MEDIA_TYPE + "=" + FileColumns.MEDIA_TYPE_DOCUMENT);
+            result.documentsSize = getFilesSize(info.id,
                     MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY),
-                    documentsAndOtherQueryArgs);
+                    documentsQueryArgs);
+
+            final Bundle otherQueryArgs = new Bundle();
+            otherQueryArgs.putString(ContentResolver.QUERY_ARG_SQL_SELECTION,
+                    FileColumns.MEDIA_TYPE + "!=" + FileColumns.MEDIA_TYPE_IMAGE
+                            + " AND " + FileColumns.MEDIA_TYPE + "!=" + FileColumns.MEDIA_TYPE_VIDEO
+                            + " AND " + FileColumns.MEDIA_TYPE + "!=" + FileColumns.MEDIA_TYPE_AUDIO
+                            + " AND " + FileColumns.MEDIA_TYPE + "!="
+                            + FileColumns.MEDIA_TYPE_DOCUMENT
+                            + " AND " + FileColumns.MIME_TYPE + " IS NOT NULL");
+            result.otherSize = getFilesSize(info.id,
+                    MediaStore.Files.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY),
+                    otherQueryArgs);
 
             final Bundle trashQueryArgs = new Bundle();
             trashQueryArgs.putInt(MediaStore.QUERY_ARG_MATCH_TRASHED, MediaStore.MATCH_ONLY);
@@ -236,7 +245,8 @@
         public long audioSize;
         public long imagesSize;
         public long videosSize;
-        public long documentsAndOtherSize;
+        public long documentsSize;
+        public long otherSize;
         public long trashSize;
         public long systemSize;
 
diff --git a/src/com/android/settings/deviceinfo/storage/StorageCacheHelper.java b/src/com/android/settings/deviceinfo/storage/StorageCacheHelper.java
index 50690cb..253427f 100644
--- a/src/com/android/settings/deviceinfo/storage/StorageCacheHelper.java
+++ b/src/com/android/settings/deviceinfo/storage/StorageCacheHelper.java
@@ -32,7 +32,8 @@
     private static final String AUDIO_SIZE_KEY = "audio_size_key";
     private static final String APPS_SIZE_KEY = "apps_size_key";
     private static final String GAMES_SIZE_KEY = "games_size_key";
-    private static final String DOCUMENTS_AND_OTHER_SIZE_KEY = "documents_and_other_size_key";
+    private static final String DOCUMENTS_SIZE_KEY = "documents_size_key";
+    private static final String OTHER_SIZE_KEY = "other_size_key";
     private static final String TRASH_SIZE_KEY = "trash_size_key";
     private static final String SYSTEM_SIZE_KEY = "system_size_key";
     private static final String TEMPORARY_FILES_SIZE_KEY = "temporary_files_size_key";
@@ -64,7 +65,8 @@
                 .putLong(AUDIO_SIZE_KEY, data.audioSize)
                 .putLong(APPS_SIZE_KEY, data.allAppsExceptGamesSize)
                 .putLong(GAMES_SIZE_KEY, data.gamesSize)
-                .putLong(DOCUMENTS_AND_OTHER_SIZE_KEY, data.documentsAndOtherSize)
+                .putLong(DOCUMENTS_SIZE_KEY, data.documentsSize)
+                .putLong(OTHER_SIZE_KEY, data.otherSize)
                 .putLong(TRASH_SIZE_KEY, data.trashSize)
                 .putLong(SYSTEM_SIZE_KEY, data.systemSize)
                 .putLong(TEMPORARY_FILES_SIZE_KEY, data.temporaryFilesSize)
@@ -108,7 +110,8 @@
         result.audioSize = mSharedPreferences.getLong(AUDIO_SIZE_KEY, 0);
         result.allAppsExceptGamesSize = mSharedPreferences.getLong(APPS_SIZE_KEY, 0);
         result.gamesSize = mSharedPreferences.getLong(GAMES_SIZE_KEY, 0);
-        result.documentsAndOtherSize = mSharedPreferences.getLong(DOCUMENTS_AND_OTHER_SIZE_KEY, 0);
+        result.documentsSize = mSharedPreferences.getLong(DOCUMENTS_SIZE_KEY, 0);
+        result.otherSize = mSharedPreferences.getLong(OTHER_SIZE_KEY, 0);
         result.trashSize = mSharedPreferences.getLong(TRASH_SIZE_KEY, 0);
         result.systemSize = mSharedPreferences.getLong(SYSTEM_SIZE_KEY, 0);
         result.temporaryFilesSize = mSharedPreferences.getLong(TEMPORARY_FILES_SIZE_KEY, 0);
@@ -126,7 +129,8 @@
         public long audioSize;
         public long imagesSize;
         public long videosSize;
-        public long documentsAndOtherSize;
+        public long documentsSize;
+        public long otherSize;
         public long trashSize;
         public long systemSize;
         public long temporaryFilesSize;
diff --git a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
index 62422ca..d4e2b7a 100644
--- a/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceController.java
@@ -92,7 +92,9 @@
     @VisibleForTesting
     static final String GAMES_KEY = "pref_games";
     @VisibleForTesting
-    static final String DOCUMENTS_AND_OTHER_KEY = "pref_documents_and_other";
+    static final String DOCUMENTS_KEY = "pref_documents";
+    @VisibleForTesting
+    static final String OTHER_KEY = "pref_other";
     @VisibleForTesting
     static final String SYSTEM_KEY = "pref_system";
     @VisibleForTesting
@@ -109,7 +111,9 @@
     @VisibleForTesting
     final Uri mAudioUri;
     @VisibleForTesting
-    final Uri mDocumentsAndOtherUri;
+    final Uri mDocumentsUri;
+    @VisibleForTesting
+    final Uri mOtherUri;
 
     // This value should align with the design of storage_dashboard_fragment.xml
     private static final int LAST_STORAGE_CATEGORY_PREFERENCE_ORDER = 200;
@@ -139,7 +143,9 @@
     @VisibleForTesting
     @Nullable StorageItemPreference mGamesPreference;
     @VisibleForTesting
-    @Nullable StorageItemPreference mDocumentsAndOtherPreference;
+    @Nullable StorageItemPreference mDocumentsPreference;
+    @VisibleForTesting
+    @Nullable StorageItemPreference mOtherPreference;
     @VisibleForTesting
     @Nullable StorageItemPreference mTrashPreference;
     @VisibleForTesting
@@ -186,8 +192,10 @@
                 .getString(R.string.config_videos_storage_category_uri));
         mAudioUri = Uri.parse(context.getResources()
                 .getString(R.string.config_audio_storage_category_uri));
-        mDocumentsAndOtherUri = Uri.parse(context.getResources()
-                .getString(R.string.config_documents_and_other_storage_category_uri));
+        mDocumentsUri = Uri.parse(context.getResources()
+                .getString(R.string.config_documents_storage_category_uri));
+        mOtherUri = Uri.parse(context.getResources()
+                .getString(R.string.config_other_storage_category_uri));
     }
 
     @VisibleForTesting
@@ -224,8 +232,11 @@
             case GAMES_KEY:
                 launchGamesIntent();
                 return true;
-            case DOCUMENTS_AND_OTHER_KEY:
-                launchActivityWithUri(mDocumentsAndOtherUri);
+            case DOCUMENTS_KEY:
+                launchActivityWithUri(mDocumentsUri);
+                return true;
+            case OTHER_KEY:
+                launchActivityWithUri(mOtherUri);
                 return true;
             case SYSTEM_KEY:
                 final SystemInfoFragment dialog = new SystemInfoFragment();
@@ -311,9 +322,11 @@
         // If we don't have a shared volume for our internal storage (or the shared volume isn't
         // mounted as readable for whatever reason), we should hide the File preference.
         if (visible) {
-            mDocumentsAndOtherPreference.setVisible(mIsDocumentsPrefShown);
+            mDocumentsPreference.setVisible(mIsDocumentsPrefShown);
+            mOtherPreference.setVisible(mIsDocumentsPrefShown);
         } else {
-            mDocumentsAndOtherPreference.setVisible(false);
+            mDocumentsPreference.setVisible(false);
+            mOtherPreference.setVisible(false);
         }
     }
 
@@ -330,20 +343,24 @@
         if (mPrivateStorageItemPreferences == null) {
             mPrivateStorageItemPreferences = new ArrayList<>();
 
-            mPrivateStorageItemPreferences.add(mImagesPreference);
-            mPrivateStorageItemPreferences.add(mVideosPreference);
-            mPrivateStorageItemPreferences.add(mAudioPreference);
-            mPrivateStorageItemPreferences.add(mAppsPreference);
-            mPrivateStorageItemPreferences.add(mGamesPreference);
-            mPrivateStorageItemPreferences.add(mDocumentsAndOtherPreference);
+            // Adding categories in the reverse order so that
+            // They would be in the right order after sorting
             mPrivateStorageItemPreferences.add(mTrashPreference);
+            mPrivateStorageItemPreferences.add(mOtherPreference);
+            mPrivateStorageItemPreferences.add(mDocumentsPreference);
+            mPrivateStorageItemPreferences.add(mGamesPreference);
+            mPrivateStorageItemPreferences.add(mAppsPreference);
+            mPrivateStorageItemPreferences.add(mAudioPreference);
+            mPrivateStorageItemPreferences.add(mVideosPreference);
+            mPrivateStorageItemPreferences.add(mImagesPreference);
         }
         mScreen.removePreference(mImagesPreference);
         mScreen.removePreference(mVideosPreference);
         mScreen.removePreference(mAudioPreference);
         mScreen.removePreference(mAppsPreference);
         mScreen.removePreference(mGamesPreference);
-        mScreen.removePreference(mDocumentsAndOtherPreference);
+        mScreen.removePreference(mDocumentsPreference);
+        mScreen.removePreference(mOtherPreference);
         mScreen.removePreference(mTrashPreference);
 
         // Sort display order by size.
@@ -378,7 +395,8 @@
         tintPreference(mAudioPreference);
         tintPreference(mAppsPreference);
         tintPreference(mGamesPreference);
-        tintPreference(mDocumentsAndOtherPreference);
+        tintPreference(mDocumentsPreference);
+        tintPreference(mOtherPreference);
         tintPreference(mSystemPreference);
         tintPreference(mTemporaryFilesPreference);
         tintPreference(mTrashPreference);
@@ -408,7 +426,8 @@
         mAudioPreference = screen.findPreference(AUDIO_KEY);
         mAppsPreference = screen.findPreference(APPS_KEY);
         mGamesPreference = screen.findPreference(GAMES_KEY);
-        mDocumentsAndOtherPreference = screen.findPreference(DOCUMENTS_AND_OTHER_KEY);
+        mDocumentsPreference = screen.findPreference(DOCUMENTS_KEY);
+        mOtherPreference = screen.findPreference(OTHER_KEY);
         mCategorySplitterPreferenceCategory = screen.findPreference(CATEGORY_SPLITTER);
         mSystemPreference = screen.findPreference(SYSTEM_KEY);
         mTemporaryFilesPreference = screen.findPreference(TEMPORARY_FILES_KEY);
@@ -434,8 +453,8 @@
         mAudioPreference.setStorageSize(storageCache.audioSize, mTotalSize, animate);
         mAppsPreference.setStorageSize(storageCache.allAppsExceptGamesSize, mTotalSize, animate);
         mGamesPreference.setStorageSize(storageCache.gamesSize, mTotalSize, animate);
-        mDocumentsAndOtherPreference.setStorageSize(storageCache.documentsAndOtherSize, mTotalSize,
-                animate);
+        mDocumentsPreference.setStorageSize(storageCache.documentsSize, mTotalSize, animate);
+        mOtherPreference.setStorageSize(storageCache.otherSize, mTotalSize, animate);
         mTrashPreference.setStorageSize(storageCache.trashSize, mTotalSize, animate);
         if (mSystemPreference != null) {
             mSystemPreference.setStorageSize(storageCache.systemSize, mTotalSize, animate);
@@ -471,7 +490,8 @@
         storageCache.audioSize = data.audioSize;
         storageCache.allAppsExceptGamesSize = data.allAppsExceptGamesSize;
         storageCache.gamesSize = data.gamesSize;
-        storageCache.documentsAndOtherSize = data.documentsAndOtherSize;
+        storageCache.documentsSize = data.documentsSize;
+        storageCache.otherSize = data.otherSize;
         storageCache.trashSize = data.trashSize;
         storageCache.systemSize = data.systemSize;
         // Everything else that hasn't already been attributed is tracked as
@@ -484,7 +504,8 @@
                             + otherData.audioSize
                             + otherData.videosSize
                             + otherData.imagesSize
-                            + otherData.documentsAndOtherSize
+                            + otherData.documentsSize
+                            + otherData.otherSize
                             + otherData.trashSize
                             + otherData.allAppsExceptGamesSize;
             attributedSize -= otherData.duplicateCodeSize;
diff --git a/src/com/android/settings/spa/network/SimsSection.kt b/src/com/android/settings/spa/network/SimsSection.kt
index bf0a33e..df92b37 100644
--- a/src/com/android/settings/spa/network/SimsSection.kt
+++ b/src/com/android/settings/spa/network/SimsSection.kt
@@ -24,6 +24,8 @@
 import androidx.compose.foundation.layout.Column
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.outlined.Add
+import androidx.compose.material.icons.outlined.SimCard
+import androidx.compose.material.icons.outlined.SimCardDownload
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.State
 import androidx.compose.runtime.remember
@@ -65,6 +67,7 @@
         model = object : SwitchPreferenceModel {
             override val title = subInfo.displayName.toString()
             override val summary = { phoneNumber.value ?: "" }
+            override val icon = @Composable { SimIcon(subInfo.isEmbedded) }
             override val checked = { checked.value }
             override val onCheckedChange = { newChecked: Boolean ->
                 SubscriptionUtil.startToggleSubscriptionDialogActivity(
@@ -81,6 +84,11 @@
 }
 
 @Composable
+private fun SimIcon(isEmbedded: Boolean) {
+    SettingsIcon(if (isEmbedded) Icons.Outlined.SimCardDownload else Icons.Outlined.SimCard)
+}
+
+@Composable
 fun phoneNumber(subInfo: SubscriptionInfo): State<String?> {
     val context = LocalContext.current
     return remember(subInfo) {
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageCacheHelperTest.java b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageCacheHelperTest.java
index a26ea1d..6468446 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageCacheHelperTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageCacheHelperTest.java
@@ -36,6 +36,7 @@
     private static final long FAKE_APPS_SIZE = 4000L;
     private static final long FAKE_GAMES_SIZE = 5000L;
     private static final long FAKE_DOCS_SIZE = 1500L;
+    private static final long FAKE_OTHER_SIZE = 2000L;
     private static final long FAKE_TRASH_SIZE = 500L;
     private static final long FAKE_SYSTEM_SIZE = 2300L;
     private static final long FAKE_TOTAL_SIZE = 256000L;
@@ -72,6 +73,8 @@
 
         assertThat(storageCache.imagesSize).isEqualTo(FAKE_IMAGES_SIZE);
         assertThat(storageCache.temporaryFilesSize).isEqualTo(FAKE_TEMPORARY_FILES_SIZE);
+        assertThat(storageCache.documentsSize).isEqualTo(FAKE_DOCS_SIZE);
+        assertThat(storageCache.otherSize).isEqualTo(FAKE_OTHER_SIZE);
         assertThat(storageCache.totalSize).isEqualTo(0);
     }
 
@@ -97,7 +100,8 @@
         result.trashSize = FAKE_TRASH_SIZE;
         result.systemSize = FAKE_SYSTEM_SIZE;
         result.imagesSize = FAKE_IMAGES_SIZE;
-        result.documentsAndOtherSize = FAKE_DOCS_SIZE;
+        result.documentsSize = FAKE_DOCS_SIZE;
+        result.otherSize = FAKE_OTHER_SIZE;
         result.audioSize = FAKE_AUDIO_SIZE;
         result.gamesSize = FAKE_GAMES_SIZE;
         result.videosSize = FAKE_VIDEOS_SIZE;
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java
index 2590f52..306d80c 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/storage/StorageItemPreferenceControllerTest.java
@@ -124,8 +124,10 @@
         apps.setIcon(R.drawable.ic_storage_apps);
         final StorageItemPreference games = spy(new StorageItemPreference(mContext));
         games.setIcon(R.drawable.ic_videogame_vd_theme_24);
-        final StorageItemPreference documentsAndOther = spy(new StorageItemPreference(mContext));
-        documentsAndOther.setIcon(R.drawable.ic_folder_vd_theme_24);
+        final StorageItemPreference documents = spy(new StorageItemPreference(mContext));
+        documents.setIcon(R.drawable.ic_folder_vd_theme_24);
+        final StorageItemPreference other = spy(new StorageItemPreference(mContext));
+        other.setIcon(R.drawable.ic_category_vd_theme_24);
         final StorageItemPreference system = spy(new StorageItemPreference(mContext));
         system.setIcon(R.drawable.ic_android_vd_theme_24);
         final StorageItemPreference temporaryFiles = spy(new StorageItemPreference(mContext));
@@ -147,8 +149,10 @@
                 .thenReturn(apps);
         when(screen.findPreference(eq(StorageItemPreferenceController.GAMES_KEY)))
                 .thenReturn(games);
-        when(screen.findPreference(eq(StorageItemPreferenceController.DOCUMENTS_AND_OTHER_KEY)))
-                .thenReturn(documentsAndOther);
+        when(screen.findPreference(eq(StorageItemPreferenceController.DOCUMENTS_KEY)))
+                .thenReturn(documents);
+        when(screen.findPreference(eq(StorageItemPreferenceController.OTHER_KEY)))
+                .thenReturn(other);
         when(screen.findPreference(eq(StorageItemPreferenceController.SYSTEM_KEY)))
                 .thenReturn(system);
         when(screen.findPreference(eq(StorageItemPreferenceController.TEMPORARY_FILES_KEY)))
@@ -225,7 +229,8 @@
         assertThat(mController.mAudioPreference.isVisible()).isFalse();
         assertThat(mController.mAppsPreference.isVisible()).isFalse();
         assertThat(mController.mGamesPreference.isVisible()).isFalse();
-        assertThat(mController.mDocumentsAndOtherPreference.isVisible()).isFalse();
+        assertThat(mController.mDocumentsPreference.isVisible()).isFalse();
+        assertThat(mController.mOtherPreference.isVisible()).isFalse();
         assertThat(mController.mSystemPreference.isVisible()).isFalse();
         assertThat(mController.mTemporaryFilesPreference.isVisible()).isFalse();
         assertThat(mController.mTrashPreference.isVisible()).isFalse();
@@ -278,8 +283,8 @@
     }
 
     @Test
-    public void launchDocumentsAndOtherIntent_resolveActionViewNull_settingsIntent() {
-        mPreference.setKey(StorageItemPreferenceController.DOCUMENTS_AND_OTHER_KEY);
+    public void launchDocumentsIntent_resolveActionViewNull_settingsIntent() {
+        mPreference.setKey(StorageItemPreferenceController.DOCUMENTS_KEY);
         final Context mockContext = getMockContext();
         mController = new StorageItemPreferenceController(mockContext, mFragment, mVolume,
                 mSvp, ProfileSelectFragment.ProfileType.PERSONAL);
@@ -291,7 +296,24 @@
 
         Intent intent = argumentCaptor.getValue();
         assertThat(intent.getAction()).isEqualTo(Intent.ACTION_VIEW);
-        assertThat(intent.getData()).isEqualTo(mController.mDocumentsAndOtherUri);
+        assertThat(intent.getData()).isEqualTo(mController.mDocumentsUri);
+    }
+
+    @Test
+    public void launchOtherIntent_resolveActionViewNull_settingsIntent() {
+        mPreference.setKey(StorageItemPreferenceController.OTHER_KEY);
+        final Context mockContext = getMockContext();
+        mController = new StorageItemPreferenceController(mockContext, mFragment, mVolume,
+                mSvp, ProfileSelectFragment.ProfileType.PERSONAL);
+        mController.handlePreferenceTreeClick(mPreference);
+
+        final ArgumentCaptor<Intent> argumentCaptor = ArgumentCaptor.forClass(Intent.class);
+        verify(mockContext).startActivityAsUser(argumentCaptor.capture(),
+                nullable(UserHandle.class));
+
+        Intent intent = argumentCaptor.getValue();
+        assertThat(intent.getAction()).isEqualTo(Intent.ACTION_VIEW);
+        assertThat(intent.getData()).isEqualTo(mController.mOtherUri);
     }
 
     @Test
@@ -359,7 +381,8 @@
         result.imagesSize = MEGABYTE_IN_BYTES * 350;
         result.videosSize = GIGABYTE_IN_BYTES * 30;
         result.audioSize = MEGABYTE_IN_BYTES * 40;
-        result.documentsAndOtherSize = MEGABYTE_IN_BYTES * 50;
+        result.documentsSize = MEGABYTE_IN_BYTES * 50;
+        result.otherSize = MEGABYTE_IN_BYTES * 70;
         result.trashSize = KILOBYTE_IN_BYTES * 100;
         result.allAppsExceptGamesSize = MEGABYTE_IN_BYTES * 90;
         result.systemSize = MEGABYTE_IN_BYTES * 60;
@@ -373,8 +396,8 @@
         assertThat(mController.mAudioPreference.getSummary().toString()).isEqualTo("40 MB");
         assertThat(mController.mAppsPreference.getSummary().toString()).isEqualTo("90 MB");
         assertThat(mController.mGamesPreference.getSummary().toString()).isEqualTo("80 MB");
-        assertThat(mController.mDocumentsAndOtherPreference.getSummary().toString())
-                .isEqualTo("50 MB");
+        assertThat(mController.mDocumentsPreference.getSummary().toString()).isEqualTo("50 MB");
+        assertThat(mController.mOtherPreference.getSummary().toString()).isEqualTo("70 MB");
         assertThat(mController.mTrashPreference.getSummary().toString()).isEqualTo("100 kB");
         assertThat(mController.mSystemPreference.getSummary().toString())
                 .isEqualTo("60 MB");
@@ -392,8 +415,8 @@
         verify(mController.mAudioPreference, times(2)).setIcon(nullable(Drawable.class));
         verify(mController.mAppsPreference, times(2)).setIcon(nullable(Drawable.class));
         verify(mController.mGamesPreference, times(2)).setIcon(nullable(Drawable.class));
-        verify(mController.mDocumentsAndOtherPreference, times(2))
-                .setIcon(nullable(Drawable.class));
+        verify(mController.mDocumentsPreference, times(2)).setIcon(nullable(Drawable.class));
+        verify(mController.mOtherPreference, times(2)).setIcon(nullable(Drawable.class));
         verify(mController.mSystemPreference, times(2)).setIcon(nullable(Drawable.class));
         verify(mController.mTemporaryFilesPreference, times(2)).setIcon(nullable(Drawable.class));
         verify(mController.mTrashPreference, times(2)).setIcon(nullable(Drawable.class));
@@ -408,7 +431,8 @@
 
         mController.displayPreference(mPreferenceScreen);
 
-        assertThat(mController.mDocumentsAndOtherPreference.isVisible()).isTrue();
+        assertThat(mController.mDocumentsPreference.isVisible()).isTrue();
+        assertThat(mController.mOtherPreference.isVisible()).isTrue();
     }
 
     @Test
@@ -423,7 +447,8 @@
 
         mController.setPrivateStorageCategoryPreferencesVisibility(true);
 
-        assertThat(mController.mDocumentsAndOtherPreference.isVisible()).isFalse();
+        assertThat(mController.mDocumentsPreference.isVisible()).isFalse();
+        assertThat(mController.mOtherPreference.isVisible()).isFalse();
     }
 
     @Test
@@ -438,7 +463,8 @@
         // And we bring it back.
         mController.setVolume(mVolume);
 
-        assertThat(mController.mDocumentsAndOtherPreference.isVisible()).isTrue();
+        assertThat(mController.mDocumentsPreference.isVisible()).isTrue();
+        assertThat(mController.mOtherPreference.isVisible()).isTrue();
     }
 
     @Test
@@ -458,7 +484,8 @@
         assertThat(mController.mAudioPreference.isVisible()).isFalse();
         assertThat(mController.mAppsPreference.isVisible()).isFalse();
         assertThat(mController.mGamesPreference.isVisible()).isFalse();
-        assertThat(mController.mDocumentsAndOtherPreference.isVisible()).isFalse();
+        assertThat(mController.mDocumentsPreference.isVisible()).isFalse();
+        assertThat(mController.mOtherPreference.isVisible()).isFalse();
         assertThat(mController.mSystemPreference.isVisible()).isFalse();
         assertThat(mController.mTemporaryFilesPreference.isVisible()).isFalse();
         assertThat(mController.mTrashPreference.isVisible()).isFalse();
