diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 0a72b75..f2ed29c 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -160,8 +160,7 @@
             </intent-filter>
         </receiver>
 
-        <activity android:name=".SubSettings"
-                android:parentActivityName="Settings"/>
+        <activity android:name=".SubSettings"/>
 
         <activity android:name=".Settings$CreateShortcutActivity"
                   android:label="@string/settings_shortcut">
@@ -178,8 +177,7 @@
         <activity
             android:name=".Settings$NetworkDashboardActivity"
             android:label="@string/network_dashboard_title"
-            android:icon="@drawable/ic_homepage_network"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_homepage_network">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.WIRELESS_SETTINGS" />
                 <action android:name="android.settings.AIRPLANE_MODE_SETTINGS" />
@@ -198,8 +196,7 @@
         </activity>
 
         <activity android:name=".Settings$MobileNetworkListActivity"
-                  android:label="@string/network_settings_title"
-                  android:parentActivityName="Settings$NetworkDashboardActivity">
+                  android:label="@string/network_settings_title">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.MOBILE_NETWORK_LIST" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -213,8 +210,7 @@
         <activity
             android:name=".Settings$ConnectedDeviceDashboardActivity"
             android:label="@string/connected_devices_dashboard_title"
-            android:icon="@drawable/ic_devices_other"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_devices_other">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.BLUETOOTH_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -250,8 +246,7 @@
             android:name="Settings$WifiSettingsActivity"
             android:label="@string/wifi_settings"
             android:icon="@drawable/ic_settings_wireless"
-            android:configChanges="orientation|keyboardHidden|screenSize"
-            android:parentActivityName="Settings">
+            android:configChanges="orientation|keyboardHidden|screenSize">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.WIFI_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -270,8 +265,7 @@
             android:name="Settings$WifiSettings2Activity"
             android:label="@string/wifi_settings"
             android:icon="@drawable/ic_settings_wireless"
-            android:configChanges="orientation|keyboardHidden|screenSize"
-            android:parentActivityName="Settings">
+            android:configChanges="orientation|keyboardHidden|screenSize">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.WIFI_SETTINGS2" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -287,8 +281,7 @@
         </activity>
 
         <activity
-            android:name=".wifi.WifiPickerActivity"
-            android:parentActivityName="Settings">
+            android:name=".wifi.WifiPickerActivity">
             <intent-filter android:priority="1">
                 <action android:name="android.net.wifi.PICK_WIFI_NETWORK" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -301,8 +294,7 @@
             android:name="Settings$ConfigureWifiSettingsActivity"
             android:label="@string/wifi_configure_settings_preference_title"
             android:icon="@drawable/ic_settings_wireless"
-            android:configChanges="orientation|keyboardHidden|screenSize"
-            android:parentActivityName="Settings">
+            android:configChanges="orientation|keyboardHidden|screenSize">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.WIFI_IP_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -322,8 +314,7 @@
             android:name="Settings$SavedAccessPointsSettingsActivity"
             android:label="@string/wifi_saved_access_points_label"
             android:icon="@drawable/ic_settings_wireless"
-            android:configChanges="orientation|keyboardHidden|screenSize"
-            android:parentActivityName="Settings">
+            android:configChanges="orientation|keyboardHidden|screenSize">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.WIFI_SAVED_NETWORK_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -393,7 +384,6 @@
                 android:label="@string/apn_settings"
                 android:launchMode="singleTask"
                 android:configChanges="orientation|keyboardHidden|screenSize"
-                android:parentActivityName="Settings$NetworkDashboardActivity"
                 android:process="com.android.phone">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.APN_SETTINGS" />
@@ -495,8 +485,7 @@
         <activity
             android:name="Settings$TetherSettingsActivity"
             android:label="@string/tether_settings_title_all"
-            android:icon="@drawable/ic_settings_wireless"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_settings_wireless">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -509,8 +498,7 @@
         <activity
             android:name="Settings$WifiTetherSettingsActivity"
             android:label="@string/wifi_hotspot_checkbox_text"
-            android:icon="@drawable/ic_wifi_tethering"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_wifi_tethering">
             <intent-filter>
                 <action android:name="com.android.settings.WIFI_TETHER_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -534,8 +522,7 @@
                 android:value="com.android.settings.TetherSettings" />
         </activity-alias>
 
-        <activity android:name="Settings$WifiP2pSettingsActivity"
-                  android:parentActivityName="Settings">
+        <activity android:name="Settings$WifiP2pSettingsActivity">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -548,8 +535,7 @@
         <activity
             android:name="Settings$VpnSettingsActivity"
             android:label="@string/vpn_settings_title"
-            android:icon="@drawable/ic_settings_wireless"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_settings_wireless">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.VPN_SETTINGS" />
                 <action android:name="android.net.vpn.SETTINGS" />
@@ -567,8 +553,7 @@
 
         <activity
             android:name="Settings$DataSaverSummaryActivity"
-            android:label="@string/data_saver_title"
-            android:parentActivityName="Settings">
+            android:label="@string/data_saver_title">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.DATA_SAVER_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -580,8 +565,7 @@
         <activity
             android:name="Settings$DateTimeSettingsActivity"
             android:label="@string/date_and_time"
-            android:icon="@drawable/ic_settings_date_time"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_settings_date_time">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.DATE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -601,8 +585,7 @@
         <activity
             android:name="Settings$LocalePickerActivity"
             android:label="@string/language_picker_title"
-            android:icon="@drawable/ic_settings_language"
-            android:parentActivityName="Settings$LanguageAndInputSettingsActivity">
+            android:icon="@drawable/ic_settings_language">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.LOCALE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -627,8 +610,7 @@
         <activity
             android:name=".Settings$LanguageAndInputSettingsActivity"
             android:label="@string/language_settings"
-            android:icon="@drawable/ic_settings_language"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_settings_language">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
@@ -692,8 +674,7 @@
 
         <activity
             android:name="Settings$SpellCheckersSettingsActivity"
-            android:label="@string/spellcheckers_settings_title"
-            android:parentActivityName="Settings">
+            android:label="@string/spellcheckers_settings_title">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.VOICE_LAUNCH" />
@@ -719,8 +700,7 @@
 
         <activity
             android:name="Settings$UserDictionarySettingsActivity"
-            android:label="@string/user_dict_settings_title"
-            android:parentActivityName="Settings">
+            android:label="@string/user_dict_settings_title">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.USER_DICTIONARY_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -797,8 +777,7 @@
             android:label="@string/zen_onboarding_dnd_visual_disturbances_header"
             android:icon="@drawable/ic_notifications"
             android:theme="@*android:style/Theme.DeviceDefault.Settings.Dialog.NoActionBar"
-            android:exported="true"
-            android:parentActivityName="Settings">
+            android:exported="true">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.ZEN_MODE_ONBOARDING" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -808,8 +787,7 @@
             android:name="Settings$ZenModeAutomationSettingsActivity"
             android:label="@string/zen_mode_automation_settings_title"
             android:icon="@drawable/ic_notifications"
-            android:exported="true"
-            android:parentActivityName="Settings$ZenModeSettingsActivity">
+            android:exported="true">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.ZEN_MODE_AUTOMATION_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -872,8 +850,7 @@
 
         <activity
             android:name="Settings$ZenModeScheduleRuleSettingsActivity"
-            android:exported="true"
-            android:parentActivityName="Settings$ZenModeAutomationSettingsActivity">
+            android:exported="true">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.ZEN_MODE_SCHEDULE_RULE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -890,8 +867,7 @@
 
         <activity
             android:name="Settings$ZenModeEventRuleSettingsActivity"
-            android:exported="true"
-            android:parentActivityName="Settings$ZenModeAutomationSettingsActivity">
+            android:exported="true">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.ZEN_MODE_EVENT_RULE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -905,8 +881,7 @@
         <activity
             android:name="Settings$DisplaySettingsActivity"
             android:label="@string/display_settings"
-            android:icon="@drawable/ic_homepage_display"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_homepage_display">
             <intent-filter android:priority="1">
                 <action android:name="com.android.settings.DISPLAY_SETTINGS" />
                 <action android:name="android.settings.DISPLAY_SETTINGS" />
@@ -982,8 +957,7 @@
         <activity
             android:name="SettingsLicenseActivity"
             android:label="@string/settings_license_activity_title"
-            android:configChanges="orientation|screenSize"
-            android:parentActivityName="Settings">
+            android:configChanges="orientation|screenSize">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.LICENSE" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -1056,8 +1030,7 @@
 
         <activity
             android:name="Settings$HighPowerApplicationsActivity"
-            android:label="@string/high_power_apps"
-            android:parentActivityName="Settings">
+            android:label="@string/high_power_apps">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.IGNORE_BATTERY_OPTIMIZATION_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -1155,8 +1128,7 @@
 
         <!-- Provide direct entry into manage apps showing running services. -->
         <activity android:name="Settings$RunningServicesActivity"
-                android:label="@string/runningservices_settings_title"
-                android:parentActivityName="Settings">
+                android:label="@string/runningservices_settings_title">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -1172,8 +1144,7 @@
         <!-- Provide direct entry into manage apps showing storage usage of apps. -->
         <activity
             android:name="Settings$StorageUseActivity"
-            android:label="@string/storageuse_settings_title"
-            android:parentActivityName="Settings">
+            android:label="@string/storageuse_settings_title">
             <intent-filter android:priority="1">
                 <action android:name="android.intent.action.MANAGE_PACKAGE_STORAGE" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -1192,8 +1163,7 @@
 
         <activity
             android:name="Settings$NotificationStationActivity"
-            android:label="@string/notification_log_title"
-            android:parentActivityName="Settings">
+            android:label="@string/notification_log_title">
             <intent-filter android:priority="22">
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="com.android.settings.SHORTCUT" />
@@ -1234,8 +1204,7 @@
             android:name="Settings$ScanningSettingsActivity"
             android:label="@string/location_scanning_screen_title"
             android:icon="@drawable/ic_homepage_location"
-            android:configChanges="orientation|keyboardHidden|screenSize"
-            android:parentActivityName="Settings">
+            android:configChanges="orientation|keyboardHidden|screenSize">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.LOCATION_SCANNING_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -1250,8 +1219,7 @@
             android:name=".Settings$SecurityDashboardActivity"
             android:label="@string/security_settings_title"
             android:icon="@drawable/ic_homepage_security"
-            android:configChanges="orientation|keyboardHidden|screenSize"
-            android:parentActivityName="Settings">
+            android:configChanges="orientation|keyboardHidden|screenSize">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.SECURITY_SETTINGS" />
                 <action android:name="android.credentials.UNLOCK" />
@@ -1281,8 +1249,7 @@
         <activity
             android:name="Settings$TrustedCredentialsSettingsActivity"
             android:label="@string/trusted_credentials"
-            android:icon="@drawable/ic_settings_security"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_settings_security">
             <intent-filter android:priority="1">
                 <action android:name="com.android.settings.TRUSTED_CREDENTIALS" />
                 <action android:name="com.android.settings.TRUSTED_CREDENTIALS_USER" />
@@ -1297,8 +1264,7 @@
         <activity android:name="Settings$PrivacySettingsActivity"
                 android:label="@string/privacy_settings_title"
                 android:icon="@drawable/ic_settings_backup"
-                android:configChanges="orientation|keyboardHidden|screenSize"
-                android:parentActivityName="Settings">
+                android:configChanges="orientation|keyboardHidden|screenSize">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -1349,8 +1315,7 @@
 
         <activity
             android:name="Settings$DeviceAdminSettingsActivity"
-            android:label="@string/device_admin_settings_title"
-            android:parentActivityName="Settings">
+            android:label="@string/device_admin_settings_title">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -1401,8 +1366,7 @@
 
         <activity
             android:name="Settings$AppUsageAccessSettingsActivity"
-            android:label="@string/usage_access_title"
-            android:parentActivityName="Settings">
+            android:label="@string/usage_access_title">
             <intent-filter>
                 <action android:name="android.settings.USAGE_ACCESS_SETTINGS"/>
                 <category android:name="android.intent.category.DEFAULT"/>
@@ -1429,8 +1393,7 @@
             android:name="Settings$AccessibilitySettingsActivity"
             android:label="@string/accessibility_settings"
             android:icon="@drawable/ic_homepage_accessibility"
-            android:configChanges="orientation|keyboardHidden|screenSize"
-            android:parentActivityName="Settings">
+            android:configChanges="orientation|keyboardHidden|screenSize">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.ACCESSIBILITY_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -1491,8 +1454,7 @@
 
         <activity
             android:name="Settings$AccessibilityDaltonizerSettingsActivity"
-            android:label="@string/accessibility_display_daltonizer_preference_title"
-            android:parentActivityName="Settings">
+            android:label="@string/accessibility_display_daltonizer_preference_title">
             <intent-filter android:priority="1">
                 <action android:name="com.android.settings.ACCESSIBILITY_COLOR_SPACE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -1509,8 +1471,7 @@
 
         <activity
             android:name="Settings$CaptioningSettingsActivity"
-            android:label="@string/accessibility_captioning_title"
-            android:parentActivityName="Settings">
+            android:label="@string/accessibility_captioning_title">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.CAPTIONING_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -1541,8 +1502,7 @@
 
         <activity
             android:name="Settings$EnterprisePrivacySettingsActivity"
-            android:label="@string/enterprise_privacy_settings"
-            android:parentActivityName="Settings">
+            android:label="@string/enterprise_privacy_settings">
             <intent-filter>
                 <action android:name="android.settings.ENTERPRISE_PRIVACY_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -1807,8 +1767,7 @@
         <activity
             android:name=".Settings$StorageDashboardActivity"
             android:label="@string/storage_settings"
-            android:icon="@drawable/ic_homepage_storage"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_homepage_storage">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.INTERNAL_STORAGE_SETTINGS" />
                 <action android:name="android.settings.MEMORY_CARD_SETTINGS" />
@@ -1833,8 +1792,7 @@
 
         <activity
             android:name="Settings$PublicVolumeSettingsActivity"
-            android:label="@string/storage_settings_title"
-            android:parentActivityName="Settings">
+            android:label="@string/storage_settings_title">
             <intent-filter>
                 <action android:name="android.provider.action.DOCUMENT_ROOT_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -1915,7 +1873,6 @@
             android:name="Settings$DevelopmentSettingsDashboardActivity"
             android:label="@string/development_settings_title"
             android:icon="@drawable/ic_settings_development"
-            android:parentActivityName="Settings"
             android:enabled="false">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.APPLICATION_DEVELOPMENT_SETTINGS" />
@@ -1954,8 +1911,7 @@
         <activity
             android:name="Settings$PrintSettingsActivity"
             android:label="@string/print_settings"
-            android:icon="@drawable/ic_settings_print"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_settings_print">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.ACTION_PRINT_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -1970,8 +1926,7 @@
         </activity>
 
         <activity android:name="Settings$PrintJobSettingsActivity"
-                android:label="@string/print_print_job"
-                android:parentActivityName="Settings$PrintSettingsActivity">
+                android:label="@string/print_print_job">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.ACTION_PRINT_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2087,8 +2042,7 @@
         <!-- NFC settings -->
         <activity
             android:name="Settings$AndroidBeamSettingsActivity"
-            android:label="@string/android_beam_settings_title"
-            android:parentActivityName="Settings">
+            android:label="@string/android_beam_settings_title">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.NFCSHARING_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2102,8 +2056,7 @@
         <activity
             android:name="Settings$WifiDisplaySettingsActivity"
             android:label="@string/wifi_display_settings_title"
-            android:icon="@drawable/ic_cast_24dp"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_cast_24dp">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.CAST_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2146,8 +2099,7 @@
         </activity>
 
         <activity android:name="UsageStatsActivity"
-                  android:label="@string/usage_stats_label"
-                  android:parentActivityName="Settings">
+                  android:label="@string/usage_stats_label">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.DEVELOPMENT_PREFERENCE" />
@@ -2157,8 +2109,7 @@
         <activity
             android:name="Settings$PowerUsageSummaryActivity"
             android:label="@string/power_usage_summary_title"
-            android:icon="@drawable/ic_settings_battery"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_settings_battery">
             <intent-filter android:priority="1">
                 <action android:name="android.intent.action.POWER_USAGE_SUMMARY" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2174,8 +2125,7 @@
         <activity
             android:name="Settings$BatterySaverSettingsActivity"
             android:label="@string/battery_saver"
-            android:icon="@drawable/ic_settings_battery"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_settings_battery">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.BATTERY_SAVER_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2199,8 +2149,7 @@
 
         <activity
             android:name="Settings$AccountSyncSettingsActivity"
-            android:label="@string/account_sync_settings_title"
-            android:parentActivityName="Settings">
+            android:label="@string/account_sync_settings_title">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.ACCOUNT_SYNC_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2213,7 +2162,6 @@
         <activity
             android:name="Settings$ManagedProfileSettingsActivity"
             android:label="@string/managed_profile_settings_title"
-            android:parentActivityName="Settings"
             android:permission="android.permission.MANAGE_USERS">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.MANAGED_PROFILE_SETTINGS" />
@@ -2227,8 +2175,7 @@
             android:name="com.android.settings.accounts.AddAccountSettings"
             android:theme="@android:style/Theme.Translucent.NoTitleBar"
             android:configChanges="orientation|keyboardHidden|screenSize"
-            android:label="@string/header_add_an_account"
-            android:parentActivityName="Settings">
+            android:label="@string/header_add_an_account">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.ADD_ACCOUNT_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2301,8 +2248,7 @@
         <activity
             android:name="Settings$DataUsageSummaryActivity"
             android:label="@string/data_usage_summary_title"
-            android:icon="@drawable/ic_settings_data_usage"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_settings_data_usage">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.DATA_USAGE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2328,8 +2274,7 @@
         <activity
             android:name="Settings$DreamSettingsActivity"
             android:label="@string/screensaver_settings_title"
-            android:icon="@drawable/ic_settings_display"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_settings_display">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.DREAM_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2343,8 +2288,7 @@
         <activity
             android:name="Settings$UserSettingsActivity"
             android:label="@string/user_settings_title"
-            android:icon="@drawable/ic_settings_multiuser"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_settings_multiuser">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.USER_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2366,8 +2310,7 @@
         <activity
             android:name="Settings$PaymentSettingsActivity"
             android:label="@string/nfc_payment_settings_title"
-            android:icon="@drawable/ic_settings_nfc_payment"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_settings_nfc_payment">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.NFC_PAYMENT_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2396,14 +2339,12 @@
 
         <activity android:name=".nfc.HowItWorks"
                   android:label="@string/nfc_payment_settings_title"
-                  android:parentActivityName="Settings$PaymentSettingsActivity"
                   android:excludeFromRecents="true">
         </activity>
 
         <activity
             android:name="Settings$NotificationAccessSettingsActivity"
-            android:label="@string/manage_notification_access_title"
-            android:parentActivityName="Settings">
+            android:label="@string/manage_notification_access_title">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2414,8 +2355,7 @@
 
         <activity
             android:name="Settings$NotificationAssistantSettingsActivity"
-            android:label="@string/notification_assistant_title"
-            android:parentActivityName="Settings">
+            android:label="@string/notification_assistant_title">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.NOTIFICATION_ASSISTANT_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2426,8 +2366,7 @@
 
         <activity
             android:name="Settings$VrListenersSettingsActivity"
-            android:label="@string/vr_listeners_title"
-            android:parentActivityName="Settings">
+            android:label="@string/vr_listeners_title">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.VR_LISTENER_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2438,8 +2377,7 @@
 
         <activity
             android:name="Settings$PictureInPictureSettingsActivity"
-            android:label="@string/picture_in_picture_title"
-            android:parentActivityName="Settings">
+            android:label="@string/picture_in_picture_title">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.PICTURE_IN_PICTURE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2454,8 +2392,7 @@
 
         <activity
             android:name="Settings$AppPictureInPictureSettingsActivity"
-            android:label="@string/picture_in_picture_title"
-            android:parentActivityName="Settings">
+            android:label="@string/picture_in_picture_title">
             <intent-filter>
                 <action android:name="android.settings.PICTURE_IN_PICTURE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2480,8 +2417,7 @@
 
         <activity
             android:name="Settings$ZenAccessSettingsActivity"
-            android:label="@string/manage_zen_access_title"
-            android:parentActivityName="Settings">
+            android:label="@string/manage_zen_access_title">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.NOTIFICATION_POLICY_ACCESS_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2493,8 +2429,7 @@
         <activity
             android:name="Settings$ConfigureNotificationSettingsActivity"
             android:label="@string/configure_notification_settings"
-            android:exported="true"
-            android:parentActivityName="Settings">
+            android:exported="true">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.NOTIFICATION_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2511,8 +2446,7 @@
 
         <activity
             android:name="Settings$AppBubbleNotificationSettingsActivity"
-            android:label="@string/bubbles_app_toggle_title"
-            android:parentActivityName="Settings$NotificationAppListActivity">
+            android:label="@string/bubbles_app_toggle_title">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.APP_NOTIFICATION_BUBBLE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2525,8 +2459,7 @@
             android:name="Settings$SoundSettingsActivity"
             android:label="@string/sound_settings"
             android:icon="@drawable/ic_homepage_sound"
-            android:exported="true"
-            android:parentActivityName="Settings">
+            android:exported="true">
             <intent-filter android:priority="1">
                 <action android:name="com.android.settings.SOUND_SETTINGS" />
                 <action android:name="android.settings.SOUND_SETTINGS" />
@@ -2583,7 +2516,6 @@
         <activity
             android:name="ManualDisplayActivity"
             android:label="@string/manual"
-            android:parentActivityName="Settings"
             android:enabled="@bool/config_show_manual">
             <intent-filter>
                 <action android:name="android.settings.SHOW_MANUAL" />
@@ -2597,7 +2529,6 @@
         <activity
             android:name="RegulatoryInfoDisplayActivity"
             android:label="@string/regulatory_labels"
-            android:parentActivityName="Settings"
             android:enabled="@bool/config_show_regulatory_info">
             <intent-filter>
                 <action android:name="android.settings.SHOW_REGULATORY_INFO" />
@@ -2765,33 +2696,23 @@
 
         <activity
             android:name="Settings$OverlaySettingsActivity"
-            android:label="@string/draw_overlay"
-            android:parentActivityName="Settings">
+            android:label="@string/draw_overlay">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.action.MANAGE_OVERLAY_PERMISSION" />
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
-            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
-                android:value="com.android.settings.applications.manageapplications.ManageApplications" />
-        </activity>
-
-        <activity
-            android:name="Settings$AppDrawOverlaySettingsActivity"
-            android:label="@string/draw_overlay"
-            android:parentActivityName="Settings">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.action.MANAGE_OVERLAY_PERMISSION" />
                 <category android:name="android.intent.category.DEFAULT" />
                 <data android:scheme="package" />
             </intent-filter>
             <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
-                android:value="com.android.settings.applications.appinfo.DrawOverlayDetails" />
+                android:value="com.android.settings.applications.manageapplications.ManageApplications" />
         </activity>
 
         <activity
             android:name="Settings$WriteSettingsActivity"
-            android:label="@string/write_settings_title"
-            android:parentActivityName="Settings">
+            android:label="@string/write_settings_title">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.action.MANAGE_WRITE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2802,8 +2723,7 @@
 
         <activity
             android:name="Settings$AppWriteSettingsActivity"
-            android:label="@string/write_settings_title"
-            android:parentActivityName="Settings">
+            android:label="@string/write_settings_title">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.action.MANAGE_WRITE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2815,8 +2735,7 @@
 
         <activity
             android:name="Settings$ManageExternalSourcesActivity"
-            android:label="@string/install_other_apps"
-            android:parentActivityName="Settings">
+            android:label="@string/install_other_apps">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.MANAGE_UNKNOWN_APP_SOURCES" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2884,15 +2803,14 @@
             <meta-data android:name="com.android.settings.category"
                        android:value="com.android.settings.category.ia.system" />
             <meta-data android:name="com.android.settings.summary_uri"
-		       android:value="content://com.android.settings.dashboard.SummaryProvider/backup" />
+                       android:value="content://com.android.settings.dashboard.SummaryProvider/backup" />
             <meta-data android:name="com.android.settings.order" android:value="-60"/>
         </activity>
 
         <activity
             android:name="Settings$AutomaticStorageManagerSettingsActivity"
             android:exported="@bool/config_storage_manager_settings_enabled"
-            android:label="@string/automatic_storage_manager_settings"
-            android:parentActivityName="Settings">
+            android:label="@string/automatic_storage_manager_settings">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.STORAGE_MANAGER_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2918,7 +2836,6 @@
             android:name=".Settings$AppAndNotificationDashboardActivity"
             android:label="@string/app_and_notification_dashboard_title"
             android:icon="@drawable/ic_homepage_apps"
-            android:parentActivityName="Settings"
             android:exported="true">
             <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                        android:value="com.android.settings.applications.AppAndNotificationDashboardFragment"/>
@@ -2927,8 +2844,7 @@
         <activity
             android:name=".Settings$AccountDashboardActivity"
             android:label="@string/account_dashboard_title"
-            android:icon="@drawable/ic_homepage_accounts"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_homepage_accounts">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.SYNC_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -2946,8 +2862,7 @@
         <activity
             android:name=".Settings$SystemDashboardActivity"
             android:label="@string/header_category_system"
-            android:icon="@drawable/ic_homepage_system_dashboard"
-            android:parentActivityName="Settings">
+            android:icon="@drawable/ic_homepage_system_dashboard">
             <intent-filter android:priority="70">
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="com.android.settings.SHORTCUT" />
@@ -3075,8 +2990,7 @@
         </activity>
 
         <activity android:name="Settings$AdvancedConnectedDeviceActivity"
-                  android:label="@string/connected_device_connections_title"
-                  android:parentActivityName="Settings$ConnectedDeviceDashboardActivity">
+                  android:label="@string/connected_device_connections_title">
             <intent-filter android:priority="1">
                 <action android:name="android.settings.NFC_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -3093,8 +3007,7 @@
 
         <activity android:name="Settings$BluetoothDeviceDetailActivity"
                   android:label="@string/device_details_title"
-                  android:permission="android.permission.BLUETOOTH_PRIVILEGED"
-                  android:parentActivityName="Settings$ConnectedDeviceDashboardActivity">
+                  android:permission="android.permission.BLUETOOTH_PRIVILEGED">
             <intent-filter android:priority="1">
                 <action android:name="com.android.settings.BLUETOOTH_DEVICE_DETAIL_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
@@ -3232,8 +3145,7 @@
         </activity>
 
         <activity android:name="Settings$BatterySaverScheduleSettingsActivity"
-            android:label="@string/battery_saver_schedule_settings_title"
-            android:parentActivityName="Settings">
+            android:label="@string/battery_saver_schedule_settings_title">
             <intent-filter>
                 <action android:name="com.android.settings.BATTERY_SAVER_SCHEDULE_SETTINGS" />
                 <category android:name="android.intent.category.DEFAULT" />
diff --git a/res/drawable-nodpi/accessibility_timeout b/res/drawable-nodpi/accessibility_timeout
deleted file mode 100644
index e69de29..0000000
--- a/res/drawable-nodpi/accessibility_timeout
+++ /dev/null
diff --git a/res/drawable-nodpi/accessibility_timeout.png b/res/drawable-nodpi/accessibility_timeout.png
new file mode 100644
index 0000000..887f117
--- /dev/null
+++ b/res/drawable-nodpi/accessibility_timeout.png
Binary files differ
diff --git a/res/drawable/ic_pan_tool_18dp.xml b/res/drawable/ic_pan_tool_18dp.xml
index 3ebfc9c..36b133b 100644
--- a/res/drawable/ic_pan_tool_18dp.xml
+++ b/res/drawable/ic_pan_tool_18dp.xml
@@ -1,10 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2019 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="18dp"
-    android:height="18dp"
-    android:viewportWidth="48"
-    android:viewportHeight="48">
+        android:width="18dp"
+        android:height="18dp"
+        android:viewportWidth="48"
+        android:viewportHeight="48">
   <group>
-    <clip-path android:pathData="M0,0h48v48H0z M 0,0"/>
+    <clip-path
+        android:pathData="M0,0h48v48H0z M 0,0"/>
     <path
         android:pathData="M46,11v29c0,4.4 -3.6,8 -8,8H23.4c-2.16,0 -4.2,-0.86 -5.7,-2.38L2,29.66s2.52,-2.46 2.6,-2.5c0.44,-0.38 0.98,-0.58 1.58,-0.58 0.44,0 0.84,0.12 1.2,0.32 0.08,0.02 8.62,4.92 8.62,4.92V8c0,-1.66 1.34,-3 3,-3s3,1.34 3,3v14h2V3c0,-1.66 1.34,-3 3,-3s3,1.34 3,3v19h2V5c0,-1.66 1.34,-3 3,-3s3,1.34 3,3v17h2V11c0,-1.66 1.34,-3 3,-3s3,1.34 3,3z"
         android:fillColor="#757575"/>
diff --git a/res/drawable/ic_visibility_18dp.xml b/res/drawable/ic_visibility_18dp.xml
index 9e27815c..9dc269f 100644
--- a/res/drawable/ic_visibility_18dp.xml
+++ b/res/drawable/ic_visibility_18dp.xml
@@ -1,9 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2019 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="18dp"
-    android:height="18dp"
-    android:viewportWidth="48"
-    android:viewportHeight="48">
-  <path
-      android:pathData="M24,9C14,9 5.46,15.22 2,24c3.46,8.78 12,15 22,15 10.01,0 18.54,-6.22 22,-15 -3.46,-8.78 -11.99,-15 -22,-15zM24,34c-5.52,0 -10,-4.48 -10,-10s4.48,-10 10,-10 10,4.48 10,10 -4.48,10 -10,10zM24,18c-3.31,0 -6,2.69 -6,6s2.69,6 6,6 6,-2.69 6,-6 -2.69,-6 -6,-6z"
-      android:fillColor="#757575"/>
+        android:width="18dp"
+        android:height="18dp"
+        android:viewportWidth="48"
+        android:viewportHeight="48">
+    <path
+        android:pathData="M24,9C14,9 5.46,15.22 2,24c3.46,8.78 12,15 22,15 10.01,0 18.54,-6.22 22,-15 -3.46,-8.78 -11.99,-15 -22,-15zM24,34c-5.52,0 -10,-4.48 -10,-10s4.48,-10 10,-10 10,4.48 10,10 -4.48,10 -10,10zM24,18c-3.31,0 -6,2.69 -6,6s2.69,6 6,6 6,-2.69 6,-6 -2.69,-6 -6,-6z"
+        android:fillColor="#757575"/>
 </vector>
diff --git a/res/layout/mobile_network_settings_container.xml b/res/layout/mobile_network_settings_container.xml
deleted file mode 100644
index c88b512..0000000
--- a/res/layout/mobile_network_settings_container.xml
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Copyright (C) 2018 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.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <Toolbar
-        android:id="@+id/mobile_action_bar"
-        style="?android:attr/actionBarStyle"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:navigationContentDescription="@*android:string/action_bar_up_description"
-        android:theme="?android:attr/actionBarTheme"/>
-
-    <FrameLayout
-        android:id="@+id/main_content"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"/>
-
-    <com.google.android.material.bottomnavigation.BottomNavigationView
-        android:id="@+id/bottom_nav"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_alignParentBottom="true"
-        android:layout_marginEnd="0dp"
-        android:layout_marginStart="0dp"
-        android:background="?android:attr/windowBackground"
-        app:itemIconTint="@color/bottom_navigation_colors"
-        app:itemTextColor="@color/bottom_navigation_colors"
-        app:menu="@menu/home_bottom_navigation"/>
-</LinearLayout>
diff --git a/res/layout/mobile_network_settings_container_v2.xml b/res/layout/mobile_network_settings_container_v2.xml
deleted file mode 100644
index ed7296b..0000000
--- a/res/layout/mobile_network_settings_container_v2.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Copyright (C) 2019 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.
-  -->
-
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <Toolbar
-        android:id="@+id/mobile_action_bar"
-        style="?android:attr/actionBarStyle"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:navigationContentDescription="@*android:string/action_bar_up_description"
-        android:theme="?android:attr/actionBarTheme"/>
-
-    <FrameLayout
-        android:id="@+id/main_content"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"/>
-
-</LinearLayout>
diff --git a/res/layout/profile_select_tablayout.xml b/res/layout/profile_select_tablayout.xml
index 8c0ca8c..3e83bb9 100644
--- a/res/layout/profile_select_tablayout.xml
+++ b/res/layout/profile_select_tablayout.xml
@@ -32,7 +32,6 @@
         app:tabMaxWidth="0dp"
         app:tabGravity="fill"
         app:tabMode="fixed"
-        app:tabIndicatorFullWidth="false"
         app:tabIndicatorColor="@*android:color/accent_device_default"
         app:tabSelectedTextColor="@*android:color/accent_device_default"
         app:tabTextColor="?android:attr/textColorSecondary" />
diff --git a/res/layout/screen_pinning_instructions.xml b/res/layout/screen_pinning_instructions.xml
deleted file mode 100644
index fea5ed8..0000000
--- a/res/layout/screen_pinning_instructions.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2014, 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.
-*/
--->
-
-<ScrollView
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/instructions_area"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent">
-
-    <TextView
-        android:id="@+id/screen_pinning_description"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_alignParentTop="true"
-        android:paddingTop="@dimen/screen_pinning_textview_padding"
-        android:text="@string/screen_pinning_description"
-        android:textAppearance="@style/TextAppearance.Medium"
-        android:paddingStart="@dimen/screen_pinning_padding_start"
-        android:paddingEnd="@dimen/screen_pinning_padding_end"
-        />
-
-</ScrollView>
diff --git a/res/layout/settings_base_layout.xml b/res/layout/settings_base_layout.xml
index f94d25d..0a4437e 100644
--- a/res/layout/settings_base_layout.xml
+++ b/res/layout/settings_base_layout.xml
@@ -27,7 +27,7 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:theme="?android:attr/actionBarTheme"
-        android:navigationContentDescription="@*android:string/action_bar_up_description" />
+        android:navigationContentDescription="@*android:string/back_button_label" />
     <FrameLayout
         android:id="@+id/content_frame"
         android:layout_width="match_parent"
diff --git a/res/raw/accessibility_timeout.mp4 b/res/raw/accessibility_timeout.mp4
index e69de29..2214e2b 100644
--- a/res/raw/accessibility_timeout.mp4
+++ b/res/raw/accessibility_timeout.mp4
Binary files differ
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 95e0bb1..6828cb2 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -323,7 +323,7 @@
     <string name="decryption_settings_summary" product="default" msgid="5671817824042639849">"الهاتف ليس مشفّرًا."</string>
     <string name="encryption_and_credential_settings_summary" product="tablet" msgid="7200428573872395685">"تم تشفير الجهاز"</string>
     <string name="decryption_settings_summary" product="tablet" msgid="5794135636155570977">"الجهاز ليس مشفرًا."</string>
-    <string name="lockscreen_settings_title" msgid="1099738951060387656">"عرض شاشة القفل"</string>
+    <string name="lockscreen_settings_title" msgid="1099738951060387656">"عرض شاشة التأمين"</string>
     <string name="lockscreen_settings_what_to_show_category" msgid="278055252361575926">"ما يتم عرضه"</string>
     <string name="security_settings_summary" msgid="967393342537986570">"‏تعيين موقعي، إلغاء تأمين الشاشة، تأمين شريحة SIM، تأمين تخزين الاعتماد"</string>
     <string name="cdma_security_settings_summary" msgid="6068799952798901542">"تعيين موقعي، إلغاء تأمين الشاشة، تأمين تخزين الاعتماد"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 0b5214d..e2d4030 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -4160,7 +4160,7 @@
     <string name="ambient_display_title" product="tablet" msgid="8688795028609563837">"Per consultar la tauleta, fes-hi doble toc"</string>
     <string name="ambient_display_title" product="device" msgid="3423781975742145894">"Per consultar el dispositiu, fes-hi doble toc"</string>
     <string name="ambient_display_summary" msgid="8534654210539169707">"Per veure l\'hora, les notificacions i altres dades, fes doble toc a la pantalla."</string>
-    <string name="ambient_display_pickup_title" product="default" msgid="818688002837687268">"Aixeca per consultar el telèfon"</string>
+    <string name="ambient_display_pickup_title" product="default" msgid="818688002837687268">"Aixeca per consultar-lo"</string>
     <string name="ambient_display_pickup_title" product="tablet" msgid="4455864282995698097">"Per consultar la tauleta, aixeca-la"</string>
     <string name="ambient_display_pickup_title" product="device" msgid="5380534405773531175">"Aixeca el dispositiu per consultar-lo"</string>
     <string name="ambient_display_wake_screen_title" msgid="4091523525326925790">"Activa la pantalla"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 66dae00..e9f2674 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -56,7 +56,7 @@
     <string name="font_size_preview_text_headline" msgid="7955317408475392247">"Testu-lagina"</string>
     <string name="font_size_preview_text_title" msgid="1310536233106975546">"Ozeko azti miragarria"</string>
     <string name="font_size_preview_text_subtitle" msgid="4231671528173110093">"11. kapitulua: Esmeraldazko Oz hiri harrigarria"</string>
-    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Begiak betaurreko berdeekin babestuta bazituzten ere, Dorothy eta haren lagunak txundituta geratu ziren Hiri zoragarri haren distira lehenbizikoz ikustean. Kaleak etxe ederrez josita zeuden; marmol berdezkoak ziren, eta esmeralda distiratsuz zeuden apainduta. Marmol berde hartaz egindako espaloian ibili ziren, eta lauzen junturak esmeraldazko errenkadak zirela nabaritu zuten, bata bestearen ondoan estu-estu jarriak, eguzkitan dir-dir egiten. Leihoen kristalak berdeak ziren. Hiria estaltzen zuen zeruak kutsu berdea zuen, eta berdeak ziren eguzki-izpiak ere. \n\nJende asko zebilen hara eta hona: gizonak, emakumeak eta haurrak, guztiak berdez jantziak eta azal berdexkakoak. Zalantzaz begiratzen zieten Dorothyri eta haren lagun talde xelebreari, eta haurrak amaren atzean ezkutatzen ziren lehoia ikusi bezain laster. Hala ere, inork ez zien txintik ere esan. Denda asko zeuden kalean, eta salgai guztiak berdeak zirela antzeman zuen Dorothyk. Gozoki berdeak eta krispeta berdeak eros zitezkeen, baita zapata berdeak, kapela berdeak eta askotariko jantzi berdeak ere. Gizon bat limonada berdea saltzen ari zen, eta haur batzuek erosi ziotenean, txanpon berdeekin ordaindu zutela ikusi zuen Dorothyk. \n\nEz zegoen zaldirik edo inolako animaliarik; gizonek orgatxo berdeak bultzatuta eramaten zituzten gauzak batetik bestera. Denak zeuden pozik, alai eta zoriontsu."</string>
+    <string name="font_size_preview_text_body" msgid="2846183528684496723">"Begiak betaurreko berdeekin babestuta bazituzten ere, Dorothy eta haren lagunak txundituta geratu ziren Hiri zoragarri haren distira lehenbizikoz ikustean. Kaleak etxe ederrez josita zeuden; marmol berdezkoak ziren, eta esmeralda distiratsuz zeuden apainduta. Marmol berde hartaz egindako espaloian ibili ziren, eta lauzen junturak esmeraldazko errenkadak zirela nabaritu zuten, bata bestearen ondoan estu-estu jarriak, eguzkitan dir-dir egiten. Leihoen kristalak berdeak ziren. Hiria estaltzen zuen zeruak kutsu berdea zuen, eta berdeak ziren eguzki-izpiak ere. \n\nJende asko zebilen hara eta hona: gizonak, emakumeak eta haurrak, guztiak berdez jantziak eta azal berdexkakoak. Zalantzaz begiratzen zieten Dorothyri eta haren lagun talde xelebreari, eta haurrak amaren atzean ezkutatzen ziren lehoia ikusi bezain laster. Hala ere, inork ez zien txintik ere esan. Denda asko zeuden kalean, eta salgai guztiak berdeak zirela atzeman zuen Dorothyk. Gozoki berdeak eta krispeta berdeak eros zitezkeen, baita zapata berdeak, kapela berdeak eta askotariko jantzi berdeak ere. Gizon bat limonada berdea saltzen ari zen, eta haur batzuek erosi ziotenean, txanpon berdeekin ordaindu zutela ikusi zuen Dorothyk. \n\nEz zegoen zaldirik edo inolako animaliarik; gizonek orgatxo berdeak bultzatuta eramaten zituzten gauzak batetik bestera. Denak zeuden pozik, alai eta zoriontsu."</string>
     <string name="font_size_save" msgid="3450855718056759095">"Ados"</string>
     <string name="sdcard_setting" product="nosdcard" msgid="8281011784066476192">"USB bidezko memoria"</string>
     <string name="sdcard_setting" product="default" msgid="5922637503871474866">"SD txartela"</string>
diff --git a/res/values-mr-nokeys/strings.xml b/res/values-mr-nokeys/strings.xml
index db0e2ea..2acc866 100644
--- a/res/values-mr-nokeys/strings.xml
+++ b/res/values-mr-nokeys/strings.xml
@@ -16,5 +16,5 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="applications_settings_summary" msgid="6616938758022986257">"अॅप्लिकेशन व्‍यवस्‍थापित करा"</string>
+    <string name="applications_settings_summary" msgid="6616938758022986257">"ॲप्लिकेशन व्‍यवस्‍थापित करा"</string>
 </resources>
diff --git a/res/values-mr/arrays.xml b/res/values-mr/arrays.xml
index 351d24f..d33a79d 100644
--- a/res/values-mr/arrays.xml
+++ b/res/values-mr/arrays.xml
@@ -444,7 +444,7 @@
   </string-array>
   <string-array name="proc_stats_process_states">
     <item msgid="5069825997142785829">"कायम"</item>
-    <item msgid="5779398140277006695">"आघाडीच्या अॅक्टिव्हिटी"</item>
+    <item msgid="5779398140277006695">"आघाडीच्या ॲक्टिव्हिटी"</item>
     <item msgid="1439598363694578255">"महत्त्वाचे (अग्रभाग)"</item>
     <item msgid="3396458970745718652">"महत्त्वाचे (पार्श्वभूमी)"</item>
     <item msgid="5214825238247511992">"बॅकअप घ्‍या"</item>
@@ -453,9 +453,9 @@
     <item msgid="918687422516982498">"सेवा (रीस्टार्ट करत आहे)"</item>
     <item msgid="6807727069641853029">"प्राप्तकर्ता"</item>
     <item msgid="6782857406100845127">"होम"</item>
-    <item msgid="2860945127596974299">"शेवटच्या अॅक्टिव्हिटी"</item>
-    <item msgid="8610560843693675830">"कॅशे केलेली (अॅक्टिव्हिटी)"</item>
-    <item msgid="4338089220026248848">"कॅशे केलेला (अॅक्टिव्हिटी क्लायंट)"</item>
+    <item msgid="2860945127596974299">"शेवटच्या ॲक्टिव्हिटी"</item>
+    <item msgid="8610560843693675830">"कॅशे केलेली (ॲक्टिव्हिटी)"</item>
+    <item msgid="4338089220026248848">"कॅशे केलेला (ॲक्टिव्हिटी क्लायंट)"</item>
     <item msgid="6652164677254579050">"कॅश   केलेला (रिक्त)"</item>
   </string-array>
   <string-array name="color_picker">
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 3889492..20e83be 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -176,7 +176,7 @@
     <string name="proxy_error_empty_port" msgid="5539106187558215246">"तुम्हाला पोर्ट फील्ड पूर्ण करण्‍याची आवश्यकता आहे"</string>
     <string name="proxy_error_empty_host_set_port" msgid="2451694104858226781">"होस्ट फील्ड रिक्त असल्यास पोर्ट फील्ड रिक्त असणे आवश्यक आहे."</string>
     <string name="proxy_error_invalid_port" msgid="5988270202074492710">"तुम्ही टाइप केलेला पोर्ट वैध नाही."</string>
-    <string name="proxy_warning_limited_support" msgid="7229337138062837422">"ब्राउझरद्वारे HTTP प्रॉक्सी वापरले जाते परंतु अन्य अॅप्सद्वारे कदाचित वापरले जाणार नाही."</string>
+    <string name="proxy_warning_limited_support" msgid="7229337138062837422">"ब्राउझरद्वारे HTTP प्रॉक्सी वापरले जाते परंतु अन्य ॲप्सद्वारे कदाचित वापरले जाणार नाही."</string>
     <string name="proxy_url_title" msgid="7185282894936042359">"PAC URL: "</string>
     <string name="radio_info_ping_hostname_v4" msgid="7045103377818314709">"पिंग होस्ट नाव(www.google.com) IPv4:"</string>
     <string name="radio_info_ping_hostname_v6" msgid="1130906124160553954">"पिंग होस्ट नाव(www.google.com) IPv6:"</string>
@@ -211,13 +211,13 @@
     <string name="dlg_remove_locales_message" msgid="1361354927342876114">"मजकूर दुसऱ्या भाषेत डिस्प्ले केला जाईल."</string>
     <string name="dlg_remove_locales_error_title" msgid="2653242337224911425">"सर्व भाषा काढू शकत नाही"</string>
     <string name="dlg_remove_locales_error_message" msgid="6697381512654262821">"किमान एक प्राधान्यीकृत भाषा ठेवा"</string>
-    <string name="locale_not_translated" msgid="516862628177166755">"काही अॅपसमध्ये उपलब्ध होऊ शकत नाही"</string>
+    <string name="locale_not_translated" msgid="516862628177166755">"काही ॲपसमध्ये उपलब्ध होऊ शकत नाही"</string>
     <string name="action_drag_label_move_up" msgid="9052210023727612540">"वर हलवा"</string>
     <string name="action_drag_label_move_down" msgid="7448713844582912157">"खाली हलवा"</string>
     <string name="action_drag_label_move_top" msgid="557081389352288310">"शीर्षस्थानी हलवा"</string>
     <string name="action_drag_label_move_bottom" msgid="2468642142414126482">"तळाशी हलवा"</string>
     <string name="action_drag_label_remove" msgid="2861038147166966206">"भाषा काढा"</string>
-    <string name="activity_picker_label" msgid="6295660302548177109">"अॅक्टिव्हिटी निवडा"</string>
+    <string name="activity_picker_label" msgid="6295660302548177109">"ॲक्टिव्हिटी निवडा"</string>
     <string name="device_info_label" msgid="6551553813651711205">"डिव्हाइस माहिती"</string>
     <string name="display_label" msgid="8074070940506840792">"स्क्रीन"</string>
     <string name="sd_card_settings_label" product="nosdcard" msgid="8101475181301178428">"USB स्टोरेज"</string>
@@ -300,8 +300,8 @@
     <string name="location_settings_master_switch_title" msgid="3560242980335542411">"स्‍थान वापरा"</string>
     <string name="location_settings_summary_location_off" msgid="794370259612167176">"बंद"</string>
     <plurals name="location_settings_summary_location_on" formatted="false" msgid="5513447650619485188">
-      <item quantity="other">सुरू - <xliff:g id="COUNT_1">%1$d</xliff:g> अॅप्सना स्थानाचा अ‍ॅक्सेस आहे</item>
-      <item quantity="one">सुरू - <xliff:g id="COUNT_0">%1$d</xliff:g> अॅपला स्थानाचा अ‍ॅक्सेस आहे</item>
+      <item quantity="other">सुरू - <xliff:g id="COUNT_1">%1$d</xliff:g> ॲप्सना स्थानाचा अ‍ॅक्सेस आहे</item>
+      <item quantity="one">सुरू - <xliff:g id="COUNT_0">%1$d</xliff:g> ॲपला स्थानाचा अ‍ॅक्सेस आहे</item>
     </plurals>
     <string name="location_settings_loading_app_permission_stats" msgid="8523775367089431611">"लोड करत आहे…"</string>
     <string name="account_settings_title" msgid="626177544686329806">"खाती"</string>
@@ -340,9 +340,9 @@
     <string name="security_settings_face_enroll_introduction_more" msgid="8933757421629981560">"आणखी"</string>
     <string name="security_settings_face_enroll_introduction_title" msgid="2694505011712885439">"तुमच्या चेहऱ्यासह अनलॉक करा"</string>
     <string name="security_settings_face_enroll_introduction_title_unlock_disabled" msgid="8180330567034286589">"ऑथेंटिकेट करण्यासाठी तुमचा चेहरा वापरा"</string>
-    <string name="security_settings_face_enroll_introduction_message" msgid="6150611993438981458">"तुमचा फोन अनलॉक करण्यासाठी, खरेदी मान्यता देण्यासाठी किंवा अॅप्समध्ये साइन इन करण्यासाठी तुमचा चेहरा वापरा."</string>
+    <string name="security_settings_face_enroll_introduction_message" msgid="6150611993438981458">"तुमचा फोन अनलॉक करण्यासाठी, खरेदी मान्यता देण्यासाठी किंवा ॲप्समध्ये साइन इन करण्यासाठी तुमचा चेहरा वापरा."</string>
     <string name="security_settings_face_enroll_introduction_message_unlock_disabled" msgid="6393270235632444857">"फोन अनलॉक करण्यासाठी किंवा खरेदींना मंजूरी देण्यासाठी तुमचा चेहरा वापरा.\n\nटीप: तुम्ही हे डिव्हाइस अनलॉक करण्यासाठी तुमचा चेहरा वापरू शकत नाही. अधिक माहितीसाठी, तुमच्या संस्थेच्या प्रशासकाशी संपर्क साधा."</string>
-    <string name="security_settings_face_enroll_introduction_message_setup" msgid="5704661081718707858">"तुमचा फोन अनलॉक करण्यासाठी, खरेदी परवानगी देण्यासाठी किंवा अॅप्सवर साइन इन करण्यासाठी तुमचा चेहरा वापरा"</string>
+    <string name="security_settings_face_enroll_introduction_message_setup" msgid="5704661081718707858">"तुमचा फोन अनलॉक करण्यासाठी, खरेदी परवानगी देण्यासाठी किंवा ॲप्सवर साइन इन करण्यासाठी तुमचा चेहरा वापरा"</string>
     <string name="security_settings_face_enroll_introduction_footer_part_0" msgid="3316520154949466889"></string>
     <string name="security_settings_face_enroll_introduction_footer_part_1" msgid="5594630288374571903"></string>
     <string name="security_settings_face_enroll_introduction_footer_part_2" msgid="7576241712527601978"></string>
@@ -371,7 +371,7 @@
     <string name="security_settings_face_settings_require_attention" msgid="8523824066748480516">"डोळे उघडे असणे आवश्यक आहे"</string>
     <string name="security_settings_face_settings_require_attention_details" msgid="6595676992796133643">"फोन अनलॉक करण्यासाठी, तुमचे डोळे उघडे असणे आवश्यक आहे"</string>
     <string name="security_settings_face_settings_require_confirmation" msgid="2559602923985027572">"नेहमी खात्री करणे आवश्यक आहे"</string>
-    <string name="security_settings_face_settings_require_confirmation_details" msgid="6466094680756211420">"अॅप्समध्ये फेस अनलॉक वापरताना, नेहमी खात्री करणे आवश्यक आहे"</string>
+    <string name="security_settings_face_settings_require_confirmation_details" msgid="6466094680756211420">"ॲप्समध्ये फेस अनलॉक वापरताना, नेहमी खात्री करणे आवश्यक आहे"</string>
     <string name="security_settings_face_settings_remove_face_data" msgid="304401377141467791">"फेस डेटा हटवा"</string>
     <string name="security_settings_face_settings_enroll" msgid="495403103503629382">"फेस अनलॉक सेट करा"</string>
     <string name="security_settings_face_settings_footer" msgid="6072833685685070967">"तुमचे डिव्हाइस अनलॉक करण्यासाठी, अ‍ॅप्समध्ये साइन इन करण्यासाठी आणि पेमेंटची खात्री करण्यासाठी फेस अनलॉक वापरा. \n\n लक्षात ठेवा:\nतुमचा हेतू नसताना देखील फोनकडे पाहिल्यास तो अनलॉक होऊ शकतो.\n\nतुमचे डोळे उघडे असताना एखाद्या व्यक्तीने तुमचा फोन तुमच्या चेहऱ्याकडे धरल्यास तुमचा फोन अनलॉक केला जाऊ शकतो\n\nतुमच्यासारखी दिसणारी व्यक्ती तुमचा फोन संभाव्यत: अनलॉक करू शकते, जसे की, तुमचे भावंड."</string>
@@ -390,7 +390,7 @@
     <string name="security_settings_fingerprint_preference_summary_none" msgid="1507739327565151923"></string>
     <string name="security_settings_fingerprint_enroll_introduction_title" msgid="3201556857492526098">"फिंगरप्रिंटने अनलॉक करा"</string>
     <string name="security_settings_fingerprint_enroll_introduction_title_unlock_disabled" msgid="7066417934622827305">"तुमचे फिंगरप्रिंट वापरा"</string>
-    <string name="security_settings_fingerprint_enroll_introduction_message" msgid="3508870672887336095">"तुमचा फोन अनलॉक करण्यासाठी, खरेदी अधिकृत करण्‍यासाठी किंवा अॅप्समध्ये साइन इन करण्‍यासाठी फक्त फिंगरप्रिंट सेन्सरला स्पर्श करा. तुम्ही ज्यांचे फिंगरप्रिंट जोडता त्याविषयी सावधगिरी बाळगा. जोडलेला एक प्रिंट देखील यापैकी कोणतीही गोष्ट करू शकतो. \n\n टीप: तुमचे फिंगरप्रिंट क्लिष्ट पॅटर्न किंवा पिन पेक्षा कमी सुरक्षित असू शकतात."</string>
+    <string name="security_settings_fingerprint_enroll_introduction_message" msgid="3508870672887336095">"तुमचा फोन अनलॉक करण्यासाठी, खरेदी अधिकृत करण्‍यासाठी किंवा ॲप्समध्ये साइन इन करण्‍यासाठी फक्त फिंगरप्रिंट सेन्सरला स्पर्श करा. तुम्ही ज्यांचे फिंगरप्रिंट जोडता त्याविषयी सावधगिरी बाळगा. जोडलेला एक प्रिंट देखील यापैकी कोणतीही गोष्ट करू शकतो. \n\n टीप: तुमचे फिंगरप्रिंट क्लिष्ट पॅटर्न किंवा पिन पेक्षा कमी सुरक्षित असू शकतात."</string>
     <string name="security_settings_fingerprint_enroll_introduction_message_unlock_disabled" msgid="1550756694054944874">"फोन अनलॉक करण्यासाठी किंवा खरेदींना मंजूरी देण्यासाठी तुमचे फिंगरप्रिंट वापरा.\n\nटीप: तुम्ही हे डिव्हाइस अनलॉक करण्यासाठी तुम्‍ही तुमचे फिंगरप्रिंट वापरू शकत नाही. अधिक माहितीसाठी संस्थेच्या प्रशासकाशी संपर्क साधा."</string>
     <string name="security_settings_fingerprint_enroll_introduction_message_setup" msgid="6817326798834882531">"फोन अनलॉक करण्यासाठी किंवा खरेदीला मंजुरी देण्यासाठी तुमची फिंगरप्रिंट वापरा.\n\nटीप: क्लिष्ट पॅटर्न किंवा पिनच्या तुलनेत तुमची फिंगरप्रिंट ही कमी सुरक्षित असू शकते."</string>
     <string name="security_settings_fingerprint_enroll_introduction_cancel" msgid="3199351118385606526">"रद्द करा"</string>
@@ -404,7 +404,7 @@
     <string name="lock_screen_intro_skip_dialog_text_frp" product="device" msgid="4629503416877189572">"डिव्हाइस संरक्षण वैशिष्ट्ये सुरू होणार नाहीत. हे डिव्हाइस हरवल्यास, चोरी झाल्यास किंवा रीसेट केल्यास तुम्ही इतरांना तो वापरण्यापासून रोखू शकणार नाही."</string>
     <string name="lock_screen_intro_skip_dialog_text_frp" product="default" msgid="2423428240245737909">"डिव्हाइस संरक्षण वैशिष्ट्ये सुरू होणार नाहीत. हा फोन हरवल्यास, चोरी झाल्यास किंवा रीसेट केल्यास तुम्ही इतरांना तो वापरण्यापासून रोखू शकणार नाही."</string>
     <string name="lock_screen_intro_skip_dialog_text" product="tablet" msgid="5219287483885558525">"डिव्हाइस संरक्षण वैशिष्ट्ये सुरू होणार नाहीत. हा टॅब्लेट हरवल्यास किंवा चोरी झाल्यास तुम्ही इतरांना तो वापरण्यापासून रोखू शकणार नाही."</string>
-    <string name="lock_screen_intro_skip_dialog_text" product="device" msgid="1466238255429527112">"डिव्हाइस संरक्षण्‍ा वैशिष्ट्ये सुरू होणार नाहीत. हे डिव्हाइस हरवल्यास किंवा चोरी झाल्यास तुम्ही इतरांना ते वापरण्यापासून प्रतिबंधित करू शकणार नाही."</string>
+    <string name="lock_screen_intro_skip_dialog_text" product="device" msgid="1466238255429527112">"डिव्हाइस संरक्षण वैशिष्ट्ये सुरू होणार नाहीत. हे डिव्हाइस हरवल्यास किंवा चोरी झाल्यास तुम्ही इतरांना ते वापरण्यापासून प्रतिबंधित करू शकणार नाही."</string>
     <string name="lock_screen_intro_skip_dialog_text" product="default" msgid="3008526710555416125">"डिव्हाइस संरक्षण वैशिष्ट्ये सुरू होणार नाहीत. हा फोन हरवला किंवा चोरी झाला तर तुम्ही इतरांना तो वापरण्यापासून रोखू शकणार नाही."</string>
     <string name="skip_anyway_button_label" msgid="2323522873558834513">"तरीही वगळा"</string>
     <string name="go_back_button_label" msgid="4745265266186209467">"परत जा"</string>
@@ -453,7 +453,7 @@
     <string name="fingerprint_delete_title" msgid="1368196182612202898">"\'<xliff:g id="FINGERPRINT_ID">%1$s</xliff:g>\' काढा"</string>
     <string name="fingerprint_delete_message" msgid="8597787803567398131">"तुम्हाला ही फिंगरप्रिंट हटवायची आहे का?"</string>
     <string name="fingerprint_last_delete_message" msgid="7852321001254275878">"तुम्ही तुमचे फिंगरप्रिंट तुमचा फोन अनलॉक करण्‍यासाठी, खरेदी प्रमाणित करण्‍यासाठी किंवा त्यांच्यासह अ‍ॅप्समध्ये साइन इन करण्‍यासाठी वापरू शकणार नाही"</string>
-    <string name="fingerprint_last_delete_message_profile_challenge" msgid="6521520787746771912">"तुम्ही तुमचे फिंगरप्रिंट तुमचे कार्य प्रोफाइल अनलॉक करण्‍यासाठी, खरेद्या प्रमाणित करण्‍यासाठी किंवा कार्य अॅप्समध्‍ये साइन इन करण्‍यासाठी वापरू शकणार नाही"</string>
+    <string name="fingerprint_last_delete_message_profile_challenge" msgid="6521520787746771912">"तुम्ही तुमचे फिंगरप्रिंट तुमचे कार्य प्रोफाइल अनलॉक करण्‍यासाठी, खरेद्या प्रमाणित करण्‍यासाठी किंवा कार्य ॲप्समध्‍ये साइन इन करण्‍यासाठी वापरू शकणार नाही"</string>
     <string name="fingerprint_last_delete_confirm" msgid="2634726361059274289">"होय, काढा"</string>
     <string name="crypt_keeper_settings_title" msgid="4219233835490520414">"एंक्रिप्शन"</string>
     <string name="crypt_keeper_encrypt_title" product="tablet" msgid="1060273569887301457">"टॅबलेट एंक्रिप्ट करा"</string>
@@ -500,9 +500,9 @@
     <string name="setup_lock_settings_picker_title" product="device" msgid="2399952075134938929">"तुमचे डिव्हाइस संरक्षित करा"</string>
     <string name="setup_lock_settings_picker_title" product="default" msgid="1572244299605153324">"तुमचा फोन संरक्षित करा"</string>
     <string name="lock_settings_picker_biometrics_added_security_message" msgid="1507307757032207572">"अतिरिक्त सुरक्षिततेसाठी, बॅकअप स्क्रीन लॉक सेट करा"</string>
-    <string name="setup_lock_settings_picker_message" product="tablet" msgid="8919671129189936210">"डिव्हाइस संरक्षण वैशिष्ट्ये अॅक्टिव्हेट करून तुमच्या परवानगीशिवाय हा टॅब्लेट वापरण्यापासून इतरांना प्रतिबंधित करा. तुम्ही वापरू इच्छित असलेले स्क्रीन लॉक निवडा."</string>
-    <string name="setup_lock_settings_picker_message" product="device" msgid="3787276514406353777">"डिव्हाइस संरक्षण वैशिष्ट्ये अॅक्टिव्हेट करून तुमच्या परवानगीशिवाय हे डिव्हाइस वापरण्यापासून इतरांना प्रतिबंधित करा. तुम्ही वापरू इच्छित असलेले स्क्रीन लॉक निवडा."</string>
-    <string name="setup_lock_settings_picker_message" product="default" msgid="3692856437543730446">"डिव्हाइस संरक्षण वैशिष्ट्ये अॅक्टिव्हेट करून तुमच्या परवानगीशिवाय हा फोन वापरण्यापासून इतरांना प्रतिबंधित करा. तुम्ही वापरू इच्छित असलेले स्क्रीन लॉक निवडा."</string>
+    <string name="setup_lock_settings_picker_message" product="tablet" msgid="8919671129189936210">"डिव्हाइस संरक्षण वैशिष्ट्ये ॲक्टिव्हेट करून तुमच्या परवानगीशिवाय हा टॅब्लेट वापरण्यापासून इतरांना प्रतिबंधित करा. तुम्ही वापरू इच्छित असलेले स्क्रीन लॉक निवडा."</string>
+    <string name="setup_lock_settings_picker_message" product="device" msgid="3787276514406353777">"डिव्हाइस संरक्षण वैशिष्ट्ये ॲक्टिव्हेट करून तुमच्या परवानगीशिवाय हे डिव्हाइस वापरण्यापासून इतरांना प्रतिबंधित करा. तुम्ही वापरू इच्छित असलेले स्क्रीन लॉक निवडा."</string>
+    <string name="setup_lock_settings_picker_message" product="default" msgid="3692856437543730446">"डिव्हाइस संरक्षण वैशिष्ट्ये ॲक्टिव्हेट करून तुमच्या परवानगीशिवाय हा फोन वापरण्यापासून इतरांना प्रतिबंधित करा. तुम्ही वापरू इच्छित असलेले स्क्रीन लॉक निवडा."</string>
     <string name="lock_settings_picker_fingerprint_message" msgid="4755230324778371292">"तुमची बॅक अप स्क्रीन लॉक पद्धत निवडा"</string>
     <string name="lock_settings_picker_face_message" msgid="197106534637556054">"तुमची बॅकअप स्क्रीन लॉक पद्धत निवडा"</string>
     <string name="setup_lock_settings_options_button_label" msgid="8511153243629402929">"स्क्रीन लॉक पर्याय"</string>
@@ -549,35 +549,35 @@
     <string name="unlock_disable_frp_warning_content_pattern" msgid="8869767290771023461">"तुमच्या पॅटर्नशिवाय डिव्हाइस संरक्षण वैशिष्ट्ये कार्य करणार नाहीत."</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint" msgid="2986105377420905314">"तुमच्या नमुन्याशिवाय डिव्हाइस संरक्षण वैशिष्ट्ये काम करणार नाहीत.<xliff:g id="EMPTY_LINE">
 
-</xliff:g>तुमचे सेव्ह केलेले फिंगरप्रिंट देखील या डि‍व्हाइसवरून दूर केले जातील आणि तुम्ही तुमचा फोन अनलॉक करण्यास, खरेदींना अधिकृत करण्यास किंवा त्यांच्यासह अॅप्समध्ये साइन इन करण्यास सक्षम राहणार नाही."</string>
+</xliff:g>तुमचे सेव्ह केलेले फिंगरप्रिंट देखील या डि‍व्हाइसवरून दूर केले जातील आणि तुम्ही तुमचा फोन अनलॉक करण्यास, खरेदींना अधिकृत करण्यास किंवा त्यांच्यासह ॲप्समध्ये साइन इन करण्यास सक्षम राहणार नाही."</string>
     <string name="unlock_disable_frp_warning_content_pin" msgid="586996206210265131">"तुमच्या पिनशिवाय डिव्हाइस संरक्षण वैशिष्ट्ये कार्य करणार नाहीत."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint" msgid="3370462835533123695">"तुमच्या पिनशिवाय डिव्हाइस संरक्षण वैशिष्ट्ये काम करणार नाहीत.<xliff:g id="EMPTY_LINE">
 
-</xliff:g>तुमच्या सेव्ह केलेल्या फिंगरप्रिंट देखील या डिव्हाइस मधून काढल्या जातील आणि तुम्ही तुमचा फोन अनलॉक, खरेदींना अधिकृत किंवा त्या वापरून अॅप्समध्ये साइन इन करू शकणार नाही."</string>
+</xliff:g>तुमच्या सेव्ह केलेल्या फिंगरप्रिंट देखील या डिव्हाइस मधून काढल्या जातील आणि तुम्ही तुमचा फोन अनलॉक, खरेदींना अधिकृत किंवा त्या वापरून ॲप्समध्ये साइन इन करू शकणार नाही."</string>
     <string name="unlock_disable_frp_warning_content_password" msgid="5420612686852555537">"तुमच्या पासवर्डाशिवाय डिव्हाइस संरक्षण वैशिष्ट्ये कार्य करणार नाहीत."</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint" msgid="3595476296430536798">"तुमच्या पासवर्डशिवाय डिव्हाइस संरक्षण वैशिष्ट्ये काम करणार नाहीत.<xliff:g id="EMPTY_LINE">
 
-</xliff:g>तुमच्या सेव्ह केलेल्या फिंगरप्रिंट देखील या डिव्हाइस मधून काढल्या जातील आणि तुम्ही तुमचा फोन अनलॉक करू शकणार नाही, खरेदींना अधिकृत करू शकणार नाही किंवा त्या वापरून अॅप्समध्ये साइन इन करू शकणार नाही."</string>
+</xliff:g>तुमच्या सेव्ह केलेल्या फिंगरप्रिंट देखील या डिव्हाइस मधून काढल्या जातील आणि तुम्ही तुमचा फोन अनलॉक करू शकणार नाही, खरेदींना अधिकृत करू शकणार नाही किंवा त्या वापरून ॲप्समध्ये साइन इन करू शकणार नाही."</string>
     <string name="unlock_disable_frp_warning_content_unknown" msgid="1550718040483548220">"तुमच्या स्क्रीनलॉकशिवाय डिव्हाइस संरक्षण वैशिष्ट्ये कार्य करणार नाहीत."</string>
     <string name="unlock_disable_frp_warning_content_unknown_fingerprint" msgid="3679351662094349506">"तुमच्या स्क्रीन लॉकशिवाय डिव्हाइस संरक्षण वैशिष्ट्ये काम करणार नाहीत.<xliff:g id="EMPTY_LINE">
 
-</xliff:g>तुमच्या सेव्ह केलेल्या फिंगरप्रिंट देखील या डिव्हाइस मधून काढल्या जातील आणि तुम्ही तुमचा फोन अनलॉक, खरेदींना अधिकृत किंवा त्या वापरून अॅप्समध्ये साइन इन करू शकणार नाही."</string>
+</xliff:g>तुमच्या सेव्ह केलेल्या फिंगरप्रिंट देखील या डिव्हाइस मधून काढल्या जातील आणि तुम्ही तुमचा फोन अनलॉक, खरेदींना अधिकृत किंवा त्या वापरून ॲप्समध्ये साइन इन करू शकणार नाही."</string>
     <string name="unlock_disable_frp_warning_content_pattern_profile" msgid="8682200103576359918">"आपल्या नमुन्याशिवाय प्रोफाईल संरक्षण वैशिष्ट्ये कार्य करणार नाहीत."</string>
     <string name="unlock_disable_frp_warning_content_pattern_fingerprint_profile" msgid="6718155854303231675">"तुमच्या नमुन्याशिवाय प्रोफाइल संरक्षण वैशिष्ट्ये काम करणार नाहीत.<xliff:g id="EMPTY_LINE">
 
-</xliff:g>तुमच्या सेव्ह केलेल्या फिंगरप्रिंट देखील या प्रोफाइलमधून काढल्या जातील आणि तुम्ही तुमची प्रोफाइल अनलॉक, खरेदींना अधिकृत किंवा त्या वापरून अॅप्समध्ये साइन इन करू शकणार नाही."</string>
+</xliff:g>तुमच्या सेव्ह केलेल्या फिंगरप्रिंट देखील या प्रोफाइलमधून काढल्या जातील आणि तुम्ही तुमची प्रोफाइल अनलॉक, खरेदींना अधिकृत किंवा त्या वापरून ॲप्समध्ये साइन इन करू शकणार नाही."</string>
     <string name="unlock_disable_frp_warning_content_pin_profile" msgid="7790688070593867767">"आपल्या पिनशिवाय प्रोफाईल संरक्षण वैशिष्ट्ये कार्य करणार नाहीत."</string>
     <string name="unlock_disable_frp_warning_content_pin_fingerprint_profile" msgid="4209564603132870532">"तुमच्या पिनशिवाय प्रोफाइल संरक्षण वैशिष्ट्ये काम करणार नाहीत.<xliff:g id="EMPTY_LINE">
 
-</xliff:g>तुमच्या सेव्ह केलेल्या फिंगरप्रिंट देखील या प्रोफाइलमधून काढल्या जातील आणि तुम्ही तुमची प्रोफाइल अनलॉक, खरेदींना अधिकृत किंवा त्या वापरून अॅप्समध्ये साइन इन करू शकणार नाही."</string>
+</xliff:g>तुमच्या सेव्ह केलेल्या फिंगरप्रिंट देखील या प्रोफाइलमधून काढल्या जातील आणि तुम्ही तुमची प्रोफाइल अनलॉक, खरेदींना अधिकृत किंवा त्या वापरून ॲप्समध्ये साइन इन करू शकणार नाही."</string>
     <string name="unlock_disable_frp_warning_content_password_profile" msgid="7569285520567674461">"आपल्या संकेतशब्दाशिवाय प्रोफाईल संरक्षण वैशिष्ट्ये कार्य करणार नाहीत."</string>
     <string name="unlock_disable_frp_warning_content_password_fingerprint_profile" msgid="2994300676764706047">"तुमच्या पासवर्डशिवाय प्रोफाइल संरक्षण वैशिष्ट्ये काम करणार नाहीत.<xliff:g id="EMPTY_LINE">
 
-</xliff:g>तुमच्या सेव्ह केलेल्या फिंगरप्रिंट देखील या प्रोफाइलमधून काढल्या जातील आणि तुम्ही तुमची प्रोफाइल अनलॉक, खरेदींना अधिकृत किंवा त्या वापरून अॅप्समध्ये साइन इन करू शकणार नाही."</string>
+</xliff:g>तुमच्या सेव्ह केलेल्या फिंगरप्रिंट देखील या प्रोफाइलमधून काढल्या जातील आणि तुम्ही तुमची प्रोफाइल अनलॉक, खरेदींना अधिकृत किंवा त्या वापरून ॲप्समध्ये साइन इन करू शकणार नाही."</string>
     <string name="unlock_disable_frp_warning_content_unknown_profile" msgid="6984215718701688202">"आपल्या स्क्रीनलॉक शिवाय प्रोफाईल संरक्षण वैशिष्ट्ये कार्य करणार नाहीत."</string>
     <string name="unlock_disable_frp_warning_content_unknown_fingerprint_profile" msgid="4994062501123299418">"तुमच्या स्क्रीन लॉकशिवाय प्रोफाइल संरक्षण वैशिष्ट्ये काम करणार नाहीत.<xliff:g id="EMPTY_LINE">
 
-</xliff:g>तुमच्या सेव्ह केलेल्या फिंगरप्रिंट देखील या प्रोफाइलमधून काढल्या जातील आणि तुम्ही तुमची प्रोफाइल अनलॉक, खरेदींना अधिकृत किंवा त्या वापरून अॅप्समध्ये साइन इन करू शकणार नाही."</string>
+</xliff:g>तुमच्या सेव्ह केलेल्या फिंगरप्रिंट देखील या प्रोफाइलमधून काढल्या जातील आणि तुम्ही तुमची प्रोफाइल अनलॉक, खरेदींना अधिकृत किंवा त्या वापरून ॲप्समध्ये साइन इन करू शकणार नाही."</string>
     <string name="unlock_disable_frp_warning_ok" msgid="7075138677177748705">"होय, काढा"</string>
     <string name="unlock_change_lock_pattern_title" msgid="2044092014872741130">"अनलॉक पॅटर्न बदला"</string>
     <string name="unlock_change_lock_pin_title" msgid="806629901095938484">"अनलॉक पिन बदला"</string>
@@ -662,7 +662,7 @@
     <string name="lockpattern_tutorial_cancel_label" msgid="6431583477570493261">"रद्द करा"</string>
     <string name="lockpattern_tutorial_continue_label" msgid="3559793618653400434">"पुढील"</string>
     <string name="lock_setup" msgid="3355847066343753943">"सेटअप पूर्ण झाले आहे"</string>
-    <string name="manage_device_admin" msgid="537804979483211453">"डिव्हाइस अ‍ॅडमिन अॅप्‍स"</string>
+    <string name="manage_device_admin" msgid="537804979483211453">"डिव्हाइस अ‍ॅडमिन ॲप्‍स"</string>
     <string name="number_of_device_admins_none" msgid="7185056721919496069">"सक्रिय अ‍ॅप्स नाहीत"</string>
     <plurals name="number_of_device_admins" formatted="false" msgid="3361891840111523393">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> सक्रिय अ‍ॅप्‍स</item>
@@ -717,7 +717,7 @@
     <string name="bluetooth_menu_advanced" msgid="8572178316357220524">"प्रगत"</string>
     <string name="bluetooth_advanced_titlebar" msgid="2142159726881547669">"प्रगत ब्लूटूथ"</string>
     <string name="bluetooth_empty_list_bluetooth_off" msgid="6351930724051893423">"ब्लूटूथ चालू असते तेव्हा, तुमचे डिव्हाइस इतर जवळच्या ब्लूटूथ डिव्हाइस सह संवाद करु शकते."</string>
-    <string name="bluetooth_scanning_on_info_message" msgid="824285504325592644">"ब्‍लूटूथ सुरू असताना, तुमचे डिव्‍हाइस इतर जवळपासच्‍या ब्‍लूटूथ डिव्‍हाइसशी संवाद साधू शकते.\n\nडिव्‍हाइस अनुभव सुधारण्‍यासाठी, अॅप्‍स आणि सेवा ब्‍लूटूथ सुरू असताना देखील, अजूनही जवळपासचे डिव्‍हाइस कधीही स्‍कॅन करू शकते. उदाहरणार्थ, याचा वापर स्‍थानावर आधारित वैशिष्‍ट्ये आणि सेवा सुधारण्‍यात केला जाऊ शकतो. तुम्‍ही हे "<annotation id="link">"स्‍कॅनिंग सेटिंग्‍ज"</annotation>" मध्‍ये जाऊन बदलू शकता."</string>
+    <string name="bluetooth_scanning_on_info_message" msgid="824285504325592644">"ब्‍लूटूथ सुरू असताना, तुमचे डिव्‍हाइस इतर जवळपासच्‍या ब्‍लूटूथ डिव्‍हाइसशी संवाद साधू शकते.\n\nडिव्‍हाइस अनुभव सुधारण्‍यासाठी, ॲप्‍स आणि सेवा ब्‍लूटूथ सुरू असताना देखील, अजूनही जवळपासचे डिव्‍हाइस कधीही स्‍कॅन करू शकते. उदाहरणार्थ, याचा वापर स्‍थानावर आधारित वैशिष्‍ट्ये आणि सेवा सुधारण्‍यात केला जाऊ शकतो. तुम्‍ही हे "<annotation id="link">"स्‍कॅनिंग सेटिंग्‍ज"</annotation>" मध्‍ये जाऊन बदलू शकता."</string>
     <string name="ble_scan_notify_text" msgid="1295915006005700650">"स्‍थान अचूकता सुधारण्‍यासाठी, सिस्टम अ‍ॅप्स आणि सेवा अद्याप ब्लूटूथ डिव्हाइस शोधू शकतात. तुम्ही हे <xliff:g id="LINK_BEGIN_0">LINK_BEGIN</xliff:g>स्कॅनिंग सेटिंग्ज<xliff:g id="LINK_END_1">LINK_END</xliff:g> मध्‍ये बदलू शकता."</string>
     <string name="bluetooth_connect_failed" msgid="4500234659813241053">"कनेक्ट होऊ शकत नाही. पुन्हा प्रयत्न करा."</string>
     <string name="device_details_title" msgid="6576953269221085300">"डिव्हाइस तपशील"</string>
@@ -741,7 +741,7 @@
     <string name="bluetooth_device_advanced_profile_header_title" msgid="102745381968579605">"यासाठी वापरा"</string>
     <string name="bluetooth_device_advanced_rename_device" msgid="5148578059584955791">"पुनर्नामित करा"</string>
     <string name="bluetooth_device_advanced_enable_opp_title" msgid="8222550640371627365">"येणार्‍या फाईल स्थानांतरणांना अनुमती द्या"</string>
-    <string name="bluetooth_pan_user_profile_summary_connected" msgid="6436258151814414028">"इंटरनेट अॅक्सेससाठी डिव्हाइसशी कनेक्ट केले"</string>
+    <string name="bluetooth_pan_user_profile_summary_connected" msgid="6436258151814414028">"इंटरनेट ॲक्सेससाठी डिव्हाइसशी कनेक्ट केले"</string>
     <string name="bluetooth_pan_nap_profile_summary_connected" msgid="1322694224800769308">"डिव्हाइससह स्थानिक इंटरनेट कनेक्शन शेअर करत आहे"</string>
     <string name="bluetooth_dock_settings" msgid="3218335822716052885">"डॉक सेटिंग्ज"</string>
     <string name="bluetooth_dock_settings_title" msgid="5543069893044375188">"ऑडिओसाठी डॉक वापरा"</string>
@@ -770,8 +770,8 @@
     <string name="rx_link_speed" msgid="5729003360923133988">"<xliff:g id="RECEIVE_LINK_SPEED">%1$d</xliff:g> Mbps"</string>
     <string name="wifi_ask_enable" msgid="2795469717302060104">"<xliff:g id="REQUESTER">%s</xliff:g> वाय-फाय चालू करू इच्छित आहे"</string>
     <string name="wifi_ask_disable" msgid="728366570145493573">"<xliff:g id="REQUESTER">%s</xliff:g> वाय-फाय बंद करू इच्छित आहे"</string>
-    <string name="art_verifier_for_debuggable_title" msgid="6029838014407791341">"डीबग करण्यायोग्य अॅप्सच्या बाइटकोडची पडताळणी करा"</string>
-    <string name="art_verifier_for_debuggable_summary" msgid="2250352478065428399">"डीबग करण्यायोग्य अॅप्ससाठी बाइटकोडची पडताळणी करण्यासाठी ART ला अनुमती द्या"</string>
+    <string name="art_verifier_for_debuggable_title" msgid="6029838014407791341">"डीबग करण्यायोग्य ॲप्सच्या बाइटकोडची पडताळणी करा"</string>
+    <string name="art_verifier_for_debuggable_summary" msgid="2250352478065428399">"डीबग करण्यायोग्य ॲप्ससाठी बाइटकोडची पडताळणी करण्यासाठी ART ला अनुमती द्या"</string>
     <string name="nfc_quick_toggle_title" msgid="6769159366307299004">"NFC"</string>
     <string name="nfc_quick_toggle_summary" product="tablet" msgid="8302974395787498915">"टॅबलेट दुसर्‍या डिव्हाइसला स्पर्श करतो तेव्हा डेटा अदलाबदलीस अनुमती द्या"</string>
     <string name="nfc_quick_toggle_summary" product="default" msgid="5237208142892767592">"फोन दुसर्‍या डिव्हाइसला स्पर्श करतो तेव्हा डेटा अदलाबदलीस अनुमती द्या"</string>
@@ -936,7 +936,7 @@
     <string name="wifi_wps_available_second_item" msgid="8427520131718215301">" (WPS उपलब्ध)"</string>
     <string name="wifi_carrier_connect" msgid="8174696557882299911">"वाहक वाय-फाय नेटवर्क"</string>
     <string name="wifi_carrier_content" msgid="4634077285415851933">"<xliff:g id="NAME">%1$s</xliff:g> ने कनेक्ट करा"</string>
-    <string name="wifi_scan_always_turnon_message" msgid="203123538572122989">"स्थान अचूकता सुधारण्यासाठी आणि इतर हेतूंसाठी, <xliff:g id="APP_NAME">%1$s</xliff:g> ला नेटवर्क स्कॅनिंग चालू करण्याची आवश्यकता आहे, वाय-फाय बंद असताना देखील.\n\nस्कॅन करू इच्छित सर्व अॅप्सना अनुमती द्यायची?"</string>
+    <string name="wifi_scan_always_turnon_message" msgid="203123538572122989">"स्थान अचूकता सुधारण्यासाठी आणि इतर हेतूंसाठी, <xliff:g id="APP_NAME">%1$s</xliff:g> ला नेटवर्क स्कॅनिंग चालू करण्याची आवश्यकता आहे, वाय-फाय बंद असताना देखील.\n\nस्कॅन करू इच्छित सर्व ॲप्सना अनुमती द्यायची?"</string>
     <string name="wifi_scan_always_turn_on_message_unknown" msgid="6162424298483845679">"वाय-फाय बंद असताना देखील, स्थान अचूकतेमध्ये सुधारणा करण्यासाठी आणि इतर कारणांसाठी नेटवर्क स्कॅनिंग सुरू करणे आवश्यक आहे.\n\nस्कॅन करायच्या असलेल्या सर्व अ‍ॅप्सना अनुमती द्यायची का?"</string>
     <string name="wifi_scan_always_turnoff_message" msgid="5538901671131941043">"हे बंद करण्यासाठी, ओव्हरफ्लो मेनू मधील प्रगत वर जा."</string>
     <string name="wifi_scan_always_confirm_allow" msgid="5355973075896817232">"अनुमती द्या"</string>
@@ -983,7 +983,7 @@
     </plurals>
     <string name="wifi_advanced_titlebar" msgid="4485841401774142908">"प्रगत वाय-फाय"</string>
     <string name="wifi_advanced_ssid_title" msgid="1552309166043760291">"SSID"</string>
-    <string name="wifi_advanced_device_mac_address_title" msgid="4486538933329213769">"डिव्हाइसचा MAC अॅड्रेस"</string>
+    <string name="wifi_advanced_device_mac_address_title" msgid="4486538933329213769">"डिव्हाइसचा MAC ॲड्रेस"</string>
     <string name="wifi_advanced_randomized_mac_address_title" msgid="1528136478606735549">"रँडमाइझ केलेला MAC पत्ता"</string>
     <string name="wifi_advanced_ip_address_title" msgid="6215297094363164846">"IP पत्ता"</string>
     <string name="wifi_details_title" msgid="8954667664081737098">"नेटवर्क तपशील"</string>
@@ -1133,9 +1133,9 @@
     <string name="color_mode_option_natural" msgid="5013837483986772758">"नैसर्गिक"</string>
     <string name="color_mode_option_boosted" msgid="8588223970257287524">"बूस्ट केलेला"</string>
     <string name="color_mode_option_saturated" msgid="4569683960058798843">"सॅच्युरेटेड"</string>
-    <string name="color_mode_option_automatic" msgid="7996505473528529568">"अॅडॅप्टिव्ह"</string>
+    <string name="color_mode_option_automatic" msgid="7996505473528529568">"ॲडॅप्टिव्ह"</string>
     <string name="color_mode_summary_natural" msgid="6624188642920403099">"फक्त अचूक रंग वापरा"</string>
-    <string name="color_mode_summary_automatic" msgid="4669516973360709431">"उठावदार आणि अचूक रंगामध्ये अॅडजस्‍ट करा"</string>
+    <string name="color_mode_summary_automatic" msgid="4669516973360709431">"उठावदार आणि अचूक रंगामध्ये ॲडजस्‍ट करा"</string>
     <string name="accelerometer_summary_on" product="tablet" msgid="429982132339828942">"टॅब्लेट फिरवताना ओरिएंटेशन आपोआप स्विच करा"</string>
     <string name="accelerometer_summary_on" product="default" msgid="1133737282813048021">"फोन फिरवताना ओरिएंटेशन आपोआप स्विच करा"</string>
     <string name="accelerometer_summary_off" product="tablet" msgid="4781734213242521682">"टॅब्लेट फिरवताना ओरिएंटेशन आपोआप स्विच करा"</string>
@@ -1162,7 +1162,7 @@
     <string name="auto_brightness_off_summary" msgid="7629228736838155268">"उपलब्ध प्रकाशासाठी समायोजित करू नका"</string>
     <string name="auto_brightness_very_high_summary" msgid="4551003097086220709">"वाढलेला बॅटरी वापर"</string>
     <string name="auto_brightness_disclaimer" msgid="871436423746343406">"उपलब्ध प्रकाशासाठी उज्ज्वलता स्तर अनुकूल करा. हे वैशिष्ट्य चालू असताना, तुम्ही तरीही उज्ज्वलता तात्पुरती समायोजित करू शकता."</string>
-    <string name="auto_brightness_description" msgid="7310335517128283729">"तुमच्या स्क्रीनचा ब्राइटनेस तुमच्या वातावरण आणि अॅक्टिव्हिटीशी आपोआप अ‍ॅडजस्ट होईल. अ‍ॅडॅप्टिव्ह ब्राइटनेसला तुमची प्राधान्ये जाणून घेण्यात मदत करण्यासाठी तुम्ही स्लाइडर मॅन्युअली हलवू शकता."</string>
+    <string name="auto_brightness_description" msgid="7310335517128283729">"तुमच्या स्क्रीनचा ब्राइटनेस तुमच्या वातावरण आणि ॲक्टिव्हिटीशी आपोआप अ‍ॅडजस्ट होईल. अ‍ॅडॅप्टिव्ह ब्राइटनेसला तुमची प्राधान्ये जाणून घेण्यात मदत करण्यासाठी तुम्ही स्लाइडर मॅन्युअली हलवू शकता."</string>
     <string name="display_white_balance_title" msgid="4093966473741329340">"व्हाइट बॅलन्स डिस्प्ले करा"</string>
     <string name="display_white_balance_summary" msgid="2432539678792029039"></string>
     <string name="adaptive_sleep_title" msgid="455088457232472047">"स्क्रीन अटेंशन"</string>
@@ -1324,7 +1324,7 @@
     <string name="status_roaming" msgid="2638800467430913403">"रोमिंग"</string>
     <string name="status_operator" msgid="2274875196954742087">"नेटवर्क"</string>
     <string name="status_wifi_mac_address" msgid="2202206684020765378">"वाय-फाय MAC पत्ता"</string>
-    <string name="status_device_wifi_mac_address" msgid="308853557862261400">"डिव्हाइसचा वाय-फाय MAC अॅड्रेस"</string>
+    <string name="status_device_wifi_mac_address" msgid="308853557862261400">"डिव्हाइसचा वाय-फाय MAC ॲड्रेस"</string>
     <string name="status_bt_address" msgid="4195174192087439720">"ब्लूटूथ पत्ता"</string>
     <string name="status_serial_number" msgid="2257111183374628137">"सिरीअल नंबर"</string>
     <string name="status_up_time" msgid="7294859476816760399">"सुरू असल्याचा कालावधी"</string>
@@ -1358,7 +1358,7 @@
     <string name="sd_format_summary" product="nosdcard" msgid="6331905044907914603">"अंतर्गत USB संचयनावरील सर्व डेटा मिटवते, जसे की संगीत आणि फोटो"</string>
     <string name="sd_format_summary" product="default" msgid="212703692181793109">"SD कार्डवरील सर्व डेटा मिटवते, जसे की संगीत आणि फोटो"</string>
     <string name="memory_clear_cache_title" msgid="5423840272171286191">"कॅश   केलेला डेटा साफ करायचा?"</string>
-    <string name="memory_clear_cache_message" msgid="4550262490807415948">"हे सर्व अॅप्ससाठी कॅश   केलेला डेटा साफ करेल."</string>
+    <string name="memory_clear_cache_message" msgid="4550262490807415948">"हे सर्व ॲप्ससाठी कॅश   केलेला डेटा साफ करेल."</string>
     <string name="mtp_ptp_mode_summary" msgid="3710436114807789270">"MTP किंवा TP कार्य सक्रिय आहे"</string>
     <string name="dlg_confirm_unmount_title" product="nosdcard" msgid="3077285629197874055">"USB स्टोरेज अनमाउंट करायचे?"</string>
     <string name="dlg_confirm_unmount_title" product="default" msgid="3634502237262534381">"SD कार्ड अनमाउंट करायचे?"</string>
@@ -1409,7 +1409,7 @@
     <string name="storage_format_failure" msgid="6032640952779735766">"<xliff:g id="NAME">%1$s</xliff:g> स्वरूपित करणे शक्य झाले नाही"</string>
     <string name="storage_rename_title" msgid="8242663969839491485">"संचयन पुनर्नामित करा"</string>
     <string name="storage_dialog_unmounted" msgid="6403320870103261477">"हे <xliff:g id="NAME_0">^1</xliff:g> सुरक्षितपणे बाहेर काढले आहे परंतु अद्याप उपलब्‍ध आहे. \n\nहे <xliff:g id="NAME_1">^1</xliff:g> वापरण्यासाठी, आपल्‍याला प्रथम ते माउंट करणे आवश्‍यक आहे."</string>
-    <string name="storage_dialog_unmountable" msgid="3732209361668282254">"हे <xliff:g id="NAME_0">^1</xliff:g> दूषित झाले आहे. \n\n हे <xliff:g id="NAME_1">^1</xliff:g> वापरण्‍यासाठी, आपल्‍याला प्रथम ते सेट करणे आव्‍ाश्यक आहे."</string>
+    <string name="storage_dialog_unmountable" msgid="3732209361668282254">"हे <xliff:g id="NAME_0">^1</xliff:g> दूषित झाले आहे. \n\n हे <xliff:g id="NAME_1">^1</xliff:g> वापरण्‍यासाठी, आपल्‍याला प्रथम ते सेट करणे आवश्यक आहे."</string>
     <string name="storage_dialog_unsupported" msgid="4503128224360482228">"हे डिव्हाइस या <xliff:g id="NAME_0">^1</xliff:g> चे सपोर्ट करत नाही. \n\nया डिव्‍हाइससह हे <xliff:g id="NAME_1">^1</xliff:g> वापरण्‍यासाठी आपल्‍याला प्रथम ते सेट करणे आवश्‍यक आहे."</string>
     <string name="storage_internal_format_details" msgid="4018647158382548820">"फॉर्मेट झाल्यानंतर, तुम्ही हे <xliff:g id="NAME_0">^1</xliff:g> इतर डिव्हाइसमध्‍ये वापरू शकता. \n\nया <xliff:g id="NAME_1">^1</xliff:g> वरील सर्व डेटा मिटविला जाईल. बॅकअप घेण्‍याचा प्रथम विचार करा. \n\n"<b>"फोटो आणि इतर मीडियाचा बॅकअप घ्‍या"</b>\n"या डिव्हाइस वरील पर्यायी स्टोरेजवर तुमच्या मीडिया फायली हलवा किंवा USB केबल वापरून त्या कॉंप्युटरवर ट्रान्सफर करा. \n\n"<b>"अ‍ॅप्सचा बॅकअप घ्‍या"</b>\n" <xliff:g id="NAME_6">^1</xliff:g> वर स्टोअर केलेली सर्व अ‍ॅप्स अनइंस्टॉल केली जातील आणि त्यांचा डेटा मिटविला जाईल. हे अ‍ॅप्स ठेवण्‍यासाठी, ते या डिव्हाइस वरील पर्यायी स्टोरेजवर हलवा."</string>
     <string name="storage_internal_unmount_details" msgid="3582802571684490057"><b>"तुम्ही <xliff:g id="NAME_0">^1</xliff:g> हे बाहेर काढता तेव्‍हा, त्यावर स्टोअर केलेले अ‍ॅप्स कार्य करणे थांबवतील आणि ते पुन्हा घातले जाईपर्यंत त्यावर स्टोअर केलेल्‍या मीडिया फायली उपलब्ध असणार नाहीत."</b>" \n\nहे <xliff:g id="NAME_1">^1</xliff:g> केवळ या डिव्‍हाइसवर कार्य करण्‍यासाठी स्वरूपित केले आहे. ते इतर कशावरही कार्य करणार नाही."</string>
@@ -1424,7 +1424,7 @@
     <string name="storage_detail_other" msgid="8404938385075638238">"इतर"</string>
     <string name="storage_detail_system" msgid="4629506366064709687">"सिस्टम"</string>
     <string name="storage_detail_explore" msgid="7911344011431568294">"<xliff:g id="NAME">^1</xliff:g> एक्सप्लोर करा"</string>
-    <string name="storage_detail_dialog_other" msgid="8845766044697204852">"इतर गोष्टींमध्ये अ‍ॅप्सवरून सेव्ह करून शेअर केलेल्या फायली, इंटरनेट किंवा ब्लूटूथ वरून डाउनलोड केलेल्या फायली, Android फायली आणि इत्यादीचा समावेश असतो. \n\n<xliff:g id="NAME">^1</xliff:g> चा दिसणाराा अाशय पाहण्यासाठी, एक्सप्लोर करा वर टॅप करा."</string>
+    <string name="storage_detail_dialog_other" msgid="8845766044697204852">"इतर गोष्टींमध्ये अ‍ॅप्सवरून सेव्ह करून शेअर केलेल्या फायली, इंटरनेट किंवा ब्लूटूथ वरून डाउनलोड केलेल्या फायली, Android फायली आणि इत्यादीचा समावेश असतो. \n\n<xliff:g id="NAME">^1</xliff:g> चा दिसणाराा आशय पाहण्यासाठी, एक्सप्लोर करा वर टॅप करा."</string>
     <string name="storage_detail_dialog_system" msgid="862835644848361569">"सिस्टममध्ये Android व्हर्जन <xliff:g id="VERSION">%s</xliff:g> रन करण्यासाठी वापरल्या जाणाऱ्या फायलींचा समावेश आहे"</string>
     <string name="storage_detail_dialog_user" msgid="3267254783294197804">"<xliff:g id="USER_0">^1</xliff:g> कडे <xliff:g id="SIZE">^2</xliff:g> स्टोरेज वापरणारे, सेव्ह केलेले फोटो, संगीत, अ‍ॅप्स किंवा इतर डेटा असू शकतो. \n\nतपशील पाहण्यासाठी, <xliff:g id="USER_1">^1</xliff:g> वर स्विच करा."</string>
     <string name="storage_wizard_init_title" msgid="5085400514028585772">"तुमचे <xliff:g id="NAME">^1</xliff:g> सेट करा"</string>
@@ -1553,7 +1553,7 @@
     <string name="reset_esim_error_msg" msgid="1356899750645220749">"डाउनलोड केलेली सिम एका एररमुळे मिटवता येत नाहीत.\n\nतुमचे डिव्हाइस रीस्टार्ट करा आणि पुन्हा प्रयत्न करा."</string>
     <string name="master_clear_title" msgid="3531267871084279512">"सर्व डेटा मिटवा (फॅक्टरी रीसेट)"</string>
     <string name="master_clear_short_title" msgid="8652450915870274285">"सर्व डेटा मिटवा (फॅक्टरी रीसेट)"</string>
-    <string name="master_clear_desc" product="tablet" msgid="2314458161059569301">"हे तुमच्या टॅबलेटच्या "<b>"अंतर्गत स्टोरेज"</b>" वरील सर्व डेटा मिटवेल, यासह:\n\n"<li>"तुमचे Google खाते"</li>\n<li>"सिस्टम आणि अॅप डेटा आणि सेटिंग्ज"</li>\n<li>"डाउनलोड केलेली अ‍ॅप्स"</li></string>
+    <string name="master_clear_desc" product="tablet" msgid="2314458161059569301">"हे तुमच्या टॅबलेटच्या "<b>"अंतर्गत स्टोरेज"</b>" वरील सर्व डेटा मिटवेल, यासह:\n\n"<li>"तुमचे Google खाते"</li>\n<li>"सिस्टम आणि ॲप डेटा आणि सेटिंग्ज"</li>\n<li>"डाउनलोड केलेली अ‍ॅप्स"</li></string>
     <string name="master_clear_desc" product="default" msgid="7647628092266675099">"हे तुमच्या फोनच्या "<b>"अंतर्गत स्टोरेज"</b>" वरील सर्व डेटा मिटवेल, यासह:\n\n"<li>"तुमचे Google खाते"</li>\n<li>"सिस्टम आणि अ‍ॅप डेटा सेटिंग्ज"</li>\n<li>"डाउनलोड केलेली अ‍ॅप्स"</li></string>
     <string name="master_clear_accounts" product="default" msgid="6412857499147999073">\n\n"तुम्ही खालील खात्यांवर सध्या साइन इन केले आहे:\n"</string>
     <string name="master_clear_other_users_present" product="default" msgid="5161423070702470742">\n\n"या डिव्‍हाइसवर इतर वापरकर्ते उपस्‍थित आहेत.\n"</string>
@@ -1622,12 +1622,12 @@
     <string name="location_app_level_permissions" msgid="2777033567595680764">"अ‍ॅप परवानगी"</string>
     <string name="location_app_permission_summary_location_off" msgid="2790918244874943070">"स्‍थान बंद आहे"</string>
     <plurals name="location_app_permission_summary_location_on" formatted="false" msgid="5336807018727349708">
-      <item quantity="other"> <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> पैकी <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> अॅप्सना स्थानाचा अ‍ॅक्सेस आहे</item>
-      <item quantity="one"> <xliff:g id="TOTAL_LOCATION_APP_COUNT_1">%2$d</xliff:g> पैकी <xliff:g id="PERMITTED_LOCATION_APP_COUNT_0">%1$d</xliff:g> अॅपला स्थानाचा अ‍ॅक्सेस आहे</item>
+      <item quantity="other"> <xliff:g id="TOTAL_LOCATION_APP_COUNT_3">%2$d</xliff:g> पैकी <xliff:g id="PERMITTED_LOCATION_APP_COUNT_2">%1$d</xliff:g> ॲप्सना स्थानाचा अ‍ॅक्सेस आहे</item>
+      <item quantity="one"> <xliff:g id="TOTAL_LOCATION_APP_COUNT_1">%2$d</xliff:g> पैकी <xliff:g id="PERMITTED_LOCATION_APP_COUNT_0">%1$d</xliff:g> ॲपला स्थानाचा अ‍ॅक्सेस आहे</item>
     </plurals>
     <string name="location_category_recent_location_access" msgid="4911449278675337490">"अलीकडील स्थान अ‍ॅक्सेस"</string>
     <string name="location_recent_location_access_view_details" msgid="1955078513330927035">"तपशील पहा"</string>
-    <string name="location_no_recent_apps" msgid="2800907699722178041">"अलीकडे कोणत्याही अॅप्सने स्थानाची विनंती केलेली नाही"</string>
+    <string name="location_no_recent_apps" msgid="2800907699722178041">"अलीकडे कोणत्याही ॲप्सने स्थानाची विनंती केलेली नाही"</string>
     <string name="location_no_recent_accesses" msgid="7489449862187886009">"अलीकडे अ‍ॅक्सेस केलेल्या अ‍ॅप्सचे स्थान नाही"</string>
     <string name="location_high_battery_use" msgid="517199943258508020">"उच्च बॅटरी वापर"</string>
     <string name="location_low_battery_use" msgid="8602232529541903596">"अल्प बॅटरी वापर"</string>
@@ -1638,18 +1638,18 @@
     <string name="location_scanning_bluetooth_always_scanning_description" msgid="1285526059945206128">"ब्लूटूथ बंद असले, तरीही अ‍ॅप्स आणि सेवांना जवळपासची डिव्हाइस कधीही स्कॅन करण्याची अनुमती द्या. याचा वापर उदाहरणार्थ, स्थान आधारित वैशिष्ट्ये आणि सेवा सुधारण्यासाठी केला जाऊ शकतो."</string>
     <string name="managed_profile_location_services" msgid="4723268446874715222">"ऑफिससाठीच्या स्थान सेवा"</string>
     <string name="location_network_based" msgid="9134175479520582215">"वाय-फाय आणि मोबाईल नेटवर्क स्थान"</string>
-    <string name="location_neighborhood_level" msgid="5141318121229984788">"आपल्या स्थानाचा अधिक जलद अंदाज घेण्यासाठी अॅप्सना Google ची स्थान सेवा वापरू द्या. अनामित स्थान डेटा संकलित केला जाईल आणि Google कडे पाठविला जाईल."</string>
+    <string name="location_neighborhood_level" msgid="5141318121229984788">"आपल्या स्थानाचा अधिक जलद अंदाज घेण्यासाठी ॲप्सना Google ची स्थान सेवा वापरू द्या. अनामित स्थान डेटा संकलित केला जाईल आणि Google कडे पाठविला जाईल."</string>
     <string name="location_neighborhood_level_wifi" msgid="4234820941954812210">"वाय-फाय द्वारे निर्धारित केलेले स्थान"</string>
     <string name="location_gps" msgid="8392461023569708478">"GPS उपग्रह"</string>
-    <string name="location_street_level" product="tablet" msgid="1669562198260860802">"तुमचे स्थान सूचित करण्यासाठी आपल्या टॅब्लेटवर अॅप्सना GPS वापरु द्या"</string>
-    <string name="location_street_level" product="default" msgid="4617445745492014203">"तुमचे स्थान सूचित करण्यासाठी आपल्या फोनवर अॅप्सना GPS वापरु द्या"</string>
+    <string name="location_street_level" product="tablet" msgid="1669562198260860802">"तुमचे स्थान सूचित करण्यासाठी आपल्या टॅब्लेटवर ॲप्सना GPS वापरु द्या"</string>
+    <string name="location_street_level" product="default" msgid="4617445745492014203">"तुमचे स्थान सूचित करण्यासाठी आपल्या फोनवर ॲप्सना GPS वापरु द्या"</string>
     <string name="assisted_gps" msgid="4649317129586736885">"साहाय्यक GPS वापरा"</string>
     <string name="assisted_gps_enabled" msgid="8751899609589792803">"GPS ला साहाय्य करण्यासाठी सर्व्हर वापरा (नेटवर्क वापर कमी करण्यासाठी अनचेक करा)"</string>
     <string name="assisted_gps_disabled" msgid="6982698333968010748">"GPS ला साहाय्य करण्यासाठी सर्व्हर वापरा (GPS कामगिरी सुधारण्यासाठी अनचेक करा)"</string>
     <string name="use_location_title" msgid="5206937465504979977">"स्थान आणि Google शोध"</string>
     <string name="use_location_summary" msgid="3978805802386162520">"Google ला शोध परिणाम आणि अन्य सेवा सुधारण्यासाठी तुमचे स्थान वापरू द्या"</string>
     <string name="location_access_title" msgid="7064108942964081243">"माझी स्थाने अ‍ॅक्सेस करा"</string>
-    <string name="location_access_summary" msgid="69031404093194341">"तुमची परवानगी विचारणार्‍या अॅप्सना तुमची स्थान माहिती वापरु द्या"</string>
+    <string name="location_access_summary" msgid="69031404093194341">"तुमची परवानगी विचारणार्‍या ॲप्सना तुमची स्थान माहिती वापरु द्या"</string>
     <string name="location_sources_heading" msgid="1278732419851088319">"स्थान स्रोत"</string>
     <string name="about_settings" product="tablet" msgid="593457295516533765">"टॅबलेट विषयी"</string>
     <string name="about_settings" product="default" msgid="1743378368185371685">"फोन विषयी"</string>
@@ -1744,7 +1744,7 @@
     <string name="lockpattern_settings_change_lock_pattern" msgid="1123908306116495545">"अनलॉक पॅटर्न बदला"</string>
     <string name="lockpattern_settings_help_how_to_record" msgid="2614673439060830433">"अनलॉक पॅटर्न कसा काढावा"</string>
     <string name="lockpattern_too_many_failed_confirmation_attempts" msgid="6909161623701848863">"खूप चुकीचे प्रयत्न. <xliff:g id="NUMBER">%d</xliff:g> सेकंदांमध्‍ये पुन्हा प्रयत्न करा."</string>
-    <string name="activity_not_found" msgid="5551664692991605325">"अॅप्लिकेशन आपल्या फोनवर इंस्टॉल केलेला नाही."</string>
+    <string name="activity_not_found" msgid="5551664692991605325">"ॲप्लिकेशन आपल्या फोनवर इंस्टॉल केलेला नाही."</string>
     <string name="lock_settings_profile_title" msgid="2121876391814535295">"कार्य प्रोफाइल सुरक्षा"</string>
     <string name="lock_settings_profile_screen_lock_title" msgid="3334747927367115256">"कार्य प्रोफाईल स्क्रीन लॉक"</string>
     <string name="lock_settings_profile_unification_title" msgid="4973102698492659123">"एक लॉक वापरा"</string>
@@ -1799,10 +1799,10 @@
     <string name="clear_user_data_text" msgid="355574089263023363">"स्‍टोरेज साफ करा"</string>
     <string name="app_factory_reset" msgid="6635744722502563022">"अपडेट अनइंस्टॉल करा"</string>
     <string name="auto_launch_enable_text" msgid="4275746249511874845">"तुम्ही काही क्रियांसाठी डीफॉल्टनुसार हा अ‍ॅप लाँच करणे निवडले आहे."</string>
-    <string name="always_allow_bind_appwidgets_text" msgid="566822577792032925">"तुम्ही या अॅपला विजेट तयार करण्याची आणि त्यांच्या डेटामध्ये प्रवेश करण्याची अनुमती देण्यासाठी निवडले आहे."</string>
+    <string name="always_allow_bind_appwidgets_text" msgid="566822577792032925">"तुम्ही या ॲपला विजेट तयार करण्याची आणि त्यांच्या डेटामध्ये प्रवेश करण्याची अनुमती देण्यासाठी निवडले आहे."</string>
     <string name="auto_launch_disable_text" msgid="7800385822185540166">"कोणताही डीफॉल्ट सेट केलेला नाही."</string>
     <string name="clear_activities" msgid="7408923511535174430">"डीफॉल्ट साफ करा"</string>
-    <string name="screen_compatibility_text" msgid="1616155457673106022">"आपल्या स्क्रीनसाठी या अॅपची रचना केली जाऊ शकत नाही. तुम्ही येथे आपल्या स्क्रीनवर तो कसा समायोजित करतो हे नियंत्रित करू शकता."</string>
+    <string name="screen_compatibility_text" msgid="1616155457673106022">"आपल्या स्क्रीनसाठी या ॲपची रचना केली जाऊ शकत नाही. तुम्ही येथे आपल्या स्क्रीनवर तो कसा समायोजित करतो हे नियंत्रित करू शकता."</string>
     <string name="ask_compatibility" msgid="7225195569089607846">"लाँच केल्यानंतर विचारा"</string>
     <string name="enable_compatibility" msgid="5806819252068617811">"अ‍ॅप स्केल करा"</string>
     <string name="unknown" msgid="1592123443519355854">"अज्ञात"</string>
@@ -1837,7 +1837,7 @@
     <string name="dlg_cancel" msgid="1674753358972975911">"रद्द करा"</string>
     <string name="app_not_found_dlg_title" msgid="3127123411738434964"></string>
     <string name="app_not_found_dlg_text" msgid="4893589904687340011">"इंस्टॉल अ‍ॅप्सच्या सूचीमध्ये अ‍ॅप आढळला नाही."</string>
-    <string name="clear_failed_dlg_text" msgid="8651231637137025815">"अॅपसाठी स्‍टोरेज साफ करता आले नाही."</string>
+    <string name="clear_failed_dlg_text" msgid="8651231637137025815">"ॲपसाठी स्‍टोरेज साफ करता आले नाही."</string>
     <string name="join_two_items" msgid="1336880355987539064">"<xliff:g id="FIRST_ITEM">%1$s</xliff:g> आणि <xliff:g id="SECOND_ITEM">%2$s</xliff:g>"</string>
     <string name="join_two_unrelated_items" msgid="1873827777191260824">"<xliff:g id="FIRST_ITEM">%1$s</xliff:g>, <xliff:g id="SECOND_ITEM">%2$s</xliff:g>"</string>
     <string name="computing_size" msgid="1599186977475211186">"संगणन…"</string>
@@ -1869,7 +1869,7 @@
     <string name="app_ops_never_used" msgid="9114608022906887802">"(कधीही न वापरलेले)"</string>
     <string name="no_default_apps" msgid="2915315663141025400">"कोणतेही डीफॉल्‍ट अ‍ॅप्स नाहीत."</string>
     <string name="storageuse_settings_title" msgid="5657014373502630403">"संचयन वापर"</string>
-    <string name="storageuse_settings_summary" msgid="3748286507165697834">"अॅप्सद्वारे वापरलेले संचयन पहा"</string>
+    <string name="storageuse_settings_summary" msgid="3748286507165697834">"ॲप्सद्वारे वापरलेले संचयन पहा"</string>
     <string name="service_restarting" msgid="2242747937372354306">"रीस्टार्ट करत आहे"</string>
     <string name="cached" msgid="1059590879740175019">"पार्श्वभूमी प्रक्रिया कॅश   केली"</string>
     <string name="no_running_services" msgid="2059536495597645347">"काहीही चालत नाही."</string>
@@ -1931,7 +1931,7 @@
     <string name="auto_punctuate_summary" msgid="4372126865670574837">"\".\" घालण्यासाठी Space की दोनदा दाबा"</string>
     <string name="show_password" msgid="4837897357002495384">"पासवर्ड दाखवा"</string>
     <string name="show_password_summary" msgid="3365397574784829969">"तुम्ही टाइप कराल त्‍याप्रमाणे वर्ण थोडक्‍यात डिस्प्ले करा"</string>
-    <string name="spellchecker_security_warning" msgid="9060897418527708922">"हा शब्दलेखन तपासक तुम्ही पासवर्ड आणि क्रेडिट कार्ड नंबर यासारख्या वैयक्तिक डेटासह, टाइप करता तो सर्व मजकूर संकलित करण्यात सक्षम होऊ शकतो. हा <xliff:g id="SPELLCHECKER_APPLICATION_NAME">%1$s</xliff:g> अॅपवरून येतो. हा शब्दलेखन तपासक वापरायचा?"</string>
+    <string name="spellchecker_security_warning" msgid="9060897418527708922">"हा शब्दलेखन तपासक तुम्ही पासवर्ड आणि क्रेडिट कार्ड नंबर यासारख्या वैयक्तिक डेटासह, टाइप करता तो सर्व मजकूर संकलित करण्यात सक्षम होऊ शकतो. हा <xliff:g id="SPELLCHECKER_APPLICATION_NAME">%1$s</xliff:g> ॲपवरून येतो. हा शब्दलेखन तपासक वापरायचा?"</string>
     <string name="spellchecker_quick_settings" msgid="246728645150092058">"सेटिंग्ज"</string>
     <string name="spellchecker_language" msgid="6041050114690541437">"भाषा"</string>
     <string name="keyboard_and_input_methods_category" msgid="4580907662493721491">"कीबोर्ड"</string>
@@ -2029,7 +2029,7 @@
     <string name="accessibility_preference_magnification_summary" msgid="5867883657521404509">"स्क्रीनवर झूम इन करा"</string>
     <string name="accessibility_screen_magnification_short_summary" msgid="3411979839172752057">"झूम करण्यासाठी 3 वेळा टॅप करा"</string>
     <string name="accessibility_screen_magnification_navbar_short_summary" msgid="3693116360267980492">"झूम करण्यासाठी बटणावर टॅप करा"</string>
-    <string name="accessibility_screen_magnification_summary" msgid="5258868553337478505"><b>"झूम करण्यासाठी"</b>", स्क्रीनवर 3 वेळा पटपट टॅप करा.\n"<ul><li>"स्क्रोल करण्यासाठी 2 किंवा अधिक बोटांनी ड्रॅग करा"</li>\n<li>"झूम अॅडजस्ट करण्यासाठी 2 किंवा अधिक बोटांनी पिंच करा"</li></ul>\n\n<b>"तात्पुरते झूम करण्यासाठी"</b>", स्क्रीनवर 3 वेळा पटपट टॅप करा आणि तिसर्‍या टॅपवर तुमचे बोट धरून ठेवा.\n"<ul><li>"स्क्रीनवर इथेतिथे जाण्यासाठी ड्रॅग करा"</li>\n<li>"झूम कमी करण्यासाठी बोट उचला"</li></ul>\n\n"तुम्ही कीबोर्ड किंवा नेव्हिगेशन बारचा झूम वाढवू शकत नाही."</string>
+    <string name="accessibility_screen_magnification_summary" msgid="5258868553337478505"><b>"झूम करण्यासाठी"</b>", स्क्रीनवर 3 वेळा पटपट टॅप करा.\n"<ul><li>"स्क्रोल करण्यासाठी 2 किंवा अधिक बोटांनी ड्रॅग करा"</li>\n<li>"झूम ॲडजस्ट करण्यासाठी 2 किंवा अधिक बोटांनी पिंच करा"</li></ul>\n\n<b>"तात्पुरते झूम करण्यासाठी"</b>", स्क्रीनवर 3 वेळा पटपट टॅप करा आणि तिसर्‍या टॅपवर तुमचे बोट धरून ठेवा.\n"<ul><li>"स्क्रीनवर इथेतिथे जाण्यासाठी ड्रॅग करा"</li>\n<li>"झूम कमी करण्यासाठी बोट उचला"</li></ul>\n\n"तुम्ही कीबोर्ड किंवा नेव्हिगेशन बारचा झूम वाढवू शकत नाही."</string>
     <string name="accessibility_screen_magnification_navbar_summary" msgid="6700716275347612310">"मॅग्निफिकेशन सुरू असल्यास, तुम्ही तुमची स्क्रीन झूम इन करू शकता.\n\n"<b>"झूम करण्यासाठी"</b>", मॅग्निफिकेशन सुरू करा आणि त्यानंतर स्क्रीनवर कुठेही टॅप करा.\n"<ul><li>"स्क्रोल करण्यासाठी दोन किंवा अधिक बोटांनी ड्रॅग करा."</li>\n<li>"झूम अ‍ॅडजस्ट करण्यासाठी दोन किंवा अधिक बोटांनी पिंच करा"</li></ul>\n\n<b>"तात्पुरते झूम करण्यासाठी "</b>", मॅग्निफिकेशन सुरू करा आणि स्क्रीनवर कुठेही धरून ठेवा.\n"<ul><li>"स्क्रीनवर कुठेही जाण्यासाठी ड्रॅग करा "</li>\n<li>"झूम आउट करण्यासाठी बोट उचला"</li></ul>\n\n"तुम्ही कीबोर्ड किंवा नेव्हिगेशन बार वर झूम इन करू शकत नाही."</string>
     <string name="accessibility_tutorial_dialog_title_button" msgid="3682222614034474845">"उघडण्यासाठी अ‍ॅक्सेसिबिलिटी बटण वापरा"</string>
     <string name="accessibility_tutorial_dialog_title_gesture" msgid="1342726230497913398">"उघडण्यासाठी जेश्चर वापरा"</string>
@@ -2161,7 +2161,7 @@
     <string name="capabilities_list_title" msgid="86713361724771971">"यासाठी <xliff:g id="SERVICE">%1$s</xliff:g> आवश्यक आहे:"</string>
     <string name="touch_filtered_warning" msgid="8644034725268915030">"अ‍ॅप परवानगी विनंती अस्पष्‍ट करीत असल्‍याने, सेटिंग्ज आपल्या प्रतिसादाची पडताळणी करू शकत नाहीत."</string>
     <string name="enable_service_encryption_warning" msgid="3064686622453974606">"तुम्ही <xliff:g id="SERVICE">%1$s</xliff:g> चालू केल्‍यास, तुमचे डिव्हाइस डेटा एंक्रिप्शन वर्धित करण्‍यासाठी तुमचे स्क्रीन लॉक वापरणार नाही."</string>
-    <string name="secure_lock_encryption_warning" msgid="460911459695077779">"तुम्ही अॅक्सेसयोग्यता सेवा चालू केली असल्‍यामुळे, तुमचे डिव्हाइस डेटा एंक्रिप्शन वर्धित करण्‍यासाठी तुमचे स्क्रीन लॉक वापरणार नाही."</string>
+    <string name="secure_lock_encryption_warning" msgid="460911459695077779">"तुम्ही ॲक्सेसयोग्यता सेवा चालू केली असल्‍यामुळे, तुमचे डिव्हाइस डेटा एंक्रिप्शन वर्धित करण्‍यासाठी तुमचे स्क्रीन लॉक वापरणार नाही."</string>
     <string name="enable_service_pattern_reason" msgid="777577618063306751">"<xliff:g id="SERVICE">%1$s</xliff:g> चालू करण्यामुळे डेटा एंक्रिप्शनवर परिणाम होतो, तुम्हाला तुमच्या पॅटर्नची पुष्टी करण्याची आवश्यकता आहे."</string>
     <string name="enable_service_pin_reason" msgid="7882035264853248228">"<xliff:g id="SERVICE">%1$s</xliff:g> चालू करण्याने एंक्रिप्शन डेटा प्रभावित होतो, तुम्हाला तुमच्या पिन ची पुष्टी करण्याची आवश्यकता आहे."</string>
     <string name="enable_service_password_reason" msgid="1224075277603097951">"<xliff:g id="SERVICE">%1$s</xliff:g> चालू करण्यामुळे डेटा एंक्रिप्शनवर परिणाम होतो, तुम्हाला तुमच्या पासवर्डची पुष्टी करण्याची आवश्यकता आहे."</string>
@@ -2224,10 +2224,10 @@
     <string name="power_charge_remaining" msgid="6132074970943913135">"चार्ज करण्यासाठी <xliff:g id="UNTIL_CHARGED">%1$s</xliff:g>"</string>
     <string name="background_activity_title" msgid="8482171736539410135">"बॅकग्राउंड वापर मर्यादा"</string>
     <string name="background_activity_summary" msgid="8140094430510517362">"अ‍ॅपला पार्श्वभूमीत चालण्याची अनुमती द्या"</string>
-    <string name="background_activity_summary_disabled" msgid="3710669050484599847">"अॅपला पार्श्वभूमीमध्ये चालण्याची अनुमती नाही"</string>
+    <string name="background_activity_summary_disabled" msgid="3710669050484599847">"ॲपला पार्श्वभूमीमध्ये चालण्याची अनुमती नाही"</string>
     <string name="background_activity_summary_whitelisted" msgid="1079899502347973947">"बॅकग्राउंड वापर मर्यादित केला जाऊ शकत नाही"</string>
-    <string name="background_activity_warning_dialog_title" msgid="2216249969149568871">"बॅकग्राउंड अॅक्टिव्हिटी मर्यादित ठेवायची?"</string>
-    <string name="background_activity_warning_dialog_text" msgid="7049624449246121981">"तुम्‍ही एखाद्या अॅपसाठी बॅकग्राउंड अॅक्टिव्हिटी मर्यादित ठेवल्‍यास, ते व्‍यवस्थित न चालण्‍याची शक्‍यता आहे"</string>
+    <string name="background_activity_warning_dialog_title" msgid="2216249969149568871">"बॅकग्राउंड ॲक्टिव्हिटी मर्यादित ठेवायची?"</string>
+    <string name="background_activity_warning_dialog_text" msgid="7049624449246121981">"तुम्‍ही एखाद्या ॲपसाठी बॅकग्राउंड ॲक्टिव्हिटी मर्यादित ठेवल्‍यास, ते व्‍यवस्थित न चालण्‍याची शक्‍यता आहे"</string>
     <string name="background_activity_disabled_dialog_text" msgid="6133420589651880824">"हे अ‍ॅप बॅटरी ऑप्टिमाइझ करण्यासाठी सेट केलेले नसल्याने, तुम्ही ते प्रतिबंधित करू शकत नाही.\n\nअ‍ॅप प्रतिबंधित करण्यासाठी, प्रथम बॅटरी ऑप्टिमायझेशन सुरू करा"</string>
     <string name="device_screen_usage" msgid="3386088035570409683">"पूर्ण चार्ज झाल्यानंतरचा स्क्रीन वापर"</string>
     <string name="power_usage_list_summary" msgid="5584049564906462506">"पूर्ण चार्ज केल्यापासूनचा बॅटरी वापर"</string>
@@ -2247,7 +2247,7 @@
     <string name="battery_stats_phone_signal_label" msgid="4137799310329041341">"मोबाईल नेटवर्क सिग्नल"</string>
     <!-- no translation found for battery_stats_last_duration (1535831453827905957) -->
     <skip />
-    <string name="awake" msgid="387122265874485088">"डिव्हाइस अॅक्टिव्हेट होण्याची वेळ"</string>
+    <string name="awake" msgid="387122265874485088">"डिव्हाइस ॲक्टिव्हेट होण्याची वेळ"</string>
     <string name="wifi_on_time" msgid="3208518458663637035">"वाय-फाय चालू केल्याची वेळ"</string>
     <string name="bluetooth_on_time" msgid="3056108148042308690">"वाय-फाय चालू केल्याची वेळ"</string>
     <string name="advanced_battery_title" msgid="6768618303037280828">"बॅटरी वापर"</string>
@@ -2287,7 +2287,7 @@
       <item quantity="one">%1$s नुकतेच निर्बंधित केले</item>
     </plurals>
     <plurals name="battery_tip_restrict_summary" formatted="false" msgid="5768962491638423979">
-      <item quantity="other">%2$d अॅप्सचा बॅकग्राउंड बॅटरी वापर जास्त आहे</item>
+      <item quantity="other">%2$d ॲप्सचा बॅकग्राउंड बॅटरी वापर जास्त आहे</item>
       <item quantity="one">%1$s चा बॅकग्राउंड बॅटरी वापर जास्त आहे</item>
     </plurals>
     <plurals name="battery_tip_restrict_handled_summary" formatted="false" msgid="1040488674178753191">
@@ -2303,7 +2303,7 @@
     <string name="battery_tip_restrict_apps_more_than_5_dialog_message" msgid="582641081128076191">"बॅटरीची बचत करण्यासाठी, या अ‍ॅप्सना बॅकग्राउंडवर बॅटरीचा वापर करण्यापासून थांबवा. प्रतिबंधित अ‍ॅप्स योग्यरीत्या काम करणार नाहीत आणि सूचना येण्यास उशीर होऊ शकतो.\n\nअ‍ॅप्स:\n<xliff:g id="APP_LIST">%1$s</xliff:g>."</string>
     <string name="battery_tip_restrict_app_dialog_ok" msgid="8291115820018013353">"प्रतिबंधित करा"</string>
     <string name="battery_tip_unrestrict_app_dialog_title" msgid="4321334634106715162">"निर्बंध काढायचा?"</string>
-    <string name="battery_tip_unrestrict_app_dialog_message" msgid="6537761705584610231">"या अॅपला बॅकग्राउंडमध्ये बॅटरी वापरता येईल. तुमची बॅटरी अपेक्षेपेक्षा लवकर संपू शकते."</string>
+    <string name="battery_tip_unrestrict_app_dialog_message" msgid="6537761705584610231">"या ॲपला बॅकग्राउंडमध्ये बॅटरी वापरता येईल. तुमची बॅटरी अपेक्षेपेक्षा लवकर संपू शकते."</string>
     <string name="battery_tip_unrestrict_app_dialog_ok" msgid="6022058431218137646">"काढा"</string>
     <string name="battery_tip_unrestrict_app_dialog_cancel" msgid="3058235875830858902">"रद्द करा"</string>
     <string name="battery_tip_dialog_summary_message" product="default" msgid="4628448253185085796">"तुमची अ‍ॅप्स योग्य प्रमाणात बॅटरी वापरत आहेत. तुमची अ‍ॅप्स जास्त बॅटरी वापरत असल्यास तुमचा फोन तुम्ही करू शकता अशा कृत्या सुचवेल.\n\nबॅटरी संपत आली असल्यास तुम्ही कायम बॅटरी सेव्हर सुरू करू शकता."</string>
@@ -2311,20 +2311,20 @@
     <string name="battery_tip_dialog_summary_message" product="device" msgid="6753742263807939789">"तुमची अ‍ॅप्स योग्य प्रमाणात बॅटरी वापरत आहेत. तुमची अ‍ॅप्स जास्त बॅटरी वापरत असल्यास तुमचे डिव्हाइस तुम्ही करू शकता अशा क्रिया सुचवेल. \n\nबॅटरी संपत आली असल्यास तुम्ही कायम बॅटरी सेव्हर सुरू करू शकता."</string>
     <string name="smart_battery_manager_title" msgid="870632749556793417">"बॅटरी व्यवस्थापक"</string>
     <string name="smart_battery_title" msgid="6218785691872466076">"अ‍ॅप्स आपोआप व्यवस्थापित करा"</string>
-    <string name="smart_battery_summary" msgid="1339184602000004058">"तुम्ही नेहमी वापरत नसलेल्या अॅप्सचा बॅटरी वापर मर्यादित करा"</string>
+    <string name="smart_battery_summary" msgid="1339184602000004058">"तुम्ही नेहमी वापरत नसलेल्या ॲप्सचा बॅटरी वापर मर्यादित करा"</string>
     <string name="smart_battery_footer" product="default" msgid="5555604955956219544">"जेव्हा बॅटरी व्यवस्थापकाला अ‍ॅप्सद्वारे बॅटरी जास्त वापरली जात आहे असे लक्षात येईल, तेव्हा तुमच्याकडे या अ‍ॅप्सचा वापर मर्यादित राखण्याचा पर्याय असेल. प्रतिबंधित अ‍ॅप्स योग्यरीत्या कार्य करणार नाहीत आणि सूचना येण्यास उशीर होऊ शकतो."</string>
     <string name="smart_battery_footer" product="tablet" msgid="5555604955956219544">"जेव्हा बॅटरी व्यवस्थापकाला अ‍ॅप्सद्वारे बॅटरी जास्त वापरली जात आहे असे लक्षात येईल, तेव्हा तुमच्याकडे या अ‍ॅप्सचा वापर मर्यादित राखण्याचा पर्याय असेल. प्रतिबंधित अ‍ॅप्स योग्यरीत्या कार्य करणार नाहीत आणि सूचना येण्यास उशीर होऊ शकतो."</string>
     <string name="smart_battery_footer" product="device" msgid="5555604955956219544">"जेव्हा बॅटरी व्यवस्थापकाला अ‍ॅप्सद्वारे बॅटरी जास्त वापरली जात आहे असे लक्षात येईल, तेव्हा तुमच्याकडे या अ‍ॅप्सचा वापर मर्यादित राखण्याचा पर्याय असेल. प्रतिबंधित अ‍ॅप्स योग्यरीत्या कार्य करणार नाहीत आणि सूचना येण्यास उशीर होऊ शकतो."</string>
     <string name="restricted_app_title" msgid="8982477293044330653">"प्रतिबंधित अ‍ॅप्स"</string>
     <plurals name="restricted_app_summary" formatted="false" msgid="7355687633914223530">
-      <item quantity="other">%1$d अॅप्ससाठी बॅटरीचा वापर मर्यादित करत आहे</item>
-      <item quantity="one">%1$d अॅपसाठी बॅटरीचा वापर मर्यादित करत आहे</item>
+      <item quantity="other">%1$d ॲप्ससाठी बॅटरीचा वापर मर्यादित करत आहे</item>
+      <item quantity="one">%1$d ॲपसाठी बॅटरीचा वापर मर्यादित करत आहे</item>
     </plurals>
     <string name="restricted_app_time_summary" msgid="6983512391277778623">"<xliff:g id="TIME">%1$s</xliff:g> दिवसांपूर्वी प्रतिबंधित केलेले"</string>
     <string name="restricted_app_detail_footer" msgid="6739863162364046859">"ही अ‍ॅप्स बॅकग्राउंडवर बॅटरी वापरत आहेत. प्रतिबंधित अ‍ॅप्स व्यवस्थित काम करू शकणार नाहीत आणि सूचना येण्यास उशीर होऊ शकतो."</string>
     <string name="battery_auto_restriction_title" msgid="6553271897488963709">"बॅटरी व्यवस्थापक वापरा"</string>
     <string name="battery_auto_restriction_summary" msgid="8561335400991281062">"अ‍ॅप्सची बॅटरी केव्हा संंपते ते ओळखा"</string>
-    <string name="battery_manager_on" msgid="8643310865054362396">"अॅप्सची बॅटरी केव्हा संपते ते ओळखत आहे / सुरू आहे"</string>
+    <string name="battery_manager_on" msgid="8643310865054362396">"ॲप्सची बॅटरी केव्हा संपते ते ओळखत आहे / सुरू आहे"</string>
     <string name="battery_manager_off" msgid="5473135235710343576">"बंद"</string>
     <plurals name="battery_manager_app_restricted" formatted="false" msgid="1026141135861471129">
       <item quantity="other">%1$d अ‍ॅप्स प्रतिबंधित केली</item>
@@ -2401,7 +2401,7 @@
     <string name="battery_desc_bluetooth" msgid="8069070756186680367">"ब्लूटूथ द्वारे वापरलेली बॅटरी"</string>
     <string name="battery_sugg_bluetooth_basic" msgid="4565141162650835009">"तुम्ही ब्लूटूथ वापरत नसता तेव्हा ते बंद करा"</string>
     <string name="battery_sugg_bluetooth_headset" msgid="4071352514714259230">"एका भिन्न ब्लूटूथ उपकरणावर कनेक्ट करून पहा"</string>
-    <string name="battery_desc_apps" msgid="8530418792605735226">"अॅपद्वारे वापरलेली बॅटरी"</string>
+    <string name="battery_desc_apps" msgid="8530418792605735226">"ॲपद्वारे वापरलेली बॅटरी"</string>
     <string name="battery_sugg_apps_info" msgid="6907588126789841231">"अ‍ॅप थांबवा किंवा अनइंस्टॉल करा"</string>
     <string name="battery_sugg_apps_gps" msgid="5959067516281866135">"बॅटरी बचत मोड निवडा"</string>
     <string name="battery_sugg_apps_settings" msgid="3974902365643634514">"बॅटरी वापर कमी करण्यासाठी अ‍ॅप सेटिंग्ज ऑफर करू शकतो"</string>
@@ -2497,7 +2497,7 @@
     <string name="voice_service_preference_section_title" msgid="3778706644257601021">"व्‍हॉइस इनपुट सेवा"</string>
     <string name="voice_interactor_preference_summary" msgid="1801414022026937190">"पूर्ण हॉटवर्ड आणि परस्परसंवाद"</string>
     <string name="voice_recognizer_preference_summary" msgid="669880813593690527">"मजकूर पाठविण्यासाठी सोपे उच्चारण"</string>
-    <string name="voice_interaction_security_warning" msgid="6378608263983737325">"आपल्या वतीने व्हॉइस परीक्षण नेहमी-चालू कार्यप्रदर्शन करण्यासाठी आणि व्हॉइस सक्षम अॅप्लिकेशन नियंत्रित करण्यासाठी व्हॉइस इनपुट सेवा सक्षम असेल. हे <xliff:g id="VOICE_INPUT_SERVICE_APP_NAME">%s</xliff:g> अॅप्लिकेशनावरून येते. या सेवेचा वापर सक्षम करायचा?"</string>
+    <string name="voice_interaction_security_warning" msgid="6378608263983737325">"आपल्या वतीने व्हॉइस परीक्षण नेहमी-चालू कार्यप्रदर्शन करण्यासाठी आणि व्हॉइस सक्षम ॲप्लिकेशन नियंत्रित करण्यासाठी व्हॉइस इनपुट सेवा सक्षम असेल. हे <xliff:g id="VOICE_INPUT_SERVICE_APP_NAME">%s</xliff:g> ॲप्लिकेशनावरून येते. या सेवेचा वापर सक्षम करायचा?"</string>
     <string name="tts_engine_preference_title" msgid="1578826947311494239">"प्राधान्य इंजिन"</string>
     <string name="tts_engine_settings_title" msgid="6886964122861384818">"इंजिन सेटिंग्ज"</string>
     <string name="tts_sliders_title" msgid="992059150784095263">"भाषण गती आणि पिच"</string>
@@ -2505,7 +2505,7 @@
     <string name="tts_install_voice_title" msgid="6275828614052514320">"व्हॉइस"</string>
     <string name="tts_spoken_language" msgid="5542499183472504027">"बोलली जाणारी भाषा"</string>
     <string name="tts_install_voices_title" msgid="8808823756936022641">"आवाज इंस्टॉल करा"</string>
-    <string name="tts_install_voices_text" msgid="5292606786380069134">"आवाज इंस्टॉल करण्यासाठी <xliff:g id="TTS_APP_NAME">%s</xliff:g> अॅपकडे जा"</string>
+    <string name="tts_install_voices_text" msgid="5292606786380069134">"आवाज इंस्टॉल करण्यासाठी <xliff:g id="TTS_APP_NAME">%s</xliff:g> ॲपकडे जा"</string>
     <string name="tts_install_voices_open" msgid="667467793360277465">"अ‍ॅप उघडा"</string>
     <string name="tts_install_voices_cancel" msgid="4711492804851107459">"रद्द करा"</string>
     <string name="tts_reset" msgid="2661752909256313270">"रीसेट करा"</string>
@@ -2526,7 +2526,7 @@
     <string name="credential_storage_type_hardware" msgid="6077193544333904427">"हार्डवेअर बॅकअप घेतला"</string>
     <string name="credential_storage_type_software" msgid="4403117271207715378">"केवळ सॉफ्टवेअर"</string>
     <string name="credentials_settings_not_available" msgid="7968275634486624215">"या वापरकर्त्यासाठी क्रेडेंशियल उपलब्ध नाहीत"</string>
-    <string name="credential_for_vpn_and_apps" msgid="4168197158768443365">"VPN आणि अॅप्ससाठी इंस्टॉल केले"</string>
+    <string name="credential_for_vpn_and_apps" msgid="4168197158768443365">"VPN आणि ॲप्ससाठी इंस्टॉल केले"</string>
     <string name="credential_for_wifi" msgid="6228425986551591864">"वाय-फाय साठी इंस्टॉल केले"</string>
     <string name="credentials_reset_hint" msgid="6297256880896133631">"सर्व आशय काढायचा?"</string>
     <string name="credentials_erased" msgid="2907836028586342969">"क्रेडेन्शियल स्टोरेज मिटवले आहे."</string>
@@ -2536,7 +2536,7 @@
     <string name="user_certificate" msgid="1245239718062428612">"VPN व ॲप वापरकर्ता प्रमाणपत्र"</string>
     <string name="wifi_certificate" msgid="4599070907834877135">"वाय-फाय प्रमाणपत्र"</string>
     <string name="ca_certificate_warning_title" msgid="4478333162133486865">"तुमची गोपनीयता धोक्यात आहे"</string>
-    <string name="ca_certificate_warning_description" msgid="5440294374808940938">"वेबसाइट, अॅप्स आणि VPN एंक्रिप्शनसाठी CA प्रमाणपत्रे वापरली जातात. फक्त तुमचा विश्वास असलेल्या संस्थांकडून CA प्रमाणपत्रे इंस्टॉल करा. \n\n तुम्ही CA प्रमाणपत्र इंस्टॉल केल्यास, प्रमाणपत्र मालक तुम्ही भेट दिलेल्या वेबसाइटवरून किंवा तुम्ही वापरत असलेल्या अ‍ॅप्‍सवरील माहिती, जसे की पासवर्ड, मेसेज किंवा क्रेडिट कार्ड तपशील अॅक्सेस करू शकतात - ती माहिती एंक्रिप्ट केलेली असली तरीही."</string>
+    <string name="ca_certificate_warning_description" msgid="5440294374808940938">"वेबसाइट, ॲप्स आणि VPN एंक्रिप्शनसाठी CA प्रमाणपत्रे वापरली जातात. फक्त तुमचा विश्वास असलेल्या संस्थांकडून CA प्रमाणपत्रे इंस्टॉल करा. \n\n तुम्ही CA प्रमाणपत्र इंस्टॉल केल्यास, प्रमाणपत्र मालक तुम्ही भेट दिलेल्या वेबसाइटवरून किंवा तुम्ही वापरत असलेल्या अ‍ॅप्‍सवरील माहिती, जसे की पासवर्ड, मेसेज किंवा क्रेडिट कार्ड तपशील ॲक्सेस करू शकतात - ती माहिती एंक्रिप्ट केलेली असली तरीही."</string>
     <string name="ca_certificate_warning_dont_install" msgid="4537578357155660739">"इंस्टॉल करू नका"</string>
     <string name="ca_certificate_warning_install_anyway" msgid="7493237489439243674">"तरीही इंस्टॉल करा"</string>
     <string name="cert_not_installed" msgid="6088612710464676185">"प्रमाणपत्र इंस्टॉल केलेले नाही"</string>
@@ -2570,15 +2570,15 @@
     <string name="personal_device_admin_title" msgid="2849617316347669861">"वैयक्तिक"</string>
     <string name="managed_device_admin_title" msgid="7853955652864478435">"कार्य"</string>
     <string name="no_trust_agents" msgid="7450273545568977523">"कोणतेही विश्वासू एजंट उपलब्ध नाहीत"</string>
-    <string name="add_device_admin_msg" msgid="1501847129819382149">"डिव्हाइस प्रशासक अ‍ॅप अॅक्टिव्हेट करायचे?"</string>
-    <string name="add_device_admin" msgid="4192055385312215731">"हे डिव्हाइस प्रशासक अ‍ॅप अॅक्टिव्हेट करा"</string>
+    <string name="add_device_admin_msg" msgid="1501847129819382149">"डिव्हाइस प्रशासक अ‍ॅप ॲक्टिव्हेट करायचे?"</string>
+    <string name="add_device_admin" msgid="4192055385312215731">"हे डिव्हाइस प्रशासक अ‍ॅप ॲक्टिव्हेट करा"</string>
     <string name="device_admin_add_title" msgid="3140663753671809044">"डिव्हाइस प्रशासक"</string>
     <string name="device_admin_warning" msgid="7482834776510188134">"हे प्रशासक अ‍ॅप सक्रिय केल्याने ते <xliff:g id="APP_NAME">%1$s</xliff:g> अ‍ॅपला पुढील ऑपरेशन करण्याची अनुमती देईल:"</string>
     <string name="device_admin_warning_simplified" msgid="8085544856342321981">"या डिव्हाइसचे व्यवस्थापन आणि नियंत्रिण <xliff:g id="APP_NAME">%1$s</xliff:g> कडून केले जाईल."</string>
     <string name="device_admin_status" msgid="7234814785374977990">"हे अ‍ॅडमिन अ‍ॅप सक्रिय आहे आणि ते <xliff:g id="APP_NAME">%1$s</xliff:g> अ‍ॅपला पुढील ऑपरेशन करण्याची अनुमती देते:"</string>
     <string name="profile_owner_add_title" msgid="6249331160676175009">"प्रोफाईल व्‍यवस्‍थापक सक्रिय करायचे?"</string>
     <string name="profile_owner_add_title_simplified" msgid="6856400286736117006">"पर्यवेक्षणाला अनुमती द्याची का?"</string>
-    <string name="adding_profile_owner_warning" msgid="1354474524852805802">"पुढे सुरू ठेवून, तुमच्या वापरकर्त्याचे व्यवस्थापन तुमच्या प्रशासकाद्वारे केले जाईल. हा प्रशासक तुमच्या वैयक्तिक डेटाव्यतिरिक्त संबंधित डेटा स्टोअर करण्यासही सक्षम असेल.\n\nतुमच्या प्रशासकाकडे तुमच्या नेटवर्क अॅक्टिव्हिटी तसेच वापरकर्त्याशी संबधित सेटिंग्ज, अ‍ॅक्सेस, अ‍ॅप्स आणि डेटा यांचे परीक्षण आणि व्यवस्थापन करण्याची क्षमता आहे."</string>
+    <string name="adding_profile_owner_warning" msgid="1354474524852805802">"पुढे सुरू ठेवून, तुमच्या वापरकर्त्याचे व्यवस्थापन तुमच्या प्रशासकाद्वारे केले जाईल. हा प्रशासक तुमच्या वैयक्तिक डेटाव्यतिरिक्त संबंधित डेटा स्टोअर करण्यासही सक्षम असेल.\n\nतुमच्या प्रशासकाकडे तुमच्या नेटवर्क ॲक्टिव्हिटी तसेच वापरकर्त्याशी संबधित सेटिंग्ज, अ‍ॅक्सेस, अ‍ॅप्स आणि डेटा यांचे परीक्षण आणि व्यवस्थापन करण्याची क्षमता आहे."</string>
     <string name="admin_disabled_other_options" msgid="7712694507069054530">"आपल्या प्रशासकाने इतर पर्याय अक्षम केले आहेत"</string>
     <string name="admin_more_details" msgid="7901420667346456102">"अधिक तपशील"</string>
     <string name="notification_log_title" msgid="3766148588239398464">"सूचना लॉग"</string>
@@ -2695,7 +2695,7 @@
     <string name="data_usage_app_settings" msgid="2279171379771253165">"अ‍ॅप सेटिंग्ज"</string>
     <string name="data_usage_app_restrict_background" msgid="7359227831562303223">"पार्श्वभूमीवरील डेटा"</string>
     <string name="data_usage_app_restrict_background_summary" msgid="5853552187570622572">"पार्श्वभूमीमध्‍ये मोबाइल डेटाचा वापर सुरू करा"</string>
-    <string name="data_usage_app_restrict_background_summary_disabled" msgid="7401927377070755054">"या अॅपसाठी पार्श्वभूमीवरील डेटा प्रतिबंधित करताना प्रथम मोबाईल डेटा मर्यादा सेट करा."</string>
+    <string name="data_usage_app_restrict_background_summary_disabled" msgid="7401927377070755054">"या ॲपसाठी पार्श्वभूमीवरील डेटा प्रतिबंधित करताना प्रथम मोबाईल डेटा मर्यादा सेट करा."</string>
     <string name="data_usage_app_restrict_dialog_title" msgid="1613108390242737923">"पार्श्वभूमीवरील डेटा प्रतिबंधित करायचा?"</string>
     <string name="data_usage_app_restrict_dialog" msgid="1466689968707308512">"जेव्हा फक्त मोबाईल नेटवर्क उपलब्ध असतात तेव्हा या वैशिष्ट्यामुळे पार्श्वभूमी डेटावर अवलंबून असलेला अ‍ॅप कार्य करणे थांबवते.\n\nतुम्ही अ‍ॅप मध्ये उपलब्ध असलेल्या सेटिंग्जमध्ये अधिक योग्य डेटा वापर नियंत्रणे शोधू शकता."</string>
     <string name="data_usage_restrict_denied_dialog" msgid="55012417305745608">"तुम्ही मोबाइल डेटा मर्यादा सेट करता तेव्हाच पार्श्वभूमीवरील डेटा प्रतिबंधित करणे शक्य आहे."</string>
@@ -2789,7 +2789,7 @@
     <string name="vpn_menu_lockdown" msgid="7863024538064268139">"नेहमी सुरू असलेले VPN"</string>
     <string name="vpn_no_vpns_added" msgid="5002741367858707244">"कोणतेही VPN जोडलेले नाहीत"</string>
     <string name="vpn_always_on_summary" msgid="2821344524094363617">"VPN शी नेहमी कनेक्ट केलेले रहा"</string>
-    <string name="vpn_always_on_summary_not_supported" msgid="592304911378771510">"या अॅपद्वारे समर्थित नाही"</string>
+    <string name="vpn_always_on_summary_not_supported" msgid="592304911378771510">"या ॲपद्वारे समर्थित नाही"</string>
     <string name="vpn_always_on_summary_active" msgid="8800736191241875669">"नेहमी-चालू सक्रिय"</string>
     <string name="vpn_require_connection" msgid="8388183166574269666">"VPN शिवायची कनेक्शन ब्लॉक करा"</string>
     <string name="vpn_require_connection_title" msgid="159053539340576331">"VPN कनेक्शन आवश्यक आहे?"</string>
@@ -2832,14 +2832,14 @@
       <item quantity="one">प्रमाणपत्रावर विश्वास ठेवा अथवा काढून टाका</item>
     </plurals>
     <plurals name="ssl_ca_cert_info_message_device_owner" formatted="false" msgid="1489335297837656666">
-      <item quantity="other"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> नी तुमच्या डिव्हाइस वर एक प्रमाणप‍त्र अधिकार इंस्टॉल केले आहेत, जे त्यांना ईमेल, अ‍ॅप्स आणि सुरक्षित वेबसाइटसह तुमच्या डिव्हाइस नेटवर्क अॅक्टिव्हिटीचे परीक्षण करण्याची अनुमती देऊ शकतात.\n\nया प्रमाणपत्रांंविषयी अधिक माहितीसाठी, तुमच्या प्रशासकाशी संपर्क साधा.</item>
-      <item quantity="one"><xliff:g id="MANAGING_DOMAIN_0">%s</xliff:g> नी तुमच्या डिव्हाइस वर एक प्रमाणप‍त्र अधिकार इंस्टॉल केला आहे, जो त्यांना ईमेल, अ‍ॅप्स आणि सुरक्षित वेबसाइटसह तुमच्या डिव्हाइस नेटवर्क अॅक्टिव्हिटीचे परीक्षण करण्याची अनुमती देऊ शकतो.\n\nया प्रमाणपत्राविषयी अधिक माहितीसाठी, तुमच्या प्रशासकाशी संपर्क साधा.</item>
+      <item quantity="other"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> नी तुमच्या डिव्हाइस वर एक प्रमाणप‍त्र अधिकार इंस्टॉल केले आहेत, जे त्यांना ईमेल, अ‍ॅप्स आणि सुरक्षित वेबसाइटसह तुमच्या डिव्हाइस नेटवर्क ॲक्टिव्हिटीचे परीक्षण करण्याची अनुमती देऊ शकतात.\n\nया प्रमाणपत्रांंविषयी अधिक माहितीसाठी, तुमच्या प्रशासकाशी संपर्क साधा.</item>
+      <item quantity="one"><xliff:g id="MANAGING_DOMAIN_0">%s</xliff:g> नी तुमच्या डिव्हाइस वर एक प्रमाणप‍त्र अधिकार इंस्टॉल केला आहे, जो त्यांना ईमेल, अ‍ॅप्स आणि सुरक्षित वेबसाइटसह तुमच्या डिव्हाइस नेटवर्क ॲक्टिव्हिटीचे परीक्षण करण्याची अनुमती देऊ शकतो.\n\nया प्रमाणपत्राविषयी अधिक माहितीसाठी, तुमच्या प्रशासकाशी संपर्क साधा.</item>
     </plurals>
     <plurals name="ssl_ca_cert_info_message" formatted="false" msgid="30645643499556573">
       <item quantity="other"><xliff:g id="MANAGING_DOMAIN_1">%s</xliff:g> नी आपल्या कार्य प्रोफाइलसाठी प्रमाणप‍त्र अधिकार इंस्टॉल केले आहेत, जे त्यांना ईमेल, अ‍ॅप्स आणि सुरक्षित वेबसाइटसह कार्य नेटवर्क क्रियाकलापाचे परीक्षण करण्याची अनुमती देऊ शकतात.\n\nया प्रमाणपत्रांंविषयी अधिक माहितीसाठी, तुमच्या प्रशासकाशी संपर्क साधा.</item>
       <item quantity="one"><xliff:g id="MANAGING_DOMAIN_0">%s</xliff:g> नी आपल्या कार्य प्रोफाइलसाठी एक प्रमाणप‍त्र अधिकार इंस्टॉल केला आहे, जो त्यांना ईमेल, अ‍ॅप्स आणि सुरक्षित वेबसाइटसह कार्य नेटवर्क क्रियाकलापाचे परीक्षण करण्याची अनुमती देतो.\n\nया प्रमाणपत्राविषयी अधिक माहितीसाठी, तुमच्या प्रशासकाशी संपर्क साधा.</item>
     </plurals>
-    <string name="ssl_ca_cert_warning_message" msgid="8216218659139190498">"एक तृतीय पक्ष ईमेल, अ‍ॅप्स आणि सुरक्षित वेबसाइट यासह, आपल्या नेटवर्क अॅक्टिव्हिटीचे परीक्षण करण्यास सक्षम आहे.\n\nआपल्या डीव्हाइसवर इंस्टॉल केलेले विश्वसनीय क्रेडेंशियल हे शक्य करते."</string>
+    <string name="ssl_ca_cert_warning_message" msgid="8216218659139190498">"एक तृतीय पक्ष ईमेल, अ‍ॅप्स आणि सुरक्षित वेबसाइट यासह, आपल्या नेटवर्क ॲक्टिव्हिटीचे परीक्षण करण्यास सक्षम आहे.\n\nआपल्या डीव्हाइसवर इंस्टॉल केलेले विश्वसनीय क्रेडेंशियल हे शक्य करते."</string>
     <plurals name="ssl_ca_cert_settings_button" formatted="false" msgid="2426799352517325228">
       <item quantity="other">प्रमाणपत्रे तपासा</item>
       <item quantity="one">प्रमाणपत्र तपासा</item>
@@ -2909,7 +2909,7 @@
     <string name="emergency_info_title" msgid="208607506217060337">"आणीबाणी माहिती"</string>
     <string name="emergency_info_summary" msgid="5062945162967838521">"<xliff:g id="USER_NAME">%1$s</xliff:g> साठी माहिती आणि संपर्क"</string>
     <string name="application_restrictions" msgid="8207332020898004394">"अ‍ॅप्स आणि सामग्रीला अनुमती द्या"</string>
-    <string name="apps_with_restrictions_header" msgid="3660449891478534440">"प्रतिबंध असलेले अॅप्लिकेशन"</string>
+    <string name="apps_with_restrictions_header" msgid="3660449891478534440">"प्रतिबंध असलेले ॲप्लिकेशन"</string>
     <string name="apps_with_restrictions_settings_button" msgid="3841347287916635821">"अनुप्रयोगासाठी सेटिंग्ज विस्तृत करा"</string>
     <string name="nfc_payment_settings_title" msgid="1807298287380821613">"टॅप करा आणि पे करा"</string>
     <string name="nfc_payment_how_it_works" msgid="3028822263837896720">"हे कसे काम करते"</string>
@@ -2978,7 +2978,7 @@
     <string name="restriction_nfc_enable_summary" product="tablet" msgid="3891097373396149915">"टॅबलेट दुसर्‍या डिव्हाइसला स्पर्श करतो तेव्हा डेटा अदलाबदलीस अनुमती द्या"</string>
     <string name="restriction_nfc_enable_summary" product="default" msgid="825331120501418592">"फोन दुसर्‍या डिव्हाइसला स्पर्श करतो तेव्हा डेटा अदलाबदलीस अनुमती द्या"</string>
     <string name="restriction_location_enable_title" msgid="5020268888245775164">"स्थान"</string>
-    <string name="restriction_location_enable_summary" msgid="3489765572281788755">"अॅप्सना तुमची स्थान माहिती वापरु द्या"</string>
+    <string name="restriction_location_enable_summary" msgid="3489765572281788755">"ॲप्सना तुमची स्थान माहिती वापरु द्या"</string>
     <string name="wizard_back" msgid="5567007959434765743">"परत"</string>
     <string name="wizard_next" msgid="3606212602795100640">"पुढील"</string>
     <string name="wizard_finish" msgid="3286109692700083252">"समाप्‍त"</string>
@@ -2990,7 +2990,7 @@
     <string name="sim_settings_title" msgid="6822745211458959756">"सिम कार्ड"</string>
     <string name="sim_settings_summary" msgid="4050372057097516088">"<xliff:g id="SIM_NAME">%1$s</xliff:g> - <xliff:g id="SIM_NUMBER">%2$s</xliff:g>"</string>
     <string name="sim_cards_changed_message" msgid="7900721153345139783">"सिम कार्डे बदलली"</string>
-    <string name="sim_cards_changed_message_summary" msgid="8258058274989383204">"अॅक्टिव्हिटी सेट करण्यासाठी टॅप करा"</string>
+    <string name="sim_cards_changed_message_summary" msgid="8258058274989383204">"ॲक्टिव्हिटी सेट करण्यासाठी टॅप करा"</string>
     <string name="sim_cellular_data_unavailable" msgid="9109302537004566098">"मोबाइल डेटा अनुपलब्‍ध आहे"</string>
     <string name="sim_cellular_data_unavailable_summary" msgid="5416535001368135327">"डेटा सिम निवडण्यासाठी टॅप करा"</string>
     <string name="sim_calls_always_use" msgid="7936774751250119715">"कॉल साठी हे नेहमी वापरा"</string>
@@ -3041,7 +3041,7 @@
     <string name="connected_devices_dashboard_no_driving_mode_no_nfc_summary" msgid="5250078362483148199">"ब्लूटूथ"</string>
     <string name="app_and_notification_dashboard_title" msgid="7838365599185397539">"अ‍ॅप्स आणि सूचना"</string>
     <string name="app_and_notification_dashboard_summary" msgid="3285151907659820564">"अलीकडील अ‍ॅप्स, डीफॉल्ट अ‍ॅप्स"</string>
-    <string name="notification_settings_work_profile" msgid="3186757479243373003">"कार्य प्रोफाइलमधील अॅप्ससाठी सूचनेचा अ‍ॅक्सेस उपलब्ध नाही."</string>
+    <string name="notification_settings_work_profile" msgid="3186757479243373003">"कार्य प्रोफाइलमधील ॲप्ससाठी सूचनेचा अ‍ॅक्सेस उपलब्ध नाही."</string>
     <string name="account_dashboard_title" msgid="5895948991491438911">"खाती"</string>
     <string name="account_dashboard_default_summary" msgid="3998347400161811075">"कोणतीही खाती जोडली नाहीत"</string>
     <string name="app_default_dashboard_title" msgid="7342549305933047317">"डीफॉल्ट अ‍ॅप्स"</string>
@@ -3053,7 +3053,7 @@
     <string name="keywords_time_format" msgid="5581515674151927461">"२४-तास फॉरमॅट वापरा"</string>
     <string name="keywords_storage_files" msgid="7075933058850826819">"डाउनलोड करा"</string>
     <string name="keywords_app_default" msgid="5822717006354487071">"याने उघडा"</string>
-    <string name="keywords_applications_settings" msgid="1268353611121497450">"अॅप्लिकेशन"</string>
+    <string name="keywords_applications_settings" msgid="1268353611121497450">"ॲप्लिकेशन"</string>
     <string name="keywords_time_zone" msgid="998254736898753085">"टाइमझोन"</string>
     <string name="keywords_draw_overlay" msgid="1001120206241401007">"चॅट हेड, सिस्टम, सूचना, विंडो, डायलॉग, डिस्प्ले, इतर अ‍ॅप्सच्या टॉपवर, ड्रॉ"</string>
     <string name="keywords_flashlight" msgid="6161632177705233710">"फ्लॅशलाइट, लाइट, टॉर्च"</string>
@@ -3081,9 +3081,9 @@
     <string name="keywords_location" msgid="4132655528196729043">"जवळपासचे, स्थान, इतिहास, अहवाल देणे, GPS"</string>
     <string name="keywords_accounts" msgid="4479029747403203867">"खाते, खाते जोडा, कार्य प्रोफाइल"</string>
     <string name="keywords_users" msgid="3434190133131387942">"प्रतिबंध, प्रतिबंधित करा, प्रतिबंधित"</string>
-    <string name="keywords_keyboard_and_ime" msgid="9143339015329957107">"मजकूर सुधारणा, योग्य, ध्वनी, व्हायब्रेट, अॉटो, भाषा, जेश्चर, सुचवा, सूचना, थीम, आक्षेपार्ह, शब्द, प्रकार, ईमोजी, आंतरराष्ट्रीय"</string>
+    <string name="keywords_keyboard_and_ime" msgid="9143339015329957107">"मजकूर सुधारणा, योग्य, ध्वनी, व्हायब्रेट, ऑटो, भाषा, जेश्चर, सुचवा, सूचना, थीम, आक्षेपार्ह, शब्द, प्रकार, ईमोजी, आंतरराष्ट्रीय"</string>
     <string name="keywords_reset_apps" msgid="5293291209613191845">"रीसेट करा, प्राधान्ये, डीफॉल्‍ट"</string>
-    <string name="keywords_all_apps" msgid="7814015440655563156">"अ‍ॅप्स, डाउनलोड, अॅप्लिकेशन, सिस्टम"</string>
+    <string name="keywords_all_apps" msgid="7814015440655563156">"अ‍ॅप्स, डाउनलोड, ॲप्लिकेशन, सिस्टम"</string>
     <string name="keywords_app_permissions" msgid="4229936435938011023">"अ‍ॅप्स, परवानग्या, सुरक्षितता"</string>
     <string name="keywords_default_apps" msgid="223872637509160136">"अ‍ॅप्‍स, डीफॉल्‍ट"</string>
     <string name="keywords_ignore_optimizations" msgid="6102579291119055029">"ऑप्टिमायझेशन, डोझ, अ‍ॅप स्टँडबायकडे दुर्लक्ष करा"</string>
@@ -3142,7 +3142,7 @@
     <string name="notification_volume_option_title" msgid="6064656124416882130">"सूचना व्हॉल्यूम"</string>
     <string name="ringtone_title" msgid="5379026328015343686">"फोन रिंगटोन"</string>
     <string name="notification_ringtone_title" msgid="4468722874617061231">"डीफॉल्ट सूचना ध्वनी"</string>
-    <string name="notification_unknown_sound_title" msgid="2535027767851838335">"अॅपने प्रदान केलेला ध्वनी"</string>
+    <string name="notification_unknown_sound_title" msgid="2535027767851838335">"ॲपने प्रदान केलेला ध्वनी"</string>
     <string name="notification_sound_default" msgid="565135733949733766">"डीफॉल्ट सूचना ध्वनी"</string>
     <string name="alarm_ringtone_title" msgid="6344025478514311386">"डीफॉल्ट अलार्म ध्वनी"</string>
     <string name="vibrate_when_ringing_title" msgid="8658910997501323472">"कॉलसाठी कंपन सुरू करा"</string>
@@ -3226,7 +3226,7 @@
     <string name="zen_mode_block_effect_summary_sound" msgid="1065107568053759972">"ध्वनी आणि व्हायब्रेट"</string>
     <string name="zen_mode_block_effect_summary_some" msgid="3635646031575107456">"ध्वनी, व्हायब्रेट आणि काही व्हिज्युअल चिन्हांच्या काही सूचना"</string>
     <string name="zen_mode_block_effect_summary_all" msgid="1213328945418248026">"सूचनांचा ध्वनी, व्हायब्रेट आणि व्हिज्युअल चिन्ह"</string>
-    <string name="zen_mode_blocked_effects_footer" msgid="5710896246703497760">"मूलभूत फोन अॅक्टिव्हिटी आणि स्थितीसाठी आवश्यक सूचना कधीही लपवल्या जाणार नाहीत"</string>
+    <string name="zen_mode_blocked_effects_footer" msgid="5710896246703497760">"मूलभूत फोन ॲक्टिव्हिटी आणि स्थितीसाठी आवश्यक सूचना कधीही लपवल्या जाणार नाहीत"</string>
     <string name="zen_mode_no_exceptions" msgid="7653433997399582247">"काहीही नाही"</string>
     <string name="zen_mode_other_options" msgid="520015080445012355">"इतर पर्याय"</string>
     <string name="zen_mode_add" msgid="90014394953272517">"जोडा"</string>
@@ -3236,7 +3236,7 @@
     <string name="zen_mode_settings_dnd_manual_end_time" msgid="8860646554263965569">"व्यत्यय आणू नका <xliff:g id="FORMATTED_TIME">%s</xliff:g> पर्यंत चालू असणार आहे"</string>
     <string name="zen_mode_settings_dnd_manual_indefinite" msgid="7186615007561990908">"तुम्ही बंद करेपर्यंत व्यत्यय आणू नका सुरू राहील"</string>
     <string name="zen_mode_settings_dnd_automatic_rule" msgid="6195725842906270996">"(<xliff:g id="RULE_NAME">%s</xliff:g>) शेड्युलने व्यत्यय आणू नका आपोआप सुरू केले"</string>
-    <string name="zen_mode_settings_dnd_automatic_rule_app" msgid="1721179577382915270">"<xliff:g id="APP_NAME">%s</xliff:g> या अॅपने व्यत्यय आणू नका आपोआप चालू केले"</string>
+    <string name="zen_mode_settings_dnd_automatic_rule_app" msgid="1721179577382915270">"<xliff:g id="APP_NAME">%s</xliff:g> या ॲपने व्यत्यय आणू नका आपोआप चालू केले"</string>
     <string name="zen_mode_settings_dnd_custom_settings_footer" msgid="1965922539531521052">"<xliff:g id="RULE_NAMES">%s</xliff:g>साठी व्यत्यय आणू नका कस्टम सेटिंग्ज सह सुरू आहे."</string>
     <string name="zen_mode_settings_dnd_custom_settings_footer_link" msgid="7555742240858292255"><annotation id="link">" कस्टम सेटिंग्ज पाहा"</annotation></string>
     <string name="zen_interruption_level_priority" msgid="2078370238113347720">"केवळ प्राधान्य"</string>
@@ -3373,7 +3373,7 @@
     <string name="notification_silence_title" msgid="6986752165900591125">"सायलंट"</string>
     <string name="notification_alert_title" msgid="2267584776990348784">"सूचना देत आहे"</string>
     <string name="allow_interruption" msgid="7136150018111848721">"व्‍यत्‍ययांना अनुमती द्या"</string>
-    <string name="allow_interruption_summary" msgid="7870159391333957050">"अॅपचा आवाज येऊ द्या, व्हायब्रेट करू द्या आणि/किंवा स्‍क्रीनवर पॉप सूचना येऊ द्या"</string>
+    <string name="allow_interruption_summary" msgid="7870159391333957050">"ॲपचा आवाज येऊ द्या, व्हायब्रेट करू द्या आणि/किंवा स्‍क्रीनवर पॉप सूचना येऊ द्या"</string>
     <string name="notification_channel_summary_min" msgid="2965790706738495761">"पुल-डाउन शेडमध्ये, सूचना एका ओळीवर कोलॅप्स करा"</string>
     <string name="notification_channel_summary_low" msgid="7050068866167282765">"आवाज किंवा व्हायब्रेशनशिवाय तुम्हाला लक्ष केंद्रित करण्यास मदत करते"</string>
     <string name="notification_channel_summary_default" msgid="5753454293847059695">"आवाज किंवा व्हायब्रेशनने तुमचे लक्ष वेधून घेते"</string>
@@ -3390,7 +3390,7 @@
     </plurals>
     <string name="notifications_sent_never" msgid="1001964786456700536">"कधीही नाही"</string>
     <string name="manage_notification_access_title" msgid="7510080164564944891">"सूचना प्रवेश"</string>
-    <string name="work_profile_notification_access_blocked_summary" msgid="8748026238701253040">"कार्य प्रोफाइल सूचनांचा अॅक्‍सेस ब्‍लॉक आहे"</string>
+    <string name="work_profile_notification_access_blocked_summary" msgid="8748026238701253040">"कार्य प्रोफाइल सूचनांचा ॲक्‍सेस ब्‍लॉक आहे"</string>
     <string name="manage_notification_access_summary_zero" msgid="2409912785614953348">"अ‍ॅप्स सूचनांचे वाचन करु शकत नाहीत"</string>
     <plurals name="manage_notification_access_summary_nonzero" formatted="false" msgid="7930130030691218387">
       <item quantity="other">%d अ‍ॅप्स सूचना वाचू शकतात</item>
@@ -3400,16 +3400,16 @@
     <string name="no_notification_assistant" msgid="2818970196806227480">"काहीही नाही"</string>
     <string name="no_notification_listeners" msgid="3487091564454192821">"इंस्टॉल केलेल्या कोणत्याही अ‍ॅप्सने सूचना प्रवेशाची विनंती केली नाही."</string>
     <string name="notification_assistant_security_warning_title" msgid="300600401595343861">"<xliff:g id="SERVICE">%1$s</xliff:g> ला सूचना अ‍ॅक्सेस करण्याची अनुमती द्यायची का?"</string>
-    <string name="notification_assistant_security_warning_summary" msgid="5829972610310154776">"संपर्क नावे आणि तुम्हाला येणारे एसएमएस यासारख्या वैयक्तिक माहितीच्या समावेशासह <xliff:g id="NOTIFICATION_ASSISTANT_NAME">%1$s</xliff:g> सर्व सूचना पाहू शकेल. ते त्यांच्यामधील सूचनांमध्ये बदल करू शकेल किंवा त्यांना डिसमिस करू शकेल अथवा त्यामध्ये असलेली अ‍ॅक्शन बटणे ट्रिगर करू शकेल. \n\nयामुळे अॅपला व्यत्यय आणू नका सुरू किंवा बंद करता येईल आणि संबंधित सेटिंग्ज बदलता येतील."</string>
+    <string name="notification_assistant_security_warning_summary" msgid="5829972610310154776">"संपर्क नावे आणि तुम्हाला येणारे एसएमएस यासारख्या वैयक्तिक माहितीच्या समावेशासह <xliff:g id="NOTIFICATION_ASSISTANT_NAME">%1$s</xliff:g> सर्व सूचना पाहू शकेल. ते त्यांच्यामधील सूचनांमध्ये बदल करू शकेल किंवा त्यांना डिसमिस करू शकेल अथवा त्यामध्ये असलेली अ‍ॅक्शन बटणे ट्रिगर करू शकेल. \n\nयामुळे ॲपला व्यत्यय आणू नका सुरू किंवा बंद करता येईल आणि संबंधित सेटिंग्ज बदलता येतील."</string>
     <string name="notification_listener_security_warning_title" msgid="5522924135145843279">"<xliff:g id="SERVICE">%1$s</xliff:g> साठी सूचना प्रवेशास अनुमती द्यायची?"</string>
-    <string name="notification_listener_security_warning_summary" msgid="119203147791040151">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> तुम्ही प्राप्त करता ती संपर्क नावे आणि मजकूर मेसेज यासारख्या वैयक्तिक माहितीसह सर्व सूचना वाचण्यात सक्षम असेल. तो सूचना डिसमिस करण्यात किंवा त्यामध्ये असलेली क्रिया बटणे ट्रिगर करण्यात देखील सक्षम असेल. \n\nहे अॅपला व्यत्यय आणू नका चालू किंवा बंद करण्याची आणि सबंधित सेटिंग्ज बदलण्याची क्षमता देखील देईल."</string>
+    <string name="notification_listener_security_warning_summary" msgid="119203147791040151">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> तुम्ही प्राप्त करता ती संपर्क नावे आणि मजकूर मेसेज यासारख्या वैयक्तिक माहितीसह सर्व सूचना वाचण्यात सक्षम असेल. तो सूचना डिसमिस करण्यात किंवा त्यामध्ये असलेली क्रिया बटणे ट्रिगर करण्यात देखील सक्षम असेल. \n\nहे ॲपला व्यत्यय आणू नका चालू किंवा बंद करण्याची आणि सबंधित सेटिंग्ज बदलण्याची क्षमता देखील देईल."</string>
     <string name="notification_listener_disable_warning_summary" msgid="6738915379642948000">"तुम्ही <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> साठी सूचनांमधील प्रवेश बंद केल्यास, व्यत्यय आणू नका मधील प्रवेश देखील बंद केला जाऊ शकतो."</string>
     <string name="notification_listener_disable_warning_confirm" msgid="8333442186428083057">"बंद करा"</string>
     <string name="notification_listener_disable_warning_cancel" msgid="8586417377104211584">"रद्द करा"</string>
     <string name="vr_listeners_title" msgid="1318901577754715777">"VR मदतकर्ता सेवा"</string>
-    <string name="no_vr_listeners" msgid="2689382881717507390">"कोणत्याही इंस्टॉल अॅप्सनी VR मदतकर्ता सेवा म्हणून चालविण्यासाठी विनंती केली नाही."</string>
+    <string name="no_vr_listeners" msgid="2689382881717507390">"कोणत्याही इंस्टॉल ॲप्सनी VR मदतकर्ता सेवा म्हणून चालविण्यासाठी विनंती केली नाही."</string>
     <string name="vr_listener_security_warning_title" msgid="8309673749124927122">"<xliff:g id="SERVICE">%1$s</xliff:g> साठी VR सेवा प्रवेशाची अनुमती द्यायची?"</string>
-    <string name="vr_listener_security_warning_summary" msgid="6931541068825094653">"तुम्ही आभासी वास्तविकता मोडमध्ये अॅप्लिकेशन वापरता तेव्हा <xliff:g id="VR_LISTENER_NAME">%1$s</xliff:g> चालविण्यास सक्षम असेल."</string>
+    <string name="vr_listener_security_warning_summary" msgid="6931541068825094653">"तुम्ही आभासी वास्तविकता मोडमध्ये ॲप्लिकेशन वापरता तेव्हा <xliff:g id="VR_LISTENER_NAME">%1$s</xliff:g> चालविण्यास सक्षम असेल."</string>
     <string name="display_vr_pref_title" msgid="8104485269504335481">"डिव्हाइस VR मध्ये असताना"</string>
     <string name="display_vr_pref_low_persistence" msgid="5707494209944718537">"अस्पष्टता कमी करा (शिफारस केलेले)"</string>
     <string name="display_vr_pref_off" msgid="2190091757123260989">"फ्लिकर कमी करा"</string>
@@ -3421,7 +3421,7 @@
     <string name="picture_in_picture_app_detail_summary" msgid="1264019085827708920">"अ‍ॅप खुले असताना किंवा तुम्ही ते सोडल्यानंतर या अ‍ॅपला चित्रामध्ये चित्र विंडो तयार करण्याची परवानगी द्या (उदाहरणार्थ, व्हिडिओ पाहणे सुरू ठेवणे). ही विंडो तुम्ही वापरत असलेल्या इतर अ‍ॅप्सच्या वरती दिसते."</string>
     <string name="manage_zen_access_title" msgid="2611116122628520522">"व्यत्यय आणू नका प्रवेश"</string>
     <string name="zen_access_detail_switch" msgid="1188754646317450926">"व्यत्यय आणू नका ची अनुमती द्या"</string>
-    <string name="zen_access_empty_text" msgid="8772967285742259540">"कोणत्याही इंस्टॉल केलेल्या अॅप्सने व्यत्यय आणू नका प्रवेशाची विनंती केली नाही"</string>
+    <string name="zen_access_empty_text" msgid="8772967285742259540">"कोणत्याही इंस्टॉल केलेल्या ॲप्सने व्यत्यय आणू नका प्रवेशाची विनंती केली नाही"</string>
     <string name="loading_notification_apps" msgid="5031818677010335895">"अ‍ॅप्स लोड करत आहे..."</string>
     <string name="app_notifications_off_desc" msgid="8289223211387083447">"तुमच्या विनंतीनुसार Android या अ‍ॅपच्या सूचना, या डिव्हाइसवर दिसणे ब्लॉक करत आहे"</string>
     <string name="channel_notifications_off_desc" msgid="9013011134681491778">"तुमच्या विनंतीनुसार Android, सूचनांच्या या वर्गवारीचे या डिव्हाइसवर दिसणे ब्लॉक करत आहे"</string>
@@ -3432,9 +3432,9 @@
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> वर्गवाऱ्या</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> वर्गवारी</item>
     </plurals>
-    <string name="no_channels" msgid="3077375508177744586">"या अॅपने कोणत्याही सूचना पोस्ट केल्या नाहीत"</string>
+    <string name="no_channels" msgid="3077375508177744586">"या ॲपने कोणत्याही सूचना पोस्ट केल्या नाहीत"</string>
     <string name="app_settings_link" msgid="8894946007543660906">"अ‍ॅपमधील अतिरिक्त सेटिंग्ज"</string>
-    <string name="app_notification_listing_summary_zero" msgid="8046168435207424440">"सर्व अॅप्ससाठी सुरू"</string>
+    <string name="app_notification_listing_summary_zero" msgid="8046168435207424440">"सर्व ॲप्ससाठी सुरू"</string>
     <plurals name="app_notification_listing_summary_others" formatted="false" msgid="6709582776823665660">
       <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> अ‍ॅप्ससाठी बंद</item>
       <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> अ‍ॅपसाठी बंद</item>
@@ -3537,7 +3537,7 @@
     <string name="zen_mode_reminders" msgid="5445657061499098675">"रिमाइंडरना अनुमती द्या"</string>
     <string name="zen_mode_reminders_list" msgid="2853975802240340190">"रिमाइंडर्स"</string>
     <string name="zen_mode_events" msgid="6154853744271591007">"इव्हेंटना अनुमती द्या"</string>
-    <string name="zen_mode_bypassing_apps" msgid="5493729796981237881">"अॅप्सना ओव्हरराइड करण्याची अनुमती द्या"</string>
+    <string name="zen_mode_bypassing_apps" msgid="5493729796981237881">"ॲप्सना ओव्हरराइड करण्याची अनुमती द्या"</string>
     <string name="zen_mode_bypassing_apps_title" msgid="2072590348079644482">"अ‍ॅप अपवाद"</string>
     <plurals name="zen_mode_bypassing_apps_subtext" formatted="false" msgid="3726913165356014788">
       <item quantity="other"><xliff:g id="NUMBER">%1$d</xliff:g> अ‍ॅप्सच्या सूचना व्यत्यय आणू नका ला ओव्हरराइड करू शकतात</item>
@@ -3678,7 +3678,7 @@
     <string name="app_permissions" msgid="5584182129908141622">"परवानगी व्यवस्थापक"</string>
     <string name="app_permissions_summary" msgid="5163974162150406324">"<xliff:g id="APPS">%1$s</xliff:g> वापरणारी अ‍ॅप्स"</string>
     <string name="tap_to_wake" msgid="7211944147196888807">"सक्रिय करण्यासाठी टॅप करा"</string>
-    <string name="tap_to_wake_summary" msgid="4341387904987585616">"डिव्हाइस अॅक्टिव्हेट करण्यासाठी स्क्रीनवर कुठेही दोनदा टॅप करा"</string>
+    <string name="tap_to_wake_summary" msgid="4341387904987585616">"डिव्हाइस ॲक्टिव्हेट करण्यासाठी स्क्रीनवर कुठेही दोनदा टॅप करा"</string>
     <string name="domain_urls_title" msgid="3132983644568821250">"उघडणाऱ्या लिंक"</string>
     <string name="domain_urls_summary_none" msgid="2639588015479657864">"सपोर्टेड लिंक उघडू नका"</string>
     <string name="domain_urls_summary_one" msgid="3704934031930978405">"<xliff:g id="DOMAIN">%s</xliff:g> उघडा"</string>
@@ -3696,7 +3696,7 @@
     <string name="assist_and_voice_input_title" msgid="1733165754793221197">"साहाय्य आणि व्हॉइस इनपुट"</string>
     <string name="default_assist_title" msgid="8868488975409247921">"साहाय्य अ‍ॅप"</string>
     <string name="assistant_security_warning_title" msgid="8673079231955467177">"<xliff:g id="ASSISTANT_APP_NAME">%s</xliff:g> ला तुमचा साहाय्यक बनवायचे?"</string>
-    <string name="assistant_security_warning" msgid="8498726261327239136">"आपल्‍या स्क्रीनवर दृश्‍यमान असलेली किंवा अॅप्समध्‍ये प्रवेश करण्‍यायोग्य माहितीसह, आपल्‍या सिस्टम वरील वापरात असलेल्या अॅप्सविषयी माहिती वाचण्‍यात साहाय्यक सक्षम असेल."</string>
+    <string name="assistant_security_warning" msgid="8498726261327239136">"आपल्‍या स्क्रीनवर दृश्‍यमान असलेली किंवा ॲप्समध्‍ये प्रवेश करण्‍यायोग्य माहितीसह, आपल्‍या सिस्टम वरील वापरात असलेल्या ॲप्सविषयी माहिती वाचण्‍यात साहाय्यक सक्षम असेल."</string>
     <string name="assistant_security_warning_agree" msgid="7710290206928033908">"सहमत आहे"</string>
     <string name="assistant_security_warning_disagree" msgid="877419950830205913">"सहमत नाही"</string>
     <string name="choose_voice_input_title" msgid="975471367067718019">"व्हॉइस इनपुट निवडा"</string>
@@ -3726,14 +3726,14 @@
     <string name="high_power_apps" msgid="3459065925679828230">"बॅटरी ऑप्टिमायझेशन"</string>
     <string name="additional_battery_info" msgid="4754099329165411970">"वापरासंबंधी सूचना"</string>
     <string name="show_all_apps" msgid="1512506948197818534">"पूर्ण डिव्हाइस वापर दाखवा"</string>
-    <string name="hide_extra_apps" msgid="5016497281322459633">"अॅपचा वापर दाखवा"</string>
+    <string name="hide_extra_apps" msgid="5016497281322459633">"ॲपचा वापर दाखवा"</string>
     <plurals name="power_high_usage_summary" formatted="false" msgid="467347882627862744">
       <item quantity="other"><xliff:g id="NUMBER">%2$d</xliff:g> अ‍ॅप्‍स अस्वाभाविकपणे काम करत आहेत</item>
       <item quantity="one"><xliff:g id="APP">%1$s</xliff:g> अस्वाभाविकपणे काम करत आहे</item>
     </plurals>
     <plurals name="power_high_usage_title" formatted="false" msgid="3826660033363082922">
       <item quantity="other">बॅटरी संपवणारे अ‍ॅप्स</item>
-      <item quantity="one">बॅटरी संपवण्‍ाारे <xliff:g id="APP">%1$s</xliff:g></item>
+      <item quantity="one">बॅटरी संपवणारे <xliff:g id="APP">%1$s</xliff:g></item>
     </plurals>
     <string name="high_power_filter_on" msgid="3222265297576680099">"ऑप्टिमाइझ न केलेले"</string>
     <string name="high_power_on" msgid="6216293998227583810">"ऑप्टिमाइझ न केलेले"</string>
@@ -3788,9 +3788,9 @@
     <string name="background_check_pref" msgid="7550258400138010979">"पार्श्वभूमी तपासणे"</string>
     <string name="background_check_title" msgid="4534254315824525593">"पूर्ण पार्श्वभूमी प्रवेश"</string>
     <string name="assist_access_context_title" msgid="2269032346698890257">"स्क्रीनवरील मजकूर वापरा"</string>
-    <string name="assist_access_context_summary" msgid="1991421283142279560">"स्क्रीन सामग्रींमध्ये मजकूर म्हणून प्रवेश करण्यासाठी साहाय्यक अॅपला अनुमती द्या"</string>
+    <string name="assist_access_context_summary" msgid="1991421283142279560">"स्क्रीन सामग्रींमध्ये मजकूर म्हणून प्रवेश करण्यासाठी साहाय्यक ॲपला अनुमती द्या"</string>
     <string name="assist_access_screenshot_title" msgid="4034721336291215819">"स्क्रीनशॉट वापरा"</string>
-    <string name="assist_access_screenshot_summary" msgid="6761636689013259901">"स्क्रीनच्या प्रतिमेमध्ये प्रवेश करण्यासाठी साहाय्यक अॅपला अनुमती द्या"</string>
+    <string name="assist_access_screenshot_summary" msgid="6761636689013259901">"स्क्रीनच्या प्रतिमेमध्ये प्रवेश करण्यासाठी साहाय्यक ॲपला अनुमती द्या"</string>
     <string name="assist_flash_title" msgid="506661221230034891">"स्क्रीन फ्लॅश करा"</string>
     <string name="assist_flash_summary" msgid="9160668468824099262">"साहाय्य अ‍ॅप स्क्रीन किंवा स्क्रीनशॉटमधून मजकूर अ‍ॅक्सेस करते, तेव्हा स्क्रीनच्या किनारी फ्लॅश करा"</string>
     <string name="assist_footer" msgid="1982791172085896864">"साहाय्यक अ‍ॅप्स तुम्ही पाहत असलेल्या स्क्रीनवरील माहितीच्या आधारावर तुम्हाला मदत करू शकतात. काही अ‍ॅप्स तुम्हाला एकत्रित साहाय्य देण्यासाठी लॉन्चर आणि व्हॉइस इनपुट सेवा दोघांना सपोर्ट करतात."</string>
@@ -3819,7 +3819,7 @@
     <string name="zen_access_warning_dialog_summary" msgid="4015885767653010873">"व्यत्यय आणू नका चालू/बंद करण्‍यात आणि संबंधित स्‍ट्रिंगमध्‍ये बदल करण्‍यात अ‍ॅप सक्षम असेल."</string>
     <string name="zen_access_disabled_package_warning" msgid="302820100078584431">"सूचना प्रवेश चालू असल्याने चालू केलेले ठेवणे आवश्यक आहे"</string>
     <string name="zen_access_revoke_warning_dialog_title" msgid="558779234015793950">"<xliff:g id="APP">%1$s</xliff:g> साठी व्यत्यय आणू नका मध्‍ये प्रवेश करणे रद्द करायचे?"</string>
-    <string name="zen_access_revoke_warning_dialog_summary" msgid="5518216907304930148">"या अॅपने तयार केलेले सर्व व्यत्यय आणू नका नियम काढले जातील."</string>
+    <string name="zen_access_revoke_warning_dialog_summary" msgid="5518216907304930148">"या ॲपने तयार केलेले सर्व व्यत्यय आणू नका नियम काढले जातील."</string>
     <string name="ignore_optimizations_on" msgid="6915689518016285116">"ऑप्टिमाइझ करू नका"</string>
     <string name="ignore_optimizations_off" msgid="6153196256410296835">"ऑप्टिमाइझ करा"</string>
     <string name="ignore_optimizations_on_desc" msgid="3549930955839111652">"तुमची बॅटरी खूप लवकर संपवू शकते. यापुढे अ‍ॅप बॅकग्राउंड बॅटरी वापरण्यापासून प्रतिबंधित नसेल."</string>
@@ -3843,13 +3843,13 @@
     <string name="keywords_install_other_apps" msgid="761078076051006558">"अज्ञात स्रोत अ‍ॅप्स इंस्टॉल करा"</string>
     <string name="write_settings" msgid="4797457275727195681">"सिस्टम सेटिंग्ज सुधारित करा"</string>
     <string name="keywords_write_settings" msgid="6415597272561105138">"सिस्टम सेटिंग्ज सुधारित करा लिहा"</string>
-    <string name="write_settings_summary" msgid="4302268998611412696">"सिस्‍टीम सेटिंग्ज सुधारित करण्‍यासाठी <xliff:g id="COUNT_1">%2$d</xliff:g> पैकी <xliff:g id="COUNT_0">%1$d</xliff:g> अॅप्सनी अनुमती दिली"</string>
+    <string name="write_settings_summary" msgid="4302268998611412696">"सिस्‍टीम सेटिंग्ज सुधारित करण्‍यासाठी <xliff:g id="COUNT_1">%2$d</xliff:g> पैकी <xliff:g id="COUNT_0">%1$d</xliff:g> ॲप्सनी अनुमती दिली"</string>
     <string name="filter_install_sources_apps" msgid="3102976274848199118">"इतर अ‍ॅप्स इंस्टॉल करू शकतात"</string>
     <string name="filter_write_settings_apps" msgid="2914615026197322551">"सिस्‍टीम सेटिंग्ज सुधारित करू शकतात"</string>
     <string name="write_settings_title" msgid="4232152481902542284">"सिस्‍टीम सेटिंग्ज सुधारित करू शकतात"</string>
     <string name="write_system_settings" msgid="3482913590601096763">"सिस्टम सेटिंग्ज सुधारित करा"</string>
     <string name="permit_write_settings" msgid="658555006453212691">"सिस्‍टम सेटिंग्‍ज सुधारण्‍याची अनुमती द्या"</string>
-    <string name="write_settings_description" msgid="6868293938839954623">"ही परवानगी अॅपला सिस्टम सेटिंग्ज सुधारित करण्‍याची अनुमती देते."</string>
+    <string name="write_settings_description" msgid="6868293938839954623">"ही परवानगी ॲपला सिस्टम सेटिंग्ज सुधारित करण्‍याची अनुमती देते."</string>
     <string name="write_settings_on" msgid="8230580416068832239">"होय"</string>
     <string name="write_settings_off" msgid="5156104383386336233">"नाही"</string>
     <string name="external_source_switch_title" msgid="3621381992793251070">"या स्त्रोतातून अनुमती द्या"</string>
@@ -3860,7 +3860,7 @@
     <string name="screen_zoom_title" msgid="5233515303733473927">"डिस्प्ले आकार"</string>
     <string name="screen_zoom_short_summary" msgid="7291960817349834688">"स्क्रीनवरील आयटम आणखी लहान-मोठे करा"</string>
     <string name="screen_zoom_keywords" msgid="9176477565403352552">"डिस्प्ले घनता, स्क्रीन झूम, मापन, मापन करत आहे"</string>
-    <string name="screen_zoom_summary" msgid="6445488991799015407">"तुमच्या स्क्रीनवरील आयटम आणखी लहानमोठे करा. त्याने तुमच्या स्क्रीनवरील काही अॅप्सची जागा बदलू शकते."</string>
+    <string name="screen_zoom_summary" msgid="6445488991799015407">"तुमच्या स्क्रीनवरील आयटम आणखी लहानमोठे करा. त्याने तुमच्या स्क्रीनवरील काही ॲप्सची जागा बदलू शकते."</string>
     <string name="screen_zoom_preview_title" msgid="4680671508172336572">"पूर्वावलोकन"</string>
     <string name="screen_zoom_make_smaller_desc" msgid="4622359904253364742">"आणखी लहान करा"</string>
     <string name="screen_zoom_make_larger_desc" msgid="2236171043607896594">"आणखी मोठे करा"</string>
@@ -3882,7 +3882,7 @@
       <item quantity="other"><xliff:g id="COUNT">%d</xliff:g> अ‍ॅप्ससाठी बंद</item>
       <item quantity="one">1 अ‍ॅपसाठी बंद</item>
     </plurals>
-    <string name="notification_summary_none" msgid="4586376436702610">"सर्व अॅप्ससाठी चालू"</string>
+    <string name="notification_summary_none" msgid="4586376436702610">"सर्व ॲप्ससाठी चालू"</string>
     <string name="apps_summary" msgid="193158055537070092">"<xliff:g id="COUNT">%1$d</xliff:g> अ‍ॅप्स इंस्टॉल केले"</string>
     <string name="apps_summary_example" msgid="2118896966712746139">"24 अ‍ॅप्स इंस्टॉल केली"</string>
     <string name="storage_summary" msgid="3801281635351732202">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> वापरले - <xliff:g id="FREE_SPACE">%2$s</xliff:g> मोकळे"</string>
@@ -3891,7 +3891,7 @@
     <string name="display_dashboard_summary" msgid="4145888780290131488">"वॉलपेपर, निष्क्रिय करा, फॉंट आकार"</string>
     <string name="display_dashboard_summary_with_style" msgid="870920274423314524">"शैली, वॉलपेपर, स्क्रीन टाइमआउट, फॉंटचा आकार"</string>
     <string name="display_dashboard_nowallpaper_summary" msgid="7840559323355210111">"झोप, फाँटचा आकार"</string>
-    <string name="display_summary_example" msgid="9102633726811090523">"10 मिनिटे काहीच अॅक्टिव्हिटी नसेल तर निष्क्रिय करा"</string>
+    <string name="display_summary_example" msgid="9102633726811090523">"10 मिनिटे काहीच ॲक्टिव्हिटी नसेल तर निष्क्रिय करा"</string>
     <string name="memory_summary" msgid="8080825904671961872">"<xliff:g id="TOTAL_MEMORY">%2$s</xliff:g> पैकी सरासरी <xliff:g id="USED_MEMORY">%1$s</xliff:g> मेमरी वापरली"</string>
     <string name="users_summary" msgid="1674864467098487328">"<xliff:g id="USER_NAME">%1$s</xliff:g> म्हणून साइन इन केले"</string>
     <string name="payment_summary" msgid="3472482669588561110">"<xliff:g id="APP_NAME">%1$s</xliff:g> डीफॉल्ट आहे"</string>
@@ -3907,9 +3907,9 @@
     <string name="disabled_by_policy_title_suspend_packages" msgid="7872038990805477554">"हे अ‍ॅप उघडू शकत नाही"</string>
     <string name="default_admin_support_msg" msgid="4489678214035485367">"तुम्हाला कोणतेही प्रश्न असल्यास, तुमच्या आयटी प्रशासकाशी संपर्क साधा"</string>
     <string name="admin_support_more_info" msgid="8901377038510512654">"अधिक तपशील"</string>
-    <string name="admin_profile_owner_message" msgid="5860816886981109626">"तुमचा प्रशासक सेटिंग्ज, परवानग्या, कॉर्पोरेट अ‍ॅक्सेस, नेटवर्क अॅक्टिव्हिटी आणि डीव्हाइसची स्थान माहिती यांसह तुमच्या कार्य प्रोफाइलशी संबधित अॅप्सचे आणि डेटाचे परीक्षण व व्यवस्थापन करू शकतो."</string>
-    <string name="admin_profile_owner_user_message" msgid="3842630535450382172">"तुमचा प्रशासक सेटिंग्ज, परवानग्या, कॉर्पोरेट अ‍ॅक्सेस, नेटवर्क अॅक्टिव्हिटी आणि डीव्हाइसची स्थान माहिती यांसह तुमच्या कार्य प्रोफाइलशी संबधित अॅप्सचे आणि डेटाचे परीक्षण व व्यवस्थापन करू शकतो."</string>
-    <string name="admin_device_owner_message" msgid="6232893638259790789">"तुमच्या प्रशासकाकडे तुमच्या नेटवर्क अॅक्टिव्हिटी तसेच या डीव्हाइसशी संबधित सेटिंग्ज, कॉर्पोरेट अ‍ॅक्सेस, परवानग्या यांसह अ‍ॅप्स आणि डेटा यांचे परीक्षण आणि व्यवस्थापन करण्याची क्षमता आहे."</string>
+    <string name="admin_profile_owner_message" msgid="5860816886981109626">"तुमचा प्रशासक सेटिंग्ज, परवानग्या, कॉर्पोरेट अ‍ॅक्सेस, नेटवर्क ॲक्टिव्हिटी आणि डीव्हाइसची स्थान माहिती यांसह तुमच्या कार्य प्रोफाइलशी संबधित ॲप्सचे आणि डेटाचे परीक्षण व व्यवस्थापन करू शकतो."</string>
+    <string name="admin_profile_owner_user_message" msgid="3842630535450382172">"तुमचा प्रशासक सेटिंग्ज, परवानग्या, कॉर्पोरेट अ‍ॅक्सेस, नेटवर्क ॲक्टिव्हिटी आणि डीव्हाइसची स्थान माहिती यांसह तुमच्या कार्य प्रोफाइलशी संबधित ॲप्सचे आणि डेटाचे परीक्षण व व्यवस्थापन करू शकतो."</string>
+    <string name="admin_device_owner_message" msgid="6232893638259790789">"तुमच्या प्रशासकाकडे तुमच्या नेटवर्क ॲक्टिव्हिटी तसेच या डीव्हाइसशी संबधित सेटिंग्ज, कॉर्पोरेट अ‍ॅक्सेस, परवानग्या यांसह अ‍ॅप्स आणि डेटा यांचे परीक्षण आणि व्यवस्थापन करण्याची क्षमता आहे."</string>
     <string name="condition_turn_off" msgid="1960945836880080298">"बंद करा"</string>
     <string name="condition_turn_on" msgid="9089876276117874591">"चालू करा"</string>
     <string name="condition_expand_show" msgid="608202020023489939">"दर्शवा"</string>
@@ -4089,7 +4089,7 @@
     <string name="page_tab_title_summary" msgid="4070309266374993258">"सर्व"</string>
     <string name="page_tab_title_support" msgid="4407600495101788249">"टिपा आणि सपोर्ट"</string>
     <string name="developer_smallest_width" msgid="7516950434587313360">"सर्वात लहान रुंदी"</string>
-    <string name="premium_sms_none" msgid="8268105565738040566">"इंस्टॉल केलेल्या कोणत्याही अॅप्सनी प्रीमियम SMS प्रवेशाची विनंती केली नाही"</string>
+    <string name="premium_sms_none" msgid="8268105565738040566">"इंस्टॉल केलेल्या कोणत्याही ॲप्सनी प्रीमियम SMS प्रवेशाची विनंती केली नाही"</string>
     <string name="premium_sms_warning" msgid="9086859595338944882">"प्रीमियम SMS मुळे तुम्हाला कदाचित शुल्क द्यावे लागू शकेल आणि आपल्या कॅरियर बिलिंग मध्ये जोडले जाईल. तुम्ही अ‍ॅपसाठी परवानगी सक्षम केल्यास, तो अ‍ॅप वापरून तुम्ही प्रीमियम SMS पाठविण्यात सक्षम असाल."</string>
     <string name="premium_sms_access" msgid="4660047004791638305">"प्रीमियम SMS प्रवेश"</string>
     <string name="bluetooth_disabled" msgid="6244000672828617410">"बंद"</string>
@@ -4146,12 +4146,12 @@
     <string name="swipe_up_to_switch_apps_suggestion_title" msgid="1465200107913259595">"नवीन होम बटण वापरून पाहा"</string>
     <string name="swipe_up_to_switch_apps_suggestion_summary" msgid="4825314186907812743">"अ‍ॅप्स स्विच करण्यासाठी नवीन जेश्चर सुरू करा"</string>
     <string name="edge_to_edge_navigation_title" msgid="4889073348091667667">"जेश्चर नेव्हिगेशन"</string>
-    <string name="edge_to_edge_navigation_summary" msgid="511639046551586471">"होमवर जाण्यासाठी स्क्रीनच्या तळापासून वर स्वाइप करा. अॅप स्विच करण्यासाठी, तळापासून वर स्वाइप करून धरून ठेवा, त्यानंतर सोडा. मागे जाण्यासाठी डाव्या किंवा उजव्या कडेकडून स्वाइप करा."</string>
+    <string name="edge_to_edge_navigation_summary" msgid="511639046551586471">"होमवर जाण्यासाठी स्क्रीनच्या तळापासून वर स्वाइप करा. ॲप स्विच करण्यासाठी, तळापासून वर स्वाइप करून धरून ठेवा, त्यानंतर सोडा. मागे जाण्यासाठी डाव्या किंवा उजव्या कडेकडून स्वाइप करा."</string>
     <string name="legacy_navigation_title" msgid="2635061924638361565">"तीन बटण नेव्हिगेशन"</string>
     <string name="legacy_navigation_summary" msgid="5631274479304544610">"तुमच्या स्क्रीनच्या तळाशी असलेल्या बटणांसह मागे जा, होम वर जा आणि अ‍ॅप्स स्विच करा."</string>
     <string name="keywords_system_navigation" msgid="5825645072714635357">"सिस्टम नेव्हिगेशन, दोन बटण नेव्हिगेशन, तीन बटण नेव्हिगेशन, जेश्चर नेव्हिगेशन"</string>
-    <string name="gesture_not_supported_dialog_message" msgid="4315436164949864999">"तुमच्या डीफॉल्ट होम अॅप <xliff:g id="DEFAULT_HOME_APP">%s</xliff:g> द्वारे सपोर्ट केला जात नाही"</string>
-    <string name="gesture_not_supported_positive_button" msgid="8233003373902032396">"डीफॉल्ट होम अॅप स्विच करा"</string>
+    <string name="gesture_not_supported_dialog_message" msgid="4315436164949864999">"तुमच्या डीफॉल्ट होम ॲप <xliff:g id="DEFAULT_HOME_APP">%s</xliff:g> द्वारे सपोर्ट केला जात नाही"</string>
+    <string name="gesture_not_supported_positive_button" msgid="8233003373902032396">"डीफॉल्ट होम ॲप स्विच करा"</string>
     <string name="information_label" msgid="8133109685432913360">"माहिती"</string>
     <string name="low_label" msgid="1679136861385616813">"कमी"</string>
     <string name="high_label" msgid="7278863493316447831">"उच्च"</string>
@@ -4220,7 +4220,7 @@
     <string name="enterprise_privacy_apps_count_estimation_info" msgid="7433213592572082606">"अ‍ॅपची संख्या अंदाजित आहे. त्यामध्ये कदाचित Play स्टोअर च्या बाहेर इंस्टॉल केलेली अ‍ॅप्स समाविष्ट नसतील."</string>
     <plurals name="enterprise_privacy_number_packages_lower_bound" formatted="false" msgid="3005116533873542976">
       <item quantity="other">किमान <xliff:g id="COUNT_1">%d</xliff:g> अ‍ॅप्स</item>
-      <item quantity="one">किमान <xliff:g id="COUNT_0">%d</xliff:g> अॅप</item>
+      <item quantity="one">किमान <xliff:g id="COUNT_0">%d</xliff:g> ॲप</item>
     </plurals>
     <string name="enterprise_privacy_location_access" msgid="4158197200885270634">"स्थान परवानग्या"</string>
     <string name="enterprise_privacy_microphone_access" msgid="5717375623568864441">"मायक्रोफोन परवानग्या"</string>
@@ -4257,18 +4257,18 @@
     <string name="learn_more" msgid="2623878455042103404">"अधिक जाणून घ्या"</string>
     <plurals name="default_camera_app_title" formatted="false" msgid="1134677050353971363">
       <item quantity="other">कॅमेरा अ‍ॅप्स</item>
-      <item quantity="one">कॅमेरा अॅप</item>
+      <item quantity="one">कॅमेरा ॲप</item>
     </plurals>
     <string name="default_calendar_app_title" msgid="3545972964391065220">"कॅलेंडर अ‍ॅप"</string>
     <string name="default_contacts_app_title" msgid="3497370557378660098">"संपर्क अ‍ॅप"</string>
     <plurals name="default_email_app_title" formatted="false" msgid="42826975161049245">
       <item quantity="other">ईमेल क्लायंट अ‍ॅप्स</item>
-      <item quantity="one">ईमेल क्लायंट अॅप</item>
+      <item quantity="one">ईमेल क्लायंट ॲप</item>
     </plurals>
     <string name="default_map_app_title" msgid="7560143381633608567">"नकाशा अ‍ॅप"</string>
     <plurals name="default_phone_app_title" formatted="false" msgid="6714041230953195024">
       <item quantity="other">फोन अ‍ॅप्स</item>
-      <item quantity="one">फोन अॅप</item>
+      <item quantity="one">फोन ॲप</item>
     </plurals>
     <string name="app_names_concatenation_template_2" msgid="4309216198909946380">"<xliff:g id="FIRST_APP_NAME">%1$s</xliff:g>, <xliff:g id="SECOND_APP_NAME">%2$s</xliff:g>"</string>
     <string name="app_names_concatenation_template_3" msgid="8949045544491604376">"<xliff:g id="FIRST_APP_NAME">%1$s</xliff:g>, <xliff:g id="SECOND_APP_NAME">%2$s</xliff:g>, <xliff:g id="THIRD_APP_NAME">%3$s</xliff:g>"</string>
@@ -4290,7 +4290,7 @@
     <string name="webview_disabled_for_user" msgid="1216426047631256825">"(<xliff:g id="USER">%s</xliff:g> वापरकर्त्‍यासाठी अक्षम केले)"</string>
     <string name="autofill_app" msgid="7338387238377914374">"ऑटोफिल सेवा"</string>
     <string name="autofill_keywords" msgid="7485591824120812710">"स्वयं, भरा, स्वयंभरण"</string>
-    <string name="autofill_confirmation_message" msgid="2784869528908005194">"&lt;b&gt;तुमचा या अॅपवर विश्वास असल्याची खात्री करा&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; ऑटोफिल काय होऊ शकते हे ठरवण्यासाठी तुमच्या स्क्रीनवर काय आहे याचा वापर करते."</string>
+    <string name="autofill_confirmation_message" msgid="2784869528908005194">"&lt;b&gt;तुमचा या ॲपवर विश्वास असल्याची खात्री करा&lt;/b&gt; &lt;br/&gt; &lt;br/&gt; &lt;xliff:g id=app_name example=Google Autofill&gt;%1$s&lt;/xliff:g&gt; ऑटोफिल काय होऊ शकते हे ठरवण्यासाठी तुमच्या स्क्रीनवर काय आहे याचा वापर करते."</string>
     <string name="debug_autofill_category" msgid="8050326960545979035">"ऑटोफिल"</string>
     <string name="autofill_logging_level_title" msgid="899483289251346778">"लॉगिंग पातळी"</string>
     <string name="autofill_max_partitions" msgid="7590272120101271461">"प्रति सेशन कमाल विनंत्या"</string>
@@ -4319,8 +4319,8 @@
     <string name="show_first_crash_dialog" msgid="8889957119867262599">"नेहमी क्रॅश डायलॉग दाखवा"</string>
     <string name="show_first_crash_dialog_summary" msgid="703224456285060428">"अ‍ॅप क्रॅश झाल्यावर प्रत्येक वेळी डायलॉग दाखवा"</string>
     <string name="angle_enabled_app" msgid="1841862539745838255">"ANGLE सुरू केलेले अ‍ॅप निवडा"</string>
-    <string name="angle_enabled_app_not_set" msgid="864740024581634768">"कोणतेही ANGLE सुरू केलेले अॅप्लिकेशन सेट करा"</string>
-    <string name="angle_enabled_app_set" msgid="226015765615525056">"ANGLE सुरू केलेले अॅप्लिकेशन: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
+    <string name="angle_enabled_app_not_set" msgid="864740024581634768">"कोणतेही ANGLE सुरू केलेले ॲप्लिकेशन सेट करा"</string>
+    <string name="angle_enabled_app_set" msgid="226015765615525056">"ANGLE सुरू केलेले ॲप्लिकेशन: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
     <string name="game_driver_dashboard_title" msgid="8804074441354504919">"गेम ड्रायव्हर प्राधान्ये"</string>
     <string name="game_driver_dashboard_summary" msgid="2392113100578771289">"गेम ड्रायव्हर सेटिंग्जमध्ये सुधारणा करा"</string>
     <string name="game_driver_footer_text" msgid="3202576403048267763">"गेम ड्रायव्हर सुरू केल्यावर, तुम्ही डिव्हाइसवर इंस्टॉल केलेल्या अ‍ॅप्ससाठी अपडेट केलेले ग्राफिक्स वापरण्याचे निवडू शकता."</string>
@@ -4344,8 +4344,8 @@
     <string name="my_device_info_account_preference_title" msgid="342933638925781861">"खाते"</string>
     <string name="my_device_info_device_name_preference_title" msgid="7104085224684165324">"डिव्हाइसचे नाव"</string>
     <string name="change_wifi_state_title" msgid="3261945855372885427">"वाय-फाय नियंत्रण"</string>
-    <string name="change_wifi_state_app_detail_switch" msgid="7942268646980694224">"अॅपला वाय-फाय नियंत्रित करू द्या"</string>
-    <string name="change_wifi_state_app_detail_summary" msgid="8434262633905502679">"या अॅपला वाय-फाय चालू किंवा बंद करू द्या, वाय-फाय नेटवर्क स्कॅन करू द्या आणि त्याच्याशी कनेक्ट करू द्या, नेटवर्क जोडू किंवा काढू द्या किंवा केवळ-स्थानिक हॉटस्पॉट सुरू करू द्या"</string>
+    <string name="change_wifi_state_app_detail_switch" msgid="7942268646980694224">"ॲपला वाय-फाय नियंत्रित करू द्या"</string>
+    <string name="change_wifi_state_app_detail_summary" msgid="8434262633905502679">"या ॲपला वाय-फाय चालू किंवा बंद करू द्या, वाय-फाय नेटवर्क स्कॅन करू द्या आणि त्याच्याशी कनेक्ट करू द्या, नेटवर्क जोडू किंवा काढू द्या किंवा केवळ-स्थानिक हॉटस्पॉट सुरू करू द्या"</string>
     <string name="media_output_title" msgid="115223550977351699">"मीडिया प्‍ले करा"</string>
     <string name="media_output_default_summary" msgid="8115153381240348279">"हे डिव्हाइस"</string>
     <string name="media_output_summary" product="default" msgid="6839458453831567167">"फोन"</string>
@@ -4369,7 +4369,7 @@
     <string name="prevent_ringing_option_mute_summary" msgid="4472465110708640980">"सुरू (म्‍यूट)"</string>
     <string name="prevent_ringing_option_none_summary" msgid="5013718946609276137">"बंद"</string>
     <string name="pref_title_network_details" msgid="7186418845727358964">"नेटवर्क तपशील"</string>
-    <string name="about_phone_device_name_warning" msgid="8885670415541365348">"तुमचे डिव्हाइस नाव तुमच्या फोनवरील अॅप्सना दृश्यमान आहे. तुम्ही ब्लूटूथ डिव्हाइसशी जोडता किंवा वाय-फाय हॉटस्पॉट सेट करता, तेव्हा हे इतर लोकांद्वारे देखील बघितले जाऊ शकते."</string>
+    <string name="about_phone_device_name_warning" msgid="8885670415541365348">"तुमचे डिव्हाइस नाव तुमच्या फोनवरील ॲप्सना दृश्यमान आहे. तुम्ही ब्लूटूथ डिव्हाइसशी जोडता किंवा वाय-फाय हॉटस्पॉट सेट करता, तेव्हा हे इतर लोकांद्वारे देखील बघितले जाऊ शकते."</string>
     <string name="devices_title" msgid="7701726109334110391">"डिव्हाइस"</string>
     <string name="homepage_all_settings" msgid="1245540304900512919">"सर्व सेटिंग्ज"</string>
     <string name="homepage_personal_settings" msgid="1570415428680432319">"सूचना"</string>
@@ -4460,12 +4460,12 @@
     <string name="mobile_network_inactive_esim" msgid="7653631389686307842">"अ‍ॅक्टिव्ह नसलेले / डाउनलोड केलेले सिम"</string>
     <string name="mobile_network_sim_name" msgid="6026120971523242277">"सिम नाव आणि रंग"</string>
     <string name="mobile_network_sim_name_label" msgid="281403463781467324">"नाव"</string>
-    <string name="mobile_network_sim_color_label" msgid="3662112943353180621">"रंग (कंपॅटिबल अॅप्सद्वारे वापरलेले)"</string>
+    <string name="mobile_network_sim_color_label" msgid="3662112943353180621">"रंग (कंपॅटिबल ॲप्सद्वारे वापरलेले)"</string>
     <string name="mobile_network_sim_name_rename" msgid="3082357234342116252">"सेव्ह करा"</string>
     <string name="mobile_network_use_sim_on" msgid="8035448244261570189">"सिम वापरा"</string>
     <string name="mobile_network_use_sim_off" msgid="889073420068380943">"बंद आहे"</string>
     <string name="mobile_network_disable_sim_explanation" msgid="1515981880164339357">"हे सिम बंद करण्यासाठी, सिम कार्ड काढा"</string>
-    <string name="mobile_network_tap_to_activate" msgid="4573431375941175566">"<xliff:g id="CARRIER">%1$s</xliff:g> अॅक्टिव्हेट करण्यासाठी टॅप करा"</string>
+    <string name="mobile_network_tap_to_activate" msgid="4573431375941175566">"<xliff:g id="CARRIER">%1$s</xliff:g> ॲक्टिव्हेट करण्यासाठी टॅप करा"</string>
     <string name="mobile_network_esim_swap_confirm_title" msgid="6546784593612512953">"<xliff:g id="CARRIER">%1$s</xliff:g> वर स्विच करायचे?"</string>
     <string name="mobile_network_esim_swap_confirm_body" msgid="1621021150667547211">"एका वेळी फक्त एकच डाउनलोड केलेले सिम अ‍ॅक्टिव्ह असू शकते.\n\n<xliff:g id="CARRIER1">%1$s</xliff:g> वर स्विच केल्याने तुमच्या <xliff:g id="CARRIER2">%2$s</xliff:g> सेवा रद्द होणार नाहीत."</string>
     <string name="mobile_network_esim_swap_confirm_ok" msgid="8025086398614992834">"<xliff:g id="CARRIER">%1$s</xliff:g> वर स्विच करा"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 060f3b2..1684f5d 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -4315,8 +4315,8 @@
     <string name="disabled_feature_reason_slow_down_phone" msgid="3557117039415422481">"Denne funksjonen er slått av fordi den gjør telefonen din tregere"</string>
     <string name="enable_gnss_raw_meas_full_tracking" msgid="1294470289520660584">"Tving fullstendige GNSS-målinger"</string>
     <string name="enable_gnss_raw_meas_full_tracking_summary" msgid="496344699046454200">"Spor alle GNSS-konstellasjoner og -frekvenser uten syklus for oppgaver"</string>
-    <string name="show_first_crash_dialog" msgid="8889957119867262599">"Vis alltid kræsjdialogboksen"</string>
-    <string name="show_first_crash_dialog_summary" msgid="703224456285060428">"Vis dialogboksen hver gang en app kræsjer"</string>
+    <string name="show_first_crash_dialog" msgid="8889957119867262599">"Vis alltid krasjdialogboksen"</string>
+    <string name="show_first_crash_dialog_summary" msgid="703224456285060428">"Vis dialogboksen hver gang en app krasjer"</string>
     <string name="angle_enabled_app" msgid="1841862539745838255">"Velg en ANGLE-aktivert app"</string>
     <string name="angle_enabled_app_not_set" msgid="864740024581634768">"Du har ikke angitt noen ANGLE-aktivert app"</string>
     <string name="angle_enabled_app_set" msgid="226015765615525056">"ANGLE-aktivert app: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index db5d61b..28db15c 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -1217,7 +1217,7 @@
     <string name="screensaver_settings_summary_dock" msgid="2072657401664633283">"डक भएको बेला"</string>
     <string name="screensaver_settings_summary_never" msgid="5165622985174349585">"कहिल्यै पनि होइन"</string>
     <string name="screensaver_settings_summary_off" msgid="2481581696365146473">"बन्द"</string>
-    <string name="screensaver_settings_disabled_prompt" msgid="1239088321034437608">"फोन डकमा र/वा शयन अवस्थामा हुँदा हुने कुरालाई नियन्त्रण गर्न स्क्रिन सेभरलार्इ सक्रिय गर्नुहोस्।"</string>
+    <string name="screensaver_settings_disabled_prompt" msgid="1239088321034437608">"फोन डकमा र/वा शयन अवस्थामा हुँदा हुने कुरालाई नियन्त्रण गर्न स्क्रिन सेभरलाई सक्रिय गर्नुहोस्।"</string>
     <string name="screensaver_settings_when_to_dream" msgid="7262410541382890146">"सुरु हुने समय"</string>
     <string name="screensaver_settings_current" msgid="4663846038247130023">"हालको स्क्रिन सेभर"</string>
     <string name="screensaver_settings_dream_start" msgid="4998187847985120168">"अब सुरु गर्नुहोस्"</string>
@@ -1266,10 +1266,10 @@
     <string name="sim_change_data_ok" msgid="7929746101841679535">"<xliff:g id="CARRIER">%1$s</xliff:g> प्रयोग गर्नुहोस्"</string>
     <string name="sim_preferred_title" msgid="5567909634636045268">"प्रमुख SIM कार्ड अपडेट गर्ने?"</string>
     <string name="sim_preferred_message" msgid="8466930554330635780">"तपाईंको यन्त्रमा <xliff:g id="NEW_SIM">%1$s</xliff:g> SIM मात्र छ। तपाईं मोबाइल डेटा, कल र SMS सन्देशहरूका लागि यो SIM प्रयोग गर्न चाहनुहुन्छ?"</string>
-    <string name="wrong_pin_code_pukked" msgid="4003655226832658066">"SIM PIN कोड गलत छ तपाईंले अाफ्नो उपकरण खोल्नलाई तपाईंको वाहकसँग सम्पर्क गर्नै पर्दर्छ।"</string>
+    <string name="wrong_pin_code_pukked" msgid="4003655226832658066">"SIM PIN कोड गलत छ तपाईंले आफ्नो उपकरण खोल्नलाई तपाईंको वाहकसँग सम्पर्क गर्नै पर्दर्छ।"</string>
     <plurals name="wrong_pin_code" formatted="false" msgid="1582398808893048097">
       <item quantity="other"> गलत SIM PIN कोड, तपाईं सँग <xliff:g id="NUMBER_1">%d</xliff:g> पटक प्रयास बाँकी छ।</item>
-      <item quantity="one">SIM PIN कोड गलत छ, तपाईंले अाफ्नो यन्त्र खोल्नलाई तपाईंको वाहकसँग सम्पर्क गर्नै पर्न अघि तपाईंसँग <xliff:g id="NUMBER_0">%d</xliff:g> पटक प्रयास बाँकी छ।</item>
+      <item quantity="one">SIM PIN कोड गलत छ, तपाईंले आफ्नो यन्त्र खोल्नलाई तपाईंको वाहकसँग सम्पर्क गर्नै पर्न अघि तपाईंसँग <xliff:g id="NUMBER_0">%d</xliff:g> पटक प्रयास बाँकी छ।</item>
     </plurals>
     <string name="pin_failed" msgid="1848423634948587645">"SIM PIN कार्य बिफल भयो!"</string>
     <string name="system_update_settings_list_item_title" msgid="3342887311059985961">"प्रणाली  अद्यावधिकहरू"</string>
@@ -3638,7 +3638,7 @@
     <string name="notifications_silenced" msgid="4728603513072110381">"मौन पारिएको छ"</string>
     <string name="notifications_redacted" msgid="4493588975742803160">"लक स्क्रिनमा संवेदनशील सामग्री देखाउने होइन"</string>
     <string name="notifications_hidden" msgid="3619610536038757468">"लक स्क्रिनमा होइन"</string>
-    <string name="notifications_priority" msgid="1066342037602085552">"बाधा नपुर्याउनुहोस् लाई अोभरराइड गरियो"</string>
+    <string name="notifications_priority" msgid="1066342037602085552">"बाधा नपुर्याउनुहोस् लाई ओभरराइड गरियो"</string>
     <string name="notifications_summary_divider" msgid="9013807608804041387">" / "</string>
     <string name="notification_summary_level" msgid="2726571692704140826">"स्तर %d"</string>
     <string name="notification_summary_channel" msgid="5831124672372023524">"<xliff:g id="CHANNEL_NAME">%1$s</xliff:g> • <xliff:g id="GROUP_NAME">%2$s</xliff:g>"</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 58950df..61ca63e 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -1763,7 +1763,7 @@
     <string name="install_applications_title" msgid="4987712352256508946">"எல்லா ஆப்ஸ் ஆதாரங்களையும் அனுமதி"</string>
     <string name="recent_app_category_title" msgid="6673071268966003928">"சமீபத்தில் திறந்தவை"</string>
     <string name="see_all_apps_title" msgid="1317153498074308438">"<xliff:g id="COUNT">%1$d</xliff:g> ஆப்ஸையும் காட்டு"</string>
-    <string name="install_all_warning" product="tablet" msgid="8310489909586138165">"அறியப்படாத பயன்பாடுகளால் உங்கள் டேப்லெட்டும் தனிப்பட்ட தரவும் அதிகம் பாதிப்பிற்கு உள்ளாகும். இந்த மூலத்திலிருந்து ஆப்ஸை நிறுவுவதால், அவற்றைப் பயன்படுத்தும் போது உங்கள் டேப்லெட்டுக்கு ஏதேனும் சேதம் ஏற்பட்டாலோ அல்லது தரவை இழந்தாலோ, அதற்கு நீங்கள்தான் பொறுப்பாவீர்கள் என்பதை ஏற்கிறீர்கள்."</string>
+    <string name="install_all_warning" product="tablet" msgid="8310489909586138165">"அறியப்படாத ஆப்ஸால் உங்கள் டேப்லெட்டும் தனிப்பட்ட தரவும் அதிகம் பாதிப்பிற்கு உள்ளாகும். இந்த மூலத்திலிருந்து ஆப்ஸை நிறுவுவதால், அவற்றைப் பயன்படுத்தும் போது உங்கள் டேப்லெட்டுக்கு ஏதேனும் சேதம் ஏற்பட்டாலோ அல்லது தரவை இழந்தாலோ, அதற்கு நீங்கள்தான் பொறுப்பாவீர்கள் என்பதை ஏற்கிறீர்கள்."</string>
     <string name="install_all_warning" product="default" msgid="1952257127370115988">"அறியப்படாத பயன்பாடுககளால் உங்கள் மொபைலும் தனிப்பட்ட தரவும் அதிகம் பாதிப்பிற்கு உள்ளாகும். இந்த மூலத்திலிருந்து ஆப்ஸை நிறுவுவதால், அவற்றைப் பயன்படுத்தும் போது உங்கள் மொபைலுக்கு ஏதேனும் சேதம் ஏற்பட்டாலோ அல்லது தரவை இழந்தாலோ, அதற்கு நீங்கள்தான் பொறுப்பாவீர்கள் என்பதை ஏற்கிறீர்கள்."</string>
     <string name="install_all_warning" product="device" msgid="3648003301476423145">"அறியப்படாத ஆப்ஸால் உங்கள் சாதனம் மற்றும் தனிப்பட்ட தரவு மிக எளிதாகப் பாதிப்புக்குள்ளாகும். இந்த மூலத்திலிருந்து ஆப்ஸை நிறுவி, பயன்படுத்தும்போது, உங்கள் சாதனத்திற்கு ஏதேனும் சேதம் ஏற்பட்டாலோ தரவை இழந்தாலோ, அதற்கு நீங்கள்தான் பொறுப்பாவீர்கள் என்பதை ஏற்கிறீர்கள்."</string>
     <string name="advanced_settings" msgid="1777249286757067969">"மேம்பட்ட அமைப்பு"</string>
@@ -2598,7 +2598,7 @@
     <string name="work_mode_off_summary" msgid="2657138190560082508">"ஆப்ஸ் மற்றும் அறிவிப்புகள் ஆஃப் செய்யப்பட்டுள்ளன"</string>
     <string name="remove_managed_profile_label" msgid="3856519337797285325">"பணிக் கணக்கை அகற்று"</string>
     <string name="background_data" msgid="5779592891375473817">"பின்புல டேட்டா உபயோகம்"</string>
-    <string name="background_data_summary" msgid="8328521479872763452">"பயன்பாடுகளால் எந்நேரத்திலும் தரவை ஒத்திசைக்கவும், அனுப்பவும் பெறவும் முடியும்"</string>
+    <string name="background_data_summary" msgid="8328521479872763452">"ஆப்ஸால் எந்நேரத்திலும் தரவை ஒத்திசைக்கவும், அனுப்பவும் பெறவும் முடியும்"</string>
     <string name="background_data_dialog_title" msgid="6059217698124786537">"பின்புல டேட்டா உபயோகத்தை முடக்கவா?"</string>
     <string name="background_data_dialog_message" msgid="6981661606680941633">"பின்புல டேட்டா உபயோகத்தை முடக்குவது பேட்டரியின் ஆயுளை நீட்டிக்கிறது மற்றும் தரவு பயன்பாட்டைக் குறைக்கிறது. சில ஆப்ஸ் தொடர்ந்து பின்புல டேட்டா உபயோகம் இணைப்பைப் பயன்படுத்தலாம்."</string>
     <string name="sync_automatically" msgid="1682730255435062059">"ஆப்ஸின் டேட்டாவைத் தானாக ஒத்திசை"</string>
@@ -3390,7 +3390,7 @@
     <string name="notifications_sent_never" msgid="1001964786456700536">"ஒருபோதும் அனுப்பியதில்லை"</string>
     <string name="manage_notification_access_title" msgid="7510080164564944891">"அறிவிப்பு அணுகல்"</string>
     <string name="work_profile_notification_access_blocked_summary" msgid="8748026238701253040">"பணிக் கணக்கு அறிவிப்புகளுக்கான அணுகல் தடுக்கப்பட்டுள்ளது"</string>
-    <string name="manage_notification_access_summary_zero" msgid="2409912785614953348">"பயன்பாடுகளால் அறிவிப்புகளைப் படிக்க முடியாது"</string>
+    <string name="manage_notification_access_summary_zero" msgid="2409912785614953348">"ஆப்ஸால் அறிவிப்புகளைப் படிக்க முடியாது"</string>
     <plurals name="manage_notification_access_summary_nonzero" formatted="false" msgid="7930130030691218387">
       <item quantity="other">%d ஆப்ஸ்கள் அறிவிப்புகளைப் படிக்கலாம்</item>
       <item quantity="one">%d ஆப்ஸ் அறிவிப்புகளைப் படிக்கலாம்</item>
@@ -3401,7 +3401,7 @@
     <string name="notification_assistant_security_warning_title" msgid="300600401595343861">"<xliff:g id="SERVICE">%1$s</xliff:g> சேவைக்கான அறிவிப்பு அணுகலை அனுமதிக்கவா?"</string>
     <string name="notification_assistant_security_warning_summary" msgid="5829972610310154776">"தொடர்புகளின் பெயர்கள் மற்றும் உங்களுக்கான மெசேஜ்களில் இருக்கும் உரைகள் போன்ற தனிப்பட்ட தகவல்கள் அடங்கிய அனைத்து அறிவிப்புகளையும் <xliff:g id="NOTIFICATION_ASSISTANT_NAME">%1$s</xliff:g> சேவையால் படிக்க இயலும். அறிவிப்புகளை மாற்றியமைக்கவோ நிராகரிக்கவோ அவற்றிலுள்ள செயல் பட்டன்களைத் தூண்டவோ இதனால் இயலும். \n\n’தொந்தரவு செய்ய வேண்டாம்’ அம்சத்தை ஆன் அல்லது ஆஃப் செய்வதற்கு ஆப்ஸை அனுமதிப்பதோடு அது தொடர்பான அமைப்புகளை மாற்றவும் இதனால் இயலும்."</string>
     <string name="notification_listener_security_warning_title" msgid="5522924135145843279">"<xliff:g id="SERVICE">%1$s</xliff:g>க்கான அறிவிப்பு அணுகலை அனுமதிக்கவா?"</string>
-    <string name="notification_listener_security_warning_summary" msgid="119203147791040151">"தொடர்புப் பெயர்கள், நீங்கள் பெறும் செய்திகள் போன்ற தனிப்பட்ட தகவல் உட்பட எல்லா அறிவிப்புகளையும் <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> ஆல் படிக்க முடியும். இந்தப் பயன்பாட்டினால் அறிவிப்புகளை நிராகரிக்கவோ அல்லது அறிவிப்புகளில் உள்ள செயல் பொத்தான்களைத் தூண்டவோ முடியும். \n\nஇது தொந்தரவு செய்ய வேண்டாம் எனும் விருப்பத்தை இயக்க அல்லது முடக்குவதற்கான அனுமதியையும், தொடர்புடையை அமைப்புகளை மாற்றுவதற்கான அனுமதியையும் பயன்பாட்டிற்கு அளிக்கும்."</string>
+    <string name="notification_listener_security_warning_summary" msgid="119203147791040151">"தொடர்புப் பெயர்கள், நீங்கள் பெறும் செய்திகள் போன்ற தனிப்பட்ட தகவல் உட்பட எல்லா அறிவிப்புகளையும் <xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> ஆல் படிக்க முடியும். இந்த ஆப்ஸால் அறிவிப்புகளை நிராகரிக்கவோ அல்லது அறிவிப்புகளில் உள்ள செயல் பொத்தான்களைத் தூண்டவோ முடியும். \n\nஇது தொந்தரவு செய்ய வேண்டாம் எனும் விருப்பத்தை இயக்க அல்லது முடக்குவதற்கான அனுமதியையும், தொடர்புடையை அமைப்புகளை மாற்றுவதற்கான அனுமதியையும் பயன்பாட்டிற்கு அளிக்கும்."</string>
     <string name="notification_listener_disable_warning_summary" msgid="6738915379642948000">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g>க்கு அறிவிப்பு அணுகலை முடக்கினால், \'தொந்தரவு செய்யாதே\' அணுகலும் முடக்கப்படலாம்."</string>
     <string name="notification_listener_disable_warning_confirm" msgid="8333442186428083057">"முடக்கு"</string>
     <string name="notification_listener_disable_warning_cancel" msgid="8586417377104211584">"ரத்துசெய்"</string>
@@ -3815,7 +3815,7 @@
     <string name="memory_maximum_usage" msgid="6513785462055278341">"அதிகபட்ச உபயோகம்"</string>
     <string name="no_data_usage" msgid="9131454024293628063">"டேட்டா எதுவும் பயன்படுத்தப்படவில்லை"</string>
     <string name="zen_access_warning_dialog_title" msgid="1198189958031157142">"<xliff:g id="APP">%1$s</xliff:g>க்கான தொந்தரவு செய்ய வேண்டாம் அணுகலை அனுமதிக்கவா?"</string>
-    <string name="zen_access_warning_dialog_summary" msgid="4015885767653010873">"பயன்பாட்டினால் தொந்தரவு செய்ய வேண்டாம் என்பதை இயக்க/முடக்க முடிவதுடன், தொடர்புடைய அமைப்புகளை மாற்றவும் முடியும்."</string>
+    <string name="zen_access_warning_dialog_summary" msgid="4015885767653010873">"ஆப்ஸால் தொந்தரவு செய்ய வேண்டாம் என்பதை இயக்க/முடக்க முடிவதுடன், தொடர்புடைய அமைப்புகளை மாற்றவும் முடியும்."</string>
     <string name="zen_access_disabled_package_warning" msgid="302820100078584431">"அறிவிப்பு அணுகல் இயக்கப்பட்டிருப்பதால், இயக்கத்தில் இருப்பது அவசியம்"</string>
     <string name="zen_access_revoke_warning_dialog_title" msgid="558779234015793950">"<xliff:g id="APP">%1$s</xliff:g>க்கான தொந்தரவு செய்ய வேண்டாம் அணுகலை ரத்துசெய்யவா?"</string>
     <string name="zen_access_revoke_warning_dialog_summary" msgid="5518216907304930148">"இந்த ஆப்ஸ் உருவாக்கிய தொந்தரவு செய்ய வேண்டாம் விதிகள் அனைத்தும் அகற்றப்படும்."</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 7b1a192..9cb5463 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -1655,7 +1655,7 @@
     <string name="mobile_no_provisioning_url" msgid="9053814051811634125">"Оператор <xliff:g id="OPERATOR">%1$s</xliff:g> не має веб-сайту про надання послуг"</string>
     <string name="mobile_insert_sim_card" msgid="9052590985784056395">"Вставте SIM-карту та перезапустіть"</string>
     <string name="mobile_connect_to_internet" msgid="1733894125065249639">"Під’єднайтеся до Інтернету"</string>
-    <string name="location_category_recent_location_requests" msgid="1938721350424447421">"Останні запити геоданих"</string>
+    <string name="location_category_recent_location_requests" msgid="1938721350424447421">"Останні запити на геодані"</string>
     <string name="location_recent_location_requests_see_all" msgid="9063541547120162593">"Показати всі"</string>
     <string name="location_category_location_services" msgid="7437150886946685979">"Служби локації"</string>
     <string name="location_title" msgid="1029961368397484576">"Моє місцезнах."</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 5560270..d2c2583 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -311,7 +311,7 @@
     <string name="decryption_settings_summary" product="default" msgid="5671817824042639849">"Điện thoại không được mã hóa"</string>
     <string name="encryption_and_credential_settings_summary" product="tablet" msgid="7200428573872395685">"Thiết bị được mã hóa"</string>
     <string name="decryption_settings_summary" product="tablet" msgid="5794135636155570977">"Thiết bị không được mã hóa"</string>
-    <string name="lockscreen_settings_title" msgid="1099738951060387656">"Hiển thị trên màn hình khóa"</string>
+    <string name="lockscreen_settings_title" msgid="1099738951060387656">"Màn hình khóa"</string>
     <string name="lockscreen_settings_what_to_show_category" msgid="278055252361575926">"Nội dung hiển thị"</string>
     <string name="security_settings_summary" msgid="967393342537986570">"Đặt Vị trí của tôi, mở khóa màn hình, khóa thẻ SIM, khóa bộ nhớ thông tin xác thực"</string>
     <string name="cdma_security_settings_summary" msgid="6068799952798901542">"Đặt Vị trí của tôi, mở khóa màn hình, khóa bộ nhớ thông tin xác thực"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index b4fee0e..e27c6bb 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -3559,7 +3559,7 @@
     <string name="zen_mode_when_every_night" msgid="3122486110091921009">"每天晚上"</string>
     <string name="zen_mode_when_weeknights" msgid="8354070633893273783">"星期一至星期五晚"</string>
     <string name="zen_mode_start_time" msgid="8102602297273744441">"開始時間"</string>
-    <string name="zen_mode_end_time" msgid="8774327885892705505">"完結時間"</string>
+    <string name="zen_mode_end_time" msgid="8774327885892705505">"結束時間"</string>
     <string name="zen_mode_end_time_next_day_summary_format" msgid="4201521691238728701">"翌日<xliff:g id="FORMATTED_TIME">%s</xliff:g>"</string>
     <string name="zen_mode_summary_alarms_only_indefinite" msgid="2061973221027570123">"變更為永遠只允許鬧鐘"</string>
     <plurals name="zen_mode_summary_alarms_only_by_minute" formatted="false" msgid="6122003583875424601">
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index f97da1f..242b690 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -158,9 +158,6 @@
     <!-- CryptKeeper pattern size for tablet -->
     <dimen name="crypt_keeper_pattern_size">354dip</dimen>
 
-    <!-- Screen pinning textview paddings -->
-    <dimen name="screen_pinning_textview_padding">40dp</dimen>
-
     <!-- SIM Dialog Margin top -->
     <dimen name="sim_dialog_margin_top">8dip</dimen>
     <!-- SIM Dialog Margin bottom -->
@@ -329,10 +326,6 @@
     <dimen name="reset_master_clear_margin_start">32dp</dimen>
     <dimen name="reset_master_clear_margin_end">12dp</dimen>
 
-    <!-- Padding for screen pinning -->
-    <dimen name="screen_pinning_padding_start">64dp</dimen>
-    <dimen name="screen_pinning_padding_end">64dp</dimen>
-
     <!-- Padding for the reset screens -->
     <dimen name="reset_checkbox_padding_end">8dp</dimen>
     <dimen name="reset_checkbox_title_padding_top">12dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 3af7142..758c054 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6756,9 +6756,6 @@
     <!-- Restrictions screen - menu label to change restrictions pin [CHAR LIMIT=25] -->
     <string name="restriction_menu_change_pin">Change PIN</string>
 
-    <!-- Label for are-notifications-enabled checkbox in app details [CHAR LIMIT=20] -->
-    <string name="app_notifications_switch_label">Show notifications</string>
-
     <!--  Help URLs for some screens. Not specified here. Specified in product overlays --><skip/>
     <!-- Help menu label [CHAR LIMIT=20] -->
     <string name="help_label">Help &amp; feedback</string>
@@ -8026,7 +8023,7 @@
     <string name="notification_channel_summary_high">When device is unlocked, show notifications as a banner across the top of the screen</string>
 
     <!-- [CHAR LIMIT=100] Label for on/off toggle -->
-    <string name="notification_switch_label">Show notifications</string>
+    <string name="notification_switch_label">All <xliff:g id="app_name" example="Android Services">%1$s</xliff:g> notifications</string>
 
     <!-- Default Apps > Default notification assistant -->
     <string name="default_notification_assistant">Adaptive Notifications</string>
diff --git a/res/xml/apn_editor.xml b/res/xml/apn_editor.xml
index 742a436..0c39948 100644
--- a/res/xml/apn_editor.xml
+++ b/res/xml/apn_editor.xml
@@ -148,7 +148,7 @@
         android:key="carrier_enabled"
         android:enabled="false"
         android:summaryOn="@string/carrier_enabled_summaryOn"
-        android:summaryOff="@@string/carrier_enabled_summaryOff"
+        android:summaryOff="@string/carrier_enabled_summaryOff"
         android:persistent="false"
         />
     <MultiSelectListPreference
diff --git a/res/xml/choose_network.xml b/res/xml/choose_network.xml
index 97ea9be..4ae1ffb 100644
--- a/res/xml/choose_network.xml
+++ b/res/xml/choose_network.xml
@@ -20,9 +20,6 @@
     android:title="@string/choose_network_title">
 
     <PreferenceCategory
-        android:key="connected_network_operator_preference"/>
-
-    <PreferenceCategory
         android:key="network_operators_preference"/>
 
-</PreferenceScreen>
\ No newline at end of file
+</PreferenceScreen>
diff --git a/res/xml/mobile_network_settings.xml b/res/xml/mobile_network_settings.xml
index ea31b1c..732967d 100644
--- a/res/xml/mobile_network_settings.xml
+++ b/res/xml/mobile_network_settings.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
+<!-- Copyright (C) 2019 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.
@@ -17,153 +17,221 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:key="mobile_network_pref_screen"
-    settings:initialExpandedChildrenCount="4">
+    settings:initialExpandedChildrenCount="8">
 
-    <Preference
-        android:key="cdma_lte_data_service_key"
-        android:title="@string/cdma_lte_data_service"
-        settings:controller="com.android.settings.network.telephony.DataServiceSetupPreferenceController">
-    </Preference>
-
-    <SwitchPreference
-        android:key="mobile_data_enable"
-        android:title="@string/mobile_data_settings_title"
-        android:summary="@string/mobile_data_settings_summary"
-        settings:controller="com.android.settings.network.telephony.MobileDataPreferenceController"/>
-
-    <com.android.settingslib.RestrictedSwitchPreference
-        android:key="button_roaming_key"
-        android:title="@string/roaming"
-        android:persistent="false"
-        android:summaryOn="@string/roaming_enable"
-        android:summaryOff="@string/roaming_disable"
-        settings:userRestriction="no_data_roaming"
-        settings:controller="com.android.settings.network.telephony.RoamingPreferenceController"/>
-
-    <Preference
-        android:key="data_usage_summary"
-        android:title="@string/mobile_data_usage_title"
-        settings:controller="com.android.settings.network.telephony.DataUsagePreferenceController"/>
-
-    <SwitchPreference
-        android:key="enhanced_4g_lte"
-        android:title="@string/enhanced_4g_lte_mode_title"
-        android:persistent="false"
-        android:summary="@string/enhanced_4g_lte_mode_summary"
-        settings:keywords="@string/keywords_enhance_4g_lte"
-        settings:controller="com.android.settings.network.telephony.Enhanced4gLtePreferenceController"/>
-
-    <SwitchPreference
-        android:key="4g_calling"
-        android:title="@string/enhanced_4g_lte_mode_title_4g_calling"
-        android:persistent="false"
-        android:summary="@string/enhanced_4g_lte_mode_summary_4g_calling"
-        settings:keywords="@string/keywords_enhance_4g_lte"
-        settings:controller="com.android.settings.network.telephony.Enhanced4gCallingPreferenceController"/>
-
-    <SwitchPreference
-        android:key="advance_call"
-        android:title="@string/enhanced_4g_lte_mode_title_advanced_calling"
-        android:persistent="false"
-        android:summary="@string/enhanced_4g_lte_mode_summary"
-        settings:keywords="@string/keywords_enhance_4g_lte"
-        settings:controller="com.android.settings.network.telephony.Enhanced4gAdvancedCallingPreferenceController"/>
-
-    <ListPreference
-        android:key="preferred_network_mode_key"
-        android:title="@string/preferred_network_mode_title"
-        android:summary="@string/preferred_network_mode_summary"
-        android:entries="@array/preferred_network_mode_choices"
-        android:entryValues="@array/preferred_network_mode_values"
-        android:dialogTitle="@string/preferred_network_mode_dialogtitle"
-        settings:controller="com.android.settings.network.telephony.PreferredNetworkModePreferenceController"/>
-
-    <ListPreference
-        android:key="enabled_networks_key"
-        android:title="@string/preferred_network_mode_title"
-        android:summary="@string/preferred_network_mode_summary"
-        android:entries="@array/enabled_networks_choices"
-        android:entryValues="@array/enabled_networks_values"
-        android:dialogTitle="@string/preferred_network_mode_dialogtitle"
-        settings:controller="com.android.settings.network.telephony.EnabledNetworkModePreferenceController"/>
-
-    <Preference
-        android:key="carrier_settings_euicc_key"
-        android:title="@string/carrier_settings_euicc"
-        settings:controller="com.android.settings.network.telephony.EuiccPreferenceController" />
+    <com.android.settingslib.widget.LayoutPreference
+        android:key="use_sim_switch"
+        android:title="@string/summary_placeholder"
+        android:layout="@layout/styled_switch_bar"
+        settings:controller="com.android.settings.network.telephony.MobileNetworkSwitchController"/>
 
     <PreferenceCategory
-        android:key="calling_category"
-        android:title="@string/call_category"
-        settings:searchable="false">
+        android:key="enabled_state_container"
+        android:title="@string/summary_placeholder"
+        settings:controller="com.android.settings.network.telephony.DisabledSubscriptionController"
+        android:layout="@layout/preference_category_no_label">
 
-        <PreferenceScreen
-            android:key="wifi_calling"
-            android:title="@string/wifi_calling_settings_title"
-            android:summary="@string/wifi_calling_summary"
-            settings:controller="com.android.settings.network.telephony.WifiCallingPreferenceController" >
-            <intent android:action="android.intent.action.MAIN"
-                    android:targetPackage="com.android.settings"
-                    android:targetClass="com.android.settings.Settings$WifiCallingSettingsActivity">
-                        <extra android:name="show_drawer_menu" android:value="true" />
-            </intent>
-        </PreferenceScreen>
+        <com.android.settings.datausage.DataUsageSummaryPreference
+            android:key="status_header"
+            android:visibility="gone"
+            android:selectable="false"/>
 
-        <SwitchPreference
-            android:key="video_calling_key"
-            android:title="@string/video_calling_settings_title"
-            android:persistent="true"
-            settings:controller="com.android.settings.network.telephony.VideoCallingPreferenceController" />
+        <ListPreference
+            android:key="calls_preference"
+            android:title="@string/calls_preference"
+            settings:controller="com.android.settings.network.telephony.CallsDefaultSubscriptionController"
+            settings:allowDividerAbove="true"/>
 
-    </PreferenceCategory>
-
-    <com.android.settings.network.telephony.cdma.CdmaListPreference
-        android:key="cdma_system_select_key"
-        android:title="@string/cdma_system_select_title"
-        android:summary="@string/cdma_system_select_summary"
-        android:entries="@array/cdma_system_select_choices"
-        android:entryValues="@array/cdma_system_select_values"
-        android:dialogTitle="@string/cdma_system_select_dialogtitle"
-        settings:controller="com.android.settings.network.telephony.cdma.CdmaSystemSelectPreferenceController"/>
-
-    <com.android.settings.network.telephony.cdma.CdmaListPreference
-        android:key="cdma_subscription_key"
-        android:title="@string/cdma_subscription_title"
-        android:summary="@string/cdma_subscription_summary"
-        android:entries="@array/cdma_subscription_choices"
-        android:entryValues="@array/cdma_subscription_values"
-        android:dialogTitle="@string/cdma_subscription_dialogtitle"
-        settings:controller="com.android.settings.network.telephony.cdma.CdmaSubscriptionPreferenceController"/>
-
-    <PreferenceCategory
-        android:key="network_operators_category_key"
-        android:title="@string/network_operator_category"
-        settings:controller="com.android.settings.widget.PreferenceCategoryController">
-
-        <SwitchPreference
-            android:key="auto_select_key"
-            android:title="@string/select_automatically"
-            settings:controller="com.android.settings.network.telephony.gsm.AutoSelectPreferenceController"/>
+        <ListPreference
+            android:key="sms_preference"
+            android:title="@string/sms_preference"
+            settings:controller="com.android.settings.network.telephony.SmsDefaultSubscriptionController"/>
 
         <Preference
-            android:key="choose_network_key"
-            android:title="@string/choose_network_title"
-            android:fragment="com.android.phone.NetworkSelectSetting"
-            settings:controller="com.android.settings.network.telephony.gsm.OpenNetworkSelectPagePreferenceController"/>
+            android:key="cdma_lte_data_service_key"
+            android:title="@string/cdma_lte_data_service"
+            settings:controller="com.android.settings.network.telephony.DataServiceSetupPreferenceController"
+            settings:allowDividerAbove="true"
+            settings:allowDividerBelow="false"/>
+
+        <SwitchPreference
+            android:key="mobile_data_enable"
+            android:title="@string/mobile_data_settings_title"
+            android:summary="@string/mobile_data_settings_summary"
+            settings:controller="com.android.settings.network.telephony.MobileDataPreferenceController"
+            settings:allowDividerAbove="true"/>
+
+        <com.android.settingslib.RestrictedSwitchPreference
+            android:key="button_roaming_key"
+            android:title="@string/roaming"
+            android:persistent="false"
+            android:summaryOn="@string/roaming_enable"
+            android:summaryOff="@string/roaming_disable"
+            settings:userRestriction="no_data_roaming"
+            settings:controller="com.android.settings.network.telephony.RoamingPreferenceController"/>
+
+        <Preference
+            android:key="data_usage_summary"
+            android:title="@string/mobile_data_usage_title"
+            settings:controller="com.android.settings.network.telephony.DataUsagePreferenceController"/>
+
+        <com.android.settings.datausage.BillingCyclePreference
+            android:key="billing_preference"
+            android:title="@string/billing_cycle"
+            settings:controller="com.android.settings.datausage.BillingCyclePreferenceController"/>
+
+        <SwitchPreference
+            android:key="mms_message"
+            android:title="@string/mms_message_title"
+            android:summary="@string/mms_message_summary"
+            settings:controller="com.android.settings.network.telephony.MmsMessagePreferenceController"/>
+
+        <SwitchPreference
+            android:key="data_during_calls"
+            android:title="@string/data_during_calls_title"
+            android:summary="@string/data_during_calls_summary"
+            settings:controller="com.android.settings.network.telephony.DataDuringCallsPreferenceController"/>
+
+        <SwitchPreference
+            android:key="enhanced_4g_lte"
+            android:title="@string/enhanced_4g_lte_mode_title"
+            android:persistent="false"
+            android:summary="@string/enhanced_4g_lte_mode_summary"
+            settings:keywords="@string/keywords_enhance_4g_lte"
+            settings:controller="com.android.settings.network.telephony.Enhanced4gLtePreferenceController"/>
+
+        <SwitchPreference
+            android:key="4g_calling"
+            android:title="@string/enhanced_4g_lte_mode_title_4g_calling"
+            android:persistent="false"
+            android:summary="@string/enhanced_4g_lte_mode_summary_4g_calling"
+            settings:keywords="@string/keywords_enhance_4g_lte"
+            settings:controller="com.android.settings.network.telephony.Enhanced4gCallingPreferenceController"/>
+
+        <SwitchPreference
+            android:key="advance_call"
+            android:title="@string/enhanced_4g_lte_mode_title_advanced_calling"
+            android:persistent="false"
+            android:summary="@string/enhanced_4g_lte_mode_summary"
+            settings:keywords="@string/keywords_enhance_4g_lte"
+            settings:controller="com.android.settings.network.telephony.Enhanced4gAdvancedCallingPreferenceController"/>
+
+        <ListPreference
+            android:key="preferred_network_mode_key"
+            android:title="@string/preferred_network_mode_title"
+            android:summary="@string/preferred_network_mode_summary"
+            android:entries="@array/preferred_network_mode_choices"
+            android:entryValues="@array/preferred_network_mode_values"
+            android:dialogTitle="@string/preferred_network_mode_dialogtitle"
+            settings:controller="com.android.settings.network.telephony.PreferredNetworkModePreferenceController"/>
+
+        <ListPreference
+            android:key="enabled_networks_key"
+            android:title="@string/preferred_network_mode_title"
+            android:summary="@string/preferred_network_mode_summary"
+            android:entries="@array/enabled_networks_choices"
+            android:entryValues="@array/enabled_networks_values"
+            android:dialogTitle="@string/preferred_network_mode_dialogtitle"
+            settings:controller="com.android.settings.network.telephony.EnabledNetworkModePreferenceController"/>
+
+        <Preference
+            android:key="carrier_settings_version_key"
+            android:title="@string/carrier_settings_version"
+            android:enabled="false"
+            android:shouldDisableView="false"
+            android:selectable="false"
+            settings:controller="com.android.settings.network.telephony.CarrierSettingsVersionPreferenceController"
+            settings:enableCopying="true"/>
+
+        <PreferenceCategory
+            android:key="calling_category"
+            android:title="@string/call_category"
+            settings:controller="com.android.settings.network.telephony.CallingPreferenceCategoryController">
+
+            <PreferenceScreen
+                android:key="wifi_calling"
+                android:title="@string/wifi_calling_settings_title"
+                android:summary="@string/wifi_calling_summary"
+                settings:controller="com.android.settings.network.telephony.WifiCallingPreferenceController">
+                <intent android:action="android.intent.action.MAIN"
+                        android:targetPackage="com.android.settings"
+                        android:targetClass="com.android.settings.Settings$WifiCallingSettingsActivity">
+                    <extra android:name="show_drawer_menu" android:value="true"/>
+                </intent>
+            </PreferenceScreen>
+
+            <SwitchPreference
+                android:key="video_calling_key"
+                android:title="@string/video_calling_settings_title"
+                android:persistent="true"
+                settings:controller="com.android.settings.network.telephony.VideoCallingPreferenceController"/>
+
+        </PreferenceCategory>
+
+        <com.android.settings.network.telephony.cdma.CdmaListPreference
+            android:key="cdma_system_select_key"
+            android:title="@string/cdma_system_select_title"
+            android:summary="@string/cdma_system_select_summary"
+            android:entries="@array/cdma_system_select_choices"
+            android:entryValues="@array/cdma_system_select_values"
+            android:dialogTitle="@string/cdma_system_select_dialogtitle"
+            settings:controller="com.android.settings.network.telephony.cdma.CdmaSystemSelectPreferenceController"/>
+
+        <com.android.settings.network.telephony.cdma.CdmaListPreference
+            android:key="cdma_subscription_key"
+            android:title="@string/cdma_subscription_title"
+            android:summary="@string/cdma_subscription_summary"
+            android:entries="@array/cdma_subscription_choices"
+            android:entryValues="@array/cdma_subscription_values"
+            android:dialogTitle="@string/cdma_subscription_dialogtitle"
+            settings:controller="com.android.settings.network.telephony.cdma.CdmaSubscriptionPreferenceController"/>
+
+        <PreferenceCategory
+            android:key="network_operators_category_key"
+            android:title="@string/network_operator_category"
+            settings:controller="com.android.settings.widget.PreferenceCategoryController">
+
+            <SwitchPreference
+                android:key="auto_select_key"
+                android:title="@string/select_automatically"
+                settings:controller="com.android.settings.network.telephony.gsm.AutoSelectPreferenceController"/>
+
+            <Preference
+                android:key="choose_network_key"
+                android:title="@string/choose_network_title"
+                android:fragment="com.android.phone.NetworkSelectSetting"
+                settings:controller="com.android.settings.network.telephony.gsm.OpenNetworkSelectPagePreferenceController"/>
+        </PreferenceCategory>
+
+        <!--We want separate APN setting from reset of settings because we want user to change it with caution-->
+        <com.android.settingslib.RestrictedPreference
+            android:key="telephony_apn_key"
+            android:persistent="false"
+            android:title="@string/mobile_network_apn_title"
+            settings:allowDividerAbove="true"
+            settings:controller="com.android.settings.network.telephony.ApnPreferenceController"/>
+
+        <Preference
+            android:key="carrier_settings_key"
+            android:title="@string/carrier_settings_title"
+            settings:controller="com.android.settings.network.telephony.CarrierPreferenceController">
+        </Preference>
+
     </PreferenceCategory>
 
-    <!--We want separate APN setting from reset of settings because we want user to change it with caution-->
-    <com.android.settingslib.RestrictedPreference
-        android:key="telephony_apn_key"
-        android:persistent="false"
-        android:title="@string/mobile_network_apn_title"
-        settings:allowDividerAbove="true"
-        settings:controller="com.android.settings.network.telephony.ApnPreferenceController"/>
-
     <Preference
-        android:key="carrier_settings_key"
-        android:title="@string/carrier_settings_title"
-        settings:controller="com.android.settings.network.telephony.CarrierPreferenceController">
-    </Preference>
+        android:key="erase_sim"
+        android:persistent="false"
+        android:title="@string/mobile_network_erase_sim"
+        settings:allowDividerBelow="true"
+        settings:controller="com.android.settings.network.telephony.DeleteSimProfilePreferenceController"/>
+
+    <com.android.settingslib.widget.FooterPreference
+        android:key="disable_sim_explanation"
+        android:title="@string/mobile_network_disable_sim_explanation"
+        android:selectable="false"
+        settings:allowDividerAbove="true"
+        settings:searchable="false"
+        settings:controller="com.android.settings.network.telephony.DisableSimFooterPreferenceController"/>
 
 </PreferenceScreen>
diff --git a/res/xml/mobile_network_settings_v2.xml b/res/xml/mobile_network_settings_v2.xml
deleted file mode 100644
index 732967d..0000000
--- a/res/xml/mobile_network_settings_v2.xml
+++ /dev/null
@@ -1,237 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2019 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.
--->
-<PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:key="mobile_network_pref_screen"
-    settings:initialExpandedChildrenCount="8">
-
-    <com.android.settingslib.widget.LayoutPreference
-        android:key="use_sim_switch"
-        android:title="@string/summary_placeholder"
-        android:layout="@layout/styled_switch_bar"
-        settings:controller="com.android.settings.network.telephony.MobileNetworkSwitchController"/>
-
-    <PreferenceCategory
-        android:key="enabled_state_container"
-        android:title="@string/summary_placeholder"
-        settings:controller="com.android.settings.network.telephony.DisabledSubscriptionController"
-        android:layout="@layout/preference_category_no_label">
-
-        <com.android.settings.datausage.DataUsageSummaryPreference
-            android:key="status_header"
-            android:visibility="gone"
-            android:selectable="false"/>
-
-        <ListPreference
-            android:key="calls_preference"
-            android:title="@string/calls_preference"
-            settings:controller="com.android.settings.network.telephony.CallsDefaultSubscriptionController"
-            settings:allowDividerAbove="true"/>
-
-        <ListPreference
-            android:key="sms_preference"
-            android:title="@string/sms_preference"
-            settings:controller="com.android.settings.network.telephony.SmsDefaultSubscriptionController"/>
-
-        <Preference
-            android:key="cdma_lte_data_service_key"
-            android:title="@string/cdma_lte_data_service"
-            settings:controller="com.android.settings.network.telephony.DataServiceSetupPreferenceController"
-            settings:allowDividerAbove="true"
-            settings:allowDividerBelow="false"/>
-
-        <SwitchPreference
-            android:key="mobile_data_enable"
-            android:title="@string/mobile_data_settings_title"
-            android:summary="@string/mobile_data_settings_summary"
-            settings:controller="com.android.settings.network.telephony.MobileDataPreferenceController"
-            settings:allowDividerAbove="true"/>
-
-        <com.android.settingslib.RestrictedSwitchPreference
-            android:key="button_roaming_key"
-            android:title="@string/roaming"
-            android:persistent="false"
-            android:summaryOn="@string/roaming_enable"
-            android:summaryOff="@string/roaming_disable"
-            settings:userRestriction="no_data_roaming"
-            settings:controller="com.android.settings.network.telephony.RoamingPreferenceController"/>
-
-        <Preference
-            android:key="data_usage_summary"
-            android:title="@string/mobile_data_usage_title"
-            settings:controller="com.android.settings.network.telephony.DataUsagePreferenceController"/>
-
-        <com.android.settings.datausage.BillingCyclePreference
-            android:key="billing_preference"
-            android:title="@string/billing_cycle"
-            settings:controller="com.android.settings.datausage.BillingCyclePreferenceController"/>
-
-        <SwitchPreference
-            android:key="mms_message"
-            android:title="@string/mms_message_title"
-            android:summary="@string/mms_message_summary"
-            settings:controller="com.android.settings.network.telephony.MmsMessagePreferenceController"/>
-
-        <SwitchPreference
-            android:key="data_during_calls"
-            android:title="@string/data_during_calls_title"
-            android:summary="@string/data_during_calls_summary"
-            settings:controller="com.android.settings.network.telephony.DataDuringCallsPreferenceController"/>
-
-        <SwitchPreference
-            android:key="enhanced_4g_lte"
-            android:title="@string/enhanced_4g_lte_mode_title"
-            android:persistent="false"
-            android:summary="@string/enhanced_4g_lte_mode_summary"
-            settings:keywords="@string/keywords_enhance_4g_lte"
-            settings:controller="com.android.settings.network.telephony.Enhanced4gLtePreferenceController"/>
-
-        <SwitchPreference
-            android:key="4g_calling"
-            android:title="@string/enhanced_4g_lte_mode_title_4g_calling"
-            android:persistent="false"
-            android:summary="@string/enhanced_4g_lte_mode_summary_4g_calling"
-            settings:keywords="@string/keywords_enhance_4g_lte"
-            settings:controller="com.android.settings.network.telephony.Enhanced4gCallingPreferenceController"/>
-
-        <SwitchPreference
-            android:key="advance_call"
-            android:title="@string/enhanced_4g_lte_mode_title_advanced_calling"
-            android:persistent="false"
-            android:summary="@string/enhanced_4g_lte_mode_summary"
-            settings:keywords="@string/keywords_enhance_4g_lte"
-            settings:controller="com.android.settings.network.telephony.Enhanced4gAdvancedCallingPreferenceController"/>
-
-        <ListPreference
-            android:key="preferred_network_mode_key"
-            android:title="@string/preferred_network_mode_title"
-            android:summary="@string/preferred_network_mode_summary"
-            android:entries="@array/preferred_network_mode_choices"
-            android:entryValues="@array/preferred_network_mode_values"
-            android:dialogTitle="@string/preferred_network_mode_dialogtitle"
-            settings:controller="com.android.settings.network.telephony.PreferredNetworkModePreferenceController"/>
-
-        <ListPreference
-            android:key="enabled_networks_key"
-            android:title="@string/preferred_network_mode_title"
-            android:summary="@string/preferred_network_mode_summary"
-            android:entries="@array/enabled_networks_choices"
-            android:entryValues="@array/enabled_networks_values"
-            android:dialogTitle="@string/preferred_network_mode_dialogtitle"
-            settings:controller="com.android.settings.network.telephony.EnabledNetworkModePreferenceController"/>
-
-        <Preference
-            android:key="carrier_settings_version_key"
-            android:title="@string/carrier_settings_version"
-            android:enabled="false"
-            android:shouldDisableView="false"
-            android:selectable="false"
-            settings:controller="com.android.settings.network.telephony.CarrierSettingsVersionPreferenceController"
-            settings:enableCopying="true"/>
-
-        <PreferenceCategory
-            android:key="calling_category"
-            android:title="@string/call_category"
-            settings:controller="com.android.settings.network.telephony.CallingPreferenceCategoryController">
-
-            <PreferenceScreen
-                android:key="wifi_calling"
-                android:title="@string/wifi_calling_settings_title"
-                android:summary="@string/wifi_calling_summary"
-                settings:controller="com.android.settings.network.telephony.WifiCallingPreferenceController">
-                <intent android:action="android.intent.action.MAIN"
-                        android:targetPackage="com.android.settings"
-                        android:targetClass="com.android.settings.Settings$WifiCallingSettingsActivity">
-                    <extra android:name="show_drawer_menu" android:value="true"/>
-                </intent>
-            </PreferenceScreen>
-
-            <SwitchPreference
-                android:key="video_calling_key"
-                android:title="@string/video_calling_settings_title"
-                android:persistent="true"
-                settings:controller="com.android.settings.network.telephony.VideoCallingPreferenceController"/>
-
-        </PreferenceCategory>
-
-        <com.android.settings.network.telephony.cdma.CdmaListPreference
-            android:key="cdma_system_select_key"
-            android:title="@string/cdma_system_select_title"
-            android:summary="@string/cdma_system_select_summary"
-            android:entries="@array/cdma_system_select_choices"
-            android:entryValues="@array/cdma_system_select_values"
-            android:dialogTitle="@string/cdma_system_select_dialogtitle"
-            settings:controller="com.android.settings.network.telephony.cdma.CdmaSystemSelectPreferenceController"/>
-
-        <com.android.settings.network.telephony.cdma.CdmaListPreference
-            android:key="cdma_subscription_key"
-            android:title="@string/cdma_subscription_title"
-            android:summary="@string/cdma_subscription_summary"
-            android:entries="@array/cdma_subscription_choices"
-            android:entryValues="@array/cdma_subscription_values"
-            android:dialogTitle="@string/cdma_subscription_dialogtitle"
-            settings:controller="com.android.settings.network.telephony.cdma.CdmaSubscriptionPreferenceController"/>
-
-        <PreferenceCategory
-            android:key="network_operators_category_key"
-            android:title="@string/network_operator_category"
-            settings:controller="com.android.settings.widget.PreferenceCategoryController">
-
-            <SwitchPreference
-                android:key="auto_select_key"
-                android:title="@string/select_automatically"
-                settings:controller="com.android.settings.network.telephony.gsm.AutoSelectPreferenceController"/>
-
-            <Preference
-                android:key="choose_network_key"
-                android:title="@string/choose_network_title"
-                android:fragment="com.android.phone.NetworkSelectSetting"
-                settings:controller="com.android.settings.network.telephony.gsm.OpenNetworkSelectPagePreferenceController"/>
-        </PreferenceCategory>
-
-        <!--We want separate APN setting from reset of settings because we want user to change it with caution-->
-        <com.android.settingslib.RestrictedPreference
-            android:key="telephony_apn_key"
-            android:persistent="false"
-            android:title="@string/mobile_network_apn_title"
-            settings:allowDividerAbove="true"
-            settings:controller="com.android.settings.network.telephony.ApnPreferenceController"/>
-
-        <Preference
-            android:key="carrier_settings_key"
-            android:title="@string/carrier_settings_title"
-            settings:controller="com.android.settings.network.telephony.CarrierPreferenceController">
-        </Preference>
-
-    </PreferenceCategory>
-
-    <Preference
-        android:key="erase_sim"
-        android:persistent="false"
-        android:title="@string/mobile_network_erase_sim"
-        settings:allowDividerBelow="true"
-        settings:controller="com.android.settings.network.telephony.DeleteSimProfilePreferenceController"/>
-
-    <com.android.settingslib.widget.FooterPreference
-        android:key="disable_sim_explanation"
-        android:title="@string/mobile_network_disable_sim_explanation"
-        android:selectable="false"
-        settings:allowDividerAbove="true"
-        settings:searchable="false"
-        settings:controller="com.android.settings.network.telephony.DisableSimFooterPreferenceController"/>
-
-</PreferenceScreen>
diff --git a/res/xml/network_and_internet.xml b/res/xml/network_and_internet.xml
index 609578f..5280221 100644
--- a/res/xml/network_and_internet.xml
+++ b/res/xml/network_and_internet.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2016 The Android Open Source Project
+<!-- Copyright (C) 2018 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.
@@ -21,40 +21,46 @@
     android:title="@string/network_dashboard_title"
     settings:initialExpandedChildrenCount="5">
 
+    <PreferenceCategory
+        android:key="multi_network_header"
+        android:title="@string/summary_placeholder"
+        android:layout="@layout/preference_category_no_label"
+        settings:allowDividerBelow="true"
+        android:order="-40"
+        settings:controller="com.android.settings.network.MultiNetworkHeaderController"/>
+
     <com.android.settings.widget.MasterSwitchPreference
         android:fragment="com.android.settings.wifi.WifiSettings"
         android:key="toggle_wifi"
         android:title="@string/wifi_settings"
         android:summary="@string/summary_placeholder"
         android:icon="@drawable/ic_settings_wireless"
-        android:order="-30">
+        android:order="-30"
+        settings:allowDividerAbove="true">
         <intent
             android:action="android.settings.WIFI_SETTINGS"
             android:targetClass="Settings$WifiSettingsActivity" />
     </com.android.settings.widget.MasterSwitchPreference>
 
-    <com.android.settingslib.RestrictedPreference
-        android:key="mobile_network_settings"
+    <com.android.settings.widget.AddPreference
+        android:key="mobile_network_list"
         android:title="@string/network_settings_title"
         android:summary="@string/summary_placeholder"
         android:icon="@drawable/ic_network_cell"
         android:order="-15"
         settings:keywords="@string/keywords_more_mobile_networks"
         settings:userRestriction="no_config_mobile_networks"
-        settings:useAdminDisabledSummary="true">
-    </com.android.settingslib.RestrictedPreference>
-
-    <com.android.settingslib.RestrictedPreference
-        android:fragment="com.android.settings.TetherSettings"
-        android:key="tether_settings"
-        android:title="@string/tether_settings_title_all"
-        android:icon="@drawable/ic_wifi_tethering"
-        android:order="-5"
-        android:summary="@string/summary_placeholder"
-        settings:keywords="@string/keywords_hotspot_tethering"
-        settings:userRestriction="no_config_tethering"
         settings:useAdminDisabledSummary="true" />
 
+    <com.android.settingslib.RestrictedSwitchPreference
+        android:key="airplane_mode"
+        android:title="@string/airplane_mode"
+        android:icon="@drawable/ic_airplanemode_active"
+        android:disableDependentsState="true"
+        android:order="-5"
+        settings:controller="com.android.settings.network.AirplaneModePreferenceController"
+        settings:userRestriction="no_airplane_mode"/>
+
     <com.android.settingslib.RestrictedPreference
         android:key="manage_mobile_plan"
         android:title="@string/manage_mobile_plan_title"
@@ -63,26 +69,30 @@
         settings:userRestriction="no_config_mobile_networks"
         settings:useAdminDisabledSummary="true" />
 
-    <com.android.settingslib.RestrictedSwitchPreference
-        android:key="airplane_mode_old"
-        android:title="@string/airplane_mode"
-        android:icon="@drawable/ic_airplanemode_active"
-        android:disableDependentsState="true"
+    <com.android.settingslib.RestrictedPreference
+        android:fragment="com.android.settings.TetherSettings"
+        android:key="tether_settings"
+        android:title="@string/tether_settings_title_all"
+        android:icon="@drawable/ic_wifi_tethering"
         android:order="5"
-        settings:controller="com.android.settings.network.AirplaneModePreferenceController"
-        settings:userRestriction="no_airplane_mode"/>
+        android:summary="@string/summary_placeholder"
+        settings:keywords="@string/keywords_hotspot_tethering"
+        settings:userRestriction="no_config_tethering"
+        settings:useAdminDisabledSummary="true" />
 
-    <Preference
-        android:fragment="com.android.settings.ProxySelector"
-        android:key="proxy_settings"
-        android:title="@string/proxy_settings_title" />
+    <com.android.settings.datausage.DataSaverPreference
+        android:key="restrict_background_parent_entry"
+        android:title="@string/data_saver_title"
+        android:icon="@drawable/ic_settings_data_usage"
+        android:order="10"
+        android:fragment="com.android.settings.datausage.DataSaverSummary"/>
 
     <com.android.settingslib.RestrictedPreference
         android:fragment="com.android.settings.vpn2.VpnSettings"
         android:key="vpn_settings"
         android:title="@string/vpn_settings_title"
         android:icon="@drawable/ic_vpn_key"
-        android:order="10"
+        android:order="15"
         android:summary="@string/summary_placeholder"
         settings:userRestriction="no_config_vpn"
         settings:useAdminDisabledSummary="true" />
@@ -90,7 +100,7 @@
     <com.android.settings.network.PrivateDnsModeDialogPreference
         android:key="private_dns_settings"
         android:title="@string/select_private_dns_configuration_title"
-        android:order="15"
+        android:order="20"
         android:dialogTitle="@string/select_private_dns_configuration_dialog_title"
         android:dialogLayout="@layout/private_dns_mode_dialog"
         android:positiveButtonText="@string/save"
diff --git a/res/xml/network_and_internet_v2.xml b/res/xml/network_and_internet_v2.xml
deleted file mode 100644
index 5280221..0000000
--- a/res/xml/network_and_internet_v2.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2018 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.
--->
-
-<PreferenceScreen
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:settings="http://schemas.android.com/apk/res-auto"
-    android:key="network_and_internet_screen"
-    android:title="@string/network_dashboard_title"
-    settings:initialExpandedChildrenCount="5">
-
-    <PreferenceCategory
-        android:key="multi_network_header"
-        android:title="@string/summary_placeholder"
-        android:layout="@layout/preference_category_no_label"
-        settings:allowDividerBelow="true"
-        android:order="-40"
-        settings:controller="com.android.settings.network.MultiNetworkHeaderController"/>
-
-    <com.android.settings.widget.MasterSwitchPreference
-        android:fragment="com.android.settings.wifi.WifiSettings"
-        android:key="toggle_wifi"
-        android:title="@string/wifi_settings"
-        android:summary="@string/summary_placeholder"
-        android:icon="@drawable/ic_settings_wireless"
-        android:order="-30"
-        settings:allowDividerAbove="true">
-        <intent
-            android:action="android.settings.WIFI_SETTINGS"
-            android:targetClass="Settings$WifiSettingsActivity" />
-    </com.android.settings.widget.MasterSwitchPreference>
-
-    <com.android.settings.widget.AddPreference
-        android:key="mobile_network_list"
-        android:title="@string/network_settings_title"
-        android:summary="@string/summary_placeholder"
-        android:icon="@drawable/ic_network_cell"
-        android:order="-15"
-        settings:keywords="@string/keywords_more_mobile_networks"
-        settings:userRestriction="no_config_mobile_networks"
-        settings:useAdminDisabledSummary="true" />
-
-    <com.android.settingslib.RestrictedSwitchPreference
-        android:key="airplane_mode"
-        android:title="@string/airplane_mode"
-        android:icon="@drawable/ic_airplanemode_active"
-        android:disableDependentsState="true"
-        android:order="-5"
-        settings:controller="com.android.settings.network.AirplaneModePreferenceController"
-        settings:userRestriction="no_airplane_mode"/>
-
-    <com.android.settingslib.RestrictedPreference
-        android:key="manage_mobile_plan"
-        android:title="@string/manage_mobile_plan_title"
-        android:persistent="false"
-        android:order="0"
-        settings:userRestriction="no_config_mobile_networks"
-        settings:useAdminDisabledSummary="true" />
-
-    <com.android.settingslib.RestrictedPreference
-        android:fragment="com.android.settings.TetherSettings"
-        android:key="tether_settings"
-        android:title="@string/tether_settings_title_all"
-        android:icon="@drawable/ic_wifi_tethering"
-        android:order="5"
-        android:summary="@string/summary_placeholder"
-        settings:keywords="@string/keywords_hotspot_tethering"
-        settings:userRestriction="no_config_tethering"
-        settings:useAdminDisabledSummary="true" />
-
-    <com.android.settings.datausage.DataSaverPreference
-        android:key="restrict_background_parent_entry"
-        android:title="@string/data_saver_title"
-        android:icon="@drawable/ic_settings_data_usage"
-        android:order="10"
-        android:fragment="com.android.settings.datausage.DataSaverSummary"/>
-
-    <com.android.settingslib.RestrictedPreference
-        android:fragment="com.android.settings.vpn2.VpnSettings"
-        android:key="vpn_settings"
-        android:title="@string/vpn_settings_title"
-        android:icon="@drawable/ic_vpn_key"
-        android:order="15"
-        android:summary="@string/summary_placeholder"
-        settings:userRestriction="no_config_vpn"
-        settings:useAdminDisabledSummary="true" />
-
-    <com.android.settings.network.PrivateDnsModeDialogPreference
-        android:key="private_dns_settings"
-        android:title="@string/select_private_dns_configuration_title"
-        android:order="20"
-        android:dialogTitle="@string/select_private_dns_configuration_dialog_title"
-        android:dialogLayout="@layout/private_dns_mode_dialog"
-        android:positiveButtonText="@string/save"
-        android:negativeButtonText="@android:string/cancel" />
-
-</PreferenceScreen>
diff --git a/res/xml/screen_pinning_settings.xml b/res/xml/screen_pinning_settings.xml
index f27e4aa..7ff7f1d 100644
--- a/res/xml/screen_pinning_settings.xml
+++ b/res/xml/screen_pinning_settings.xml
@@ -16,6 +16,7 @@
 
 <PreferenceScreen
     xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto"
     android:key="screen_pinning_settings_screen"
     android:title="@string/screen_pinning_title">
 
@@ -23,4 +24,10 @@
         android:key="use_screen_lock"
         android:title="@string/screen_pinning_unlock_none" />
 
+    <com.android.settingslib.widget.FooterPreference
+        android:key="screen_pinning_settings_screen_footer"
+        android:title="@string/screen_pinning_description"
+        android:selectable="false"
+        settings:searchable="false" />
+
 </PreferenceScreen>
diff --git a/src/com/android/settings/EncryptionInterstitial.java b/src/com/android/settings/EncryptionInterstitial.java
index c132c89..7a11053 100644
--- a/src/com/android/settings/EncryptionInterstitial.java
+++ b/src/com/android/settings/EncryptionInterstitial.java
@@ -31,7 +31,6 @@
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.accessibility.AccessibilityManager;
-import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import androidx.appcompat.app.AlertDialog;
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 24963b3..c189b7b 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -137,7 +137,6 @@
     public static class OverlaySettingsActivity extends SettingsActivity { /* empty */ }
     public static class WriteSettingsActivity extends SettingsActivity { /* empty */ }
     public static class ChangeWifiStateActivity extends SettingsActivity { /* empty */ }
-    public static class AppDrawOverlaySettingsActivity extends SettingsActivity { /* empty */ }
     public static class AppWriteSettingsActivity extends SettingsActivity { /* empty */ }
 
     public static class ManageExternalSourcesActivity extends SettingsActivity {/* empty */ }
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index f5f5ccd..65d0c82 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -106,7 +106,6 @@
 import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.core.FeatureFlags;
 import com.android.settings.dashboard.profileselector.ProfileFragmentBridge;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
 import com.android.settings.password.ChooseLockSettingsHelper;
 import com.android.settingslib.widget.ActionBarShadowController;
 
@@ -157,19 +156,19 @@
     public static boolean updatePreferenceToSpecificActivityOrRemove(Context context,
             PreferenceGroup parentPreferenceGroup, String preferenceKey, int flags) {
 
-        Preference preference = parentPreferenceGroup.findPreference(preferenceKey);
+        final Preference preference = parentPreferenceGroup.findPreference(preferenceKey);
         if (preference == null) {
             return false;
         }
 
-        Intent intent = preference.getIntent();
+        final Intent intent = preference.getIntent();
         if (intent != null) {
             // Find the activity that is in the system image
-            PackageManager pm = context.getPackageManager();
-            List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);
-            int listSize = list.size();
+            final PackageManager pm = context.getPackageManager();
+            final List<ResolveInfo> list = pm.queryIntentActivities(intent, 0);
+            final int listSize = list.size();
             for (int i = 0; i < listSize; i++) {
-                ResolveInfo resolveInfo = list.get(i);
+                final ResolveInfo resolveInfo = list.get(i);
                 if ((resolveInfo.activityInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM)
                         != 0) {
 
@@ -200,7 +199,7 @@
      * @throws IllegalStateException if no UserManager could be retrieved.
      */
     public static UserManager getUserManager(Context context) {
-        UserManager um = UserManager.get(context);
+        final UserManager um = UserManager.get(context);
         if (um == null) {
             throw new IllegalStateException("Unable to load UserManager");
         }
@@ -218,7 +217,7 @@
      * Returns whether the device is voice-capable (meaning, it is also a phone).
      */
     public static boolean isVoiceCapable(Context context) {
-        TelephonyManager telephony =
+        final TelephonyManager telephony =
                 (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
         return telephony != null && telephony.isVoiceCapable();
     }
@@ -229,12 +228,12 @@
      * @return the formatted and newline-separated IP addresses, or null if none.
      */
     public static String getWifiIpAddresses(Context context) {
-        WifiManager wifiManager = context.getSystemService(WifiManager.class);
-        Network currentNetwork = wifiManager.getCurrentNetwork();
+        final WifiManager wifiManager = context.getSystemService(WifiManager.class);
+        final Network currentNetwork = wifiManager.getCurrentNetwork();
         if (currentNetwork != null) {
-            ConnectivityManager cm = (ConnectivityManager)
+            final ConnectivityManager cm = (ConnectivityManager)
                 context.getSystemService(Context.CONNECTIVITY_SERVICE);
-            LinkProperties prop = cm.getLinkProperties(currentNetwork);
+            final LinkProperties prop = cm.getLinkProperties(currentNetwork);
             return formatIpAddresses(prop);
         }
         return null;
@@ -242,7 +241,7 @@
 
     private static String formatIpAddresses(LinkProperties prop) {
         if (prop == null) return null;
-        Iterator<InetAddress> iter = prop.getAllAddresses().iterator();
+        final Iterator<InetAddress> iter = prop.getAllAddresses().iterator();
         // If there are no entries, return null
         if (!iter.hasNext()) return null;
         // Concatenate all available addresses, comma separated
@@ -263,7 +262,7 @@
         // And : new Locale("en_US").toString() => "en_us"
         if (null == localeStr)
             return Locale.getDefault();
-        String[] brokenDownLocale = localeStr.split("_", 3);
+        final String[] brokenDownLocale = localeStr.split("_", 3);
         // split may not return a 0-length array.
         if (1 == brokenDownLocale.length) {
             return new Locale(brokenDownLocale[0]);
@@ -397,7 +396,7 @@
      * exists but it is disabled.
      */
     public static UserHandle getManagedProfile(UserManager userManager) {
-        List<UserHandle> userProfiles = userManager.getUserProfiles();
+        final List<UserHandle> userProfiles = userManager.getUserProfiles();
         for (UserHandle profile : userProfiles) {
             if (profile.getIdentifier() == userManager.getUserHandle()) {
                 continue;
@@ -421,7 +420,7 @@
         // we need to use UserManager.getProfiles that is available on API 23 (the one currently
         // used for Settings Robolectric tests).
         final int myUserId = UserHandle.myUserId();
-        List<UserInfo> profiles = userManager.getProfiles(myUserId);
+        final List<UserInfo> profiles = userManager.getProfiles(myUserId);
         final int count = profiles.size();
         for (int i = 0; i < count; i++) {
             final UserInfo profile = profiles.get(i);
@@ -439,7 +438,7 @@
      * @return the managed profile id or UserHandle.USER_NULL if there is none.
      */
     public static int getManagedProfileId(UserManager um, int parentUserId) {
-        int[] profileIds = um.getProfileIdsWithDisabled(parentUserId);
+        final int[] profileIds = um.getProfileIdsWithDisabled(parentUserId);
         for (int profileId : profileIds) {
             if (profileId != parentUserId) {
                 return profileId;
@@ -465,13 +464,14 @@
      */
     public static UserHandle getSecureTargetUser(IBinder activityToken,
             UserManager um, @Nullable Bundle arguments, @Nullable Bundle intentExtras) {
-        UserHandle currentUser = new UserHandle(UserHandle.myUserId());
-        IActivityManager am = ActivityManager.getService();
+        final UserHandle currentUser = new UserHandle(UserHandle.myUserId());
+        final IActivityManager am = ActivityManager.getService();
         try {
-            String launchedFromPackage = am.getLaunchedFromPackage(activityToken);
-            boolean launchedFromSettingsApp = SETTINGS_PACKAGE_NAME.equals(launchedFromPackage);
+            final String launchedFromPackage = am.getLaunchedFromPackage(activityToken);
+            final boolean launchedFromSettingsApp =
+                    SETTINGS_PACKAGE_NAME.equals(launchedFromPackage);
 
-            UserHandle launchedFromUser = new UserHandle(UserHandle.getUserId(
+            final UserHandle launchedFromUser = new UserHandle(UserHandle.getUserId(
                     am.getLaunchedFromUid(activityToken)));
             if (launchedFromUser != null && !launchedFromUser.equals(currentUser)) {
                 // Check it's secure
@@ -479,14 +479,14 @@
                     return launchedFromUser;
                 }
             }
-            UserHandle extrasUser = getUserHandleFromBundle(intentExtras);
+            final UserHandle extrasUser = getUserHandleFromBundle(intentExtras);
             if (extrasUser != null && !extrasUser.equals(currentUser)) {
                 // Check it's secure
                 if (launchedFromSettingsApp && isProfileOf(um, extrasUser)) {
                     return extrasUser;
                 }
             }
-            UserHandle argumentsUser = getUserHandleFromBundle(arguments);
+            final UserHandle argumentsUser = getUserHandleFromBundle(arguments);
             if (argumentsUser != null && !argumentsUser.equals(currentUser)) {
                 // Check it's secure
                 if (launchedFromSettingsApp && isProfileOf(um, argumentsUser)) {
@@ -529,21 +529,6 @@
    }
 
     /**
-     * Return whether or not the user should have a SIM Cards option in Settings.
-     * TODO: Change back to returning true if count is greater than one after testing.
-     * TODO: See bug 16533525.
-     */
-    public static boolean showSimCardTile(Context context) {
-        if (FeatureFlagPersistent.isEnabled(context, FeatureFlags.NETWORK_INTERNET_V2)) {
-            return false;
-        }
-        final TelephonyManager tm =
-                (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
-
-        return tm.getSimCount() > 1;
-    }
-
-    /**
      * Queries for the UserInfo of a user. Returns null if the user doesn't exist (was removed).
      * @param userManager Instance of UserManager
      * @param checkUser The user to check the existence of.
@@ -571,10 +556,11 @@
     }
 
     public static ArraySet<String> getHandledDomains(PackageManager pm, String packageName) {
-        List<IntentFilterVerificationInfo> iviList = pm.getIntentFilterVerifications(packageName);
-        List<IntentFilter> filters = pm.getAllIntentFilters(packageName);
+        final List<IntentFilterVerificationInfo> iviList =
+                pm.getIntentFilterVerifications(packageName);
+        final List<IntentFilter> filters = pm.getAllIntentFilters(packageName);
 
-        ArraySet<String> result = new ArraySet<>();
+        final ArraySet<String> result = new ArraySet<>();
         if (iviList != null && iviList.size() > 0) {
             for (IntentFilterVerificationInfo ivi : iviList) {
                 for (String host : ivi.getDomains()) {
@@ -598,16 +584,16 @@
      * Returns the application info of the currently installed MDM package.
      */
     public static ApplicationInfo getAdminApplicationInfo(Context context, int profileId) {
-        DevicePolicyManager dpm =
+        final DevicePolicyManager dpm =
                 (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
-        ComponentName mdmPackage = dpm.getProfileOwnerAsUser(profileId);
+        final ComponentName mdmPackage = dpm.getProfileOwnerAsUser(profileId);
         if (mdmPackage == null) {
             return null;
         }
-        String mdmPackageName = mdmPackage.getPackageName();
+        final String mdmPackageName = mdmPackage.getPackageName();
         try {
-            IPackageManager ipm = AppGlobals.getPackageManager();
-            ApplicationInfo mdmApplicationInfo =
+            final IPackageManager ipm = AppGlobals.getPackageManager();
+            final ApplicationInfo mdmApplicationInfo =
                     ipm.getApplicationInfo(mdmPackageName, 0, profileId);
             return mdmApplicationInfo;
         } catch (RemoteException e) {
@@ -634,7 +620,7 @@
      */
     public static SpannableString createAccessibleSequence(CharSequence displayText,
             String accessibileText) {
-        SpannableString str = new SpannableString(displayText);
+        final SpannableString str = new SpannableString(displayText);
         str.setSpan(new TtsSpan.TextBuilder(accessibileText).build(), 0,
                 displayText.length(),
                 Spannable.SPAN_INCLUSIVE_INCLUSIVE);
@@ -668,7 +654,7 @@
         }
         final boolean allowAnyUser = isInternal
                 && bundle.getBoolean(ChooseLockSettingsHelper.EXTRA_ALLOW_ANY_USER, false);
-        int userId = bundle.getInt(Intent.EXTRA_USER_ID, UserHandle.myUserId());
+        final int userId = bundle.getInt(Intent.EXTRA_USER_ID, UserHandle.myUserId());
         if (userId == LockPatternUtils.USER_FRP) {
             return allowAnyUser ? userId : enforceSystemUser(context, userId);
         } else {
@@ -715,7 +701,7 @@
      * Returns the user id of the credential owner of the given user id.
      */
     public static int getCredentialOwnerUserId(Context context, int userId) {
-        UserManager um = getUserManager(context);
+        final UserManager um = getUserManager(context);
         return um.getCredentialOwnerProfile(userId);
     }
 
@@ -815,7 +801,7 @@
     }
 
     public static boolean hasFingerprintHardware(Context context) {
-        FingerprintManager fingerprintManager = getFingerprintManagerOrNull(context);
+        final FingerprintManager fingerprintManager = getFingerprintManagerOrNull(context);
         return fingerprintManager != null && fingerprintManager.isHardwareDetected();
     }
 
@@ -828,7 +814,7 @@
     }
 
     public static boolean hasFaceHardware(Context context) {
-        FaceManager faceManager = getFaceManagerOrNull(context);
+        final FaceManager faceManager = getFaceManagerOrNull(context);
         return faceManager != null && faceManager.isHardwareDetected();
     }
 
@@ -881,7 +867,7 @@
     public static VolumeInfo maybeInitializeVolume(StorageManager sm, Bundle bundle) {
         final String volumeId = bundle.getString(VolumeInfo.EXTRA_VOLUME_ID,
                 VolumeInfo.ID_PRIVATE_INTERNAL);
-        VolumeInfo volume = sm.findVolumeById(volumeId);
+        final VolumeInfo volume = sm.findVolumeById(volumeId);
         return isVolumeValid(volume) ? volume : null;
     }
 
@@ -894,12 +880,13 @@
      */
     public static boolean isProfileOrDeviceOwner(UserManager userManager,
             DevicePolicyManager devicePolicyManager, String packageName) {
-        List<UserInfo> userInfos = userManager.getUsers();
+        final List<UserInfo> userInfos = userManager.getUsers();
         if (devicePolicyManager.isDeviceOwnerAppOnAnyUser(packageName)) {
             return true;
         }
         for (int i = 0, size = userInfos.size(); i < size; i++) {
-            ComponentName cn = devicePolicyManager.getProfileOwnerAsUser(userInfos.get(i).id);
+            final ComponentName cn = devicePolicyManager
+                    .getProfileOwnerAsUser(userInfos.get(i).id);
             if (cn != null && cn.getPackageName().equals(packageName)) {
                 return true;
             }
@@ -954,9 +941,9 @@
             return original;
         }
 
-        float scaleWidth = ((float) maxWidth) / actualWidth;
-        float scaleHeight = ((float) maxHeight) / actualHeight;
-        float scale = Math.min(scaleWidth, scaleHeight);
+        final float scaleWidth = ((float) maxWidth) / actualWidth;
+        final float scaleHeight = ((float) maxHeight) / actualHeight;
+        final float scale = Math.min(scaleWidth, scaleHeight);
         final int width = (int) (actualWidth * scale);
         final int height = (int) (actualHeight * scale);
 
diff --git a/src/com/android/settings/accounts/AccountPreferenceController.java b/src/com/android/settings/accounts/AccountPreferenceController.java
index 8e3e702..6e1727b 100644
--- a/src/com/android/settings/accounts/AccountPreferenceController.java
+++ b/src/com/android/settings/accounts/AccountPreferenceController.java
@@ -329,19 +329,23 @@
             preferenceGroup.setContentDescription(
                     mContext.getString(R.string.account_settings));
         } else if (userInfo.isManagedProfile()) {
-            preferenceGroup.setTitle(R.string.category_work);
-            String workGroupSummary = getWorkGroupSummary(context, userInfo);
-            preferenceGroup.setSummary(workGroupSummary);
-            preferenceGroup.setContentDescription(
-                    mContext.getString(R.string.accessibility_category_work, workGroupSummary));
+            if (mType == ProfileSelectFragment.ALL) {
+                preferenceGroup.setTitle(R.string.category_work);
+                final String workGroupSummary = getWorkGroupSummary(context, userInfo);
+                preferenceGroup.setSummary(workGroupSummary);
+                preferenceGroup.setContentDescription(
+                        mContext.getString(R.string.accessibility_category_work, workGroupSummary));
+            }
             profileData.removeWorkProfilePreference = newRemoveWorkProfilePreference();
             mHelper.enforceRestrictionOnPreference(profileData.removeWorkProfilePreference,
                     DISALLOW_REMOVE_MANAGED_PROFILE, UserHandle.myUserId());
             profileData.managedProfilePreference = newManagedProfileSettings();
         } else {
-            preferenceGroup.setTitle(R.string.category_personal);
-            preferenceGroup.setContentDescription(
-                    mContext.getString(R.string.accessibility_category_personal));
+            if (mType == ProfileSelectFragment.ALL) {
+                preferenceGroup.setTitle(R.string.category_personal);
+                preferenceGroup.setContentDescription(
+                        mContext.getString(R.string.accessibility_category_personal));
+            }
         }
         final PreferenceScreen screen = mParent.getPreferenceScreen();
         if (screen != null) {
diff --git a/src/com/android/settings/applications/specialaccess/zenaccess/ScaryWarningDialogFragment.java b/src/com/android/settings/applications/specialaccess/zenaccess/ScaryWarningDialogFragment.java
index 69318f8..778206b 100644
--- a/src/com/android/settings/applications/specialaccess/zenaccess/ScaryWarningDialogFragment.java
+++ b/src/com/android/settings/applications/specialaccess/zenaccess/ScaryWarningDialogFragment.java
@@ -25,7 +25,6 @@
 
 import com.android.settings.R;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-import com.android.settings.notification.ZenAccessSettings;
 
 /**
  * Warning dialog when allowing zen access warning about the privileges being granted.
diff --git a/src/com/android/settings/applications/specialaccess/zenaccess/ZenAccessController.java b/src/com/android/settings/applications/specialaccess/zenaccess/ZenAccessController.java
index 946599b..9c99254 100644
--- a/src/com/android/settings/applications/specialaccess/zenaccess/ZenAccessController.java
+++ b/src/com/android/settings/applications/specialaccess/zenaccess/ZenAccessController.java
@@ -70,7 +70,9 @@
             final List<PackageInfo> pkgs = list.getList();
             if (pkgs != null) {
                 for (PackageInfo info : pkgs) {
-                    requestingPackages.add(info.packageName);
+                    if (info.applicationInfo.enabled) {
+                        requestingPackages.add(info.packageName);
+                    }
                 }
             }
         } catch (RemoteException e) {
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingService.java b/src/com/android/settings/bluetooth/BluetoothPairingService.java
index 48e9eee..d93e57d 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingService.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingService.java
@@ -141,7 +141,7 @@
         String name = intent.getStringExtra(BluetoothDevice.EXTRA_NAME);
         if (TextUtils.isEmpty(name)) {
             BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
-            name = device != null ? device.getAliasName() : res.getString(android.R.string.unknownName);
+            name = device != null ? device.getAlias() : res.getString(android.R.string.unknownName);
         }
 
         Log.d(TAG, "Show pairing notification for " + mDevice.getAddress() + " (" + name + ")");
diff --git a/src/com/android/settings/bluetooth/Utils.java b/src/com/android/settings/bluetooth/Utils.java
index d6e395e..48c7212 100755
--- a/src/com/android/settings/bluetooth/Utils.java
+++ b/src/com/android/settings/bluetooth/Utils.java
@@ -45,7 +45,7 @@
     private static final String TAG = "BluetoothUtils";
 
     static final boolean V = BluetoothUtils.V; // verbose logging
-    static final boolean D =  BluetoothUtils.D;  // regular logging
+    static final boolean D = BluetoothUtils.D;  // regular logging
 
     private Utils() {
     }
@@ -93,7 +93,8 @@
     @VisibleForTesting
     static void showConnectingError(Context context, String name, LocalBluetoothManager manager) {
         FeatureFactory.getFactory(context).getMetricsFeatureProvider().visible(context,
-            SettingsEnums.PAGE_UNKNOWN, SettingsEnums.ACTION_SETTINGS_BLUETOOTH_CONNECT_ERROR);
+                SettingsEnums.PAGE_UNKNOWN, SettingsEnums.ACTION_SETTINGS_BLUETOOTH_CONNECT_ERROR,
+                0);
         showError(context, name, R.string.bluetooth_connecting_error_message, manager);
     }
 
@@ -125,7 +126,7 @@
     }
 
     public static String createRemoteName(Context context, BluetoothDevice device) {
-        String mRemoteName = device != null ? device.getAliasName() : null;
+        String mRemoteName = device != null ? device.getAlias() : null;
 
         if (mRemoteName == null) {
             mRemoteName = context.getString(R.string.unknown);
diff --git a/src/com/android/settings/core/FeatureFlags.java b/src/com/android/settings/core/FeatureFlags.java
index 8203b35..92e4e72 100644
--- a/src/com/android/settings/core/FeatureFlags.java
+++ b/src/com/android/settings/core/FeatureFlags.java
@@ -23,9 +23,8 @@
     public static final String AUDIO_SWITCHER_SETTINGS = "settings_audio_switcher";
     public static final String DYNAMIC_SYSTEM = "settings_dynamic_system";
     public static final String HEARING_AID_SETTINGS = "settings_bluetooth_hearing_aid";
-    public static final String MOBILE_NETWORK_V2 = "settings_mobile_network_v2";
-    public static final String NETWORK_INTERNET_V2 = "settings_network_and_internet_v2";
     public static final String WIFI_DETAILS_DATAUSAGE_HEADER =
             "settings_wifi_details_datausage_header";
     public static final String PERSONAL_WORK_PROFILE = "settings_work_profile";
+    public static final String CONTROLLER_ENHANCEMENT = "settings_controller_loading_enhancement";
 }
diff --git a/src/com/android/settings/core/InstrumentedFragment.java b/src/com/android/settings/core/InstrumentedFragment.java
index 427e33a..c4ceb4a 100644
--- a/src/com/android/settings/core/InstrumentedFragment.java
+++ b/src/com/android/settings/core/InstrumentedFragment.java
@@ -47,8 +47,4 @@
         mVisibilityLoggerMixin.setSourceMetricsCategory(getActivity());
         super.onResume();
     }
-
-    protected final VisibilityLoggerMixin getVisibilityLogger() {
-        return mVisibilityLoggerMixin;
-    }
 }
diff --git a/src/com/android/settings/core/InstrumentedPreferenceFragment.java b/src/com/android/settings/core/InstrumentedPreferenceFragment.java
index f5f245f..8b59281 100644
--- a/src/com/android/settings/core/InstrumentedPreferenceFragment.java
+++ b/src/com/android/settings/core/InstrumentedPreferenceFragment.java
@@ -91,10 +91,6 @@
         return getPreferenceManager().getContext();
     }
 
-    protected final VisibilityLoggerMixin getVisibilityLogger() {
-        return mVisibilityLoggerMixin;
-    }
-
     /**
      * Get the res id for static preference xml for this fragment.
      */
diff --git a/src/com/android/settings/core/instrumentation/SettingsEventLogWriter.java b/src/com/android/settings/core/instrumentation/SettingsEventLogWriter.java
index a58555f..4ffa2d0 100644
--- a/src/com/android/settings/core/instrumentation/SettingsEventLogWriter.java
+++ b/src/com/android/settings/core/instrumentation/SettingsEventLogWriter.java
@@ -25,11 +25,11 @@
 public class SettingsEventLogWriter extends EventLogWriter {
 
     @Override
-    public void visible(Context context, int source, int category) {
+    public void visible(Context context, int source, int category, int latency) {
         if (shouldDisableGenericEventLogging()) {
             return;
         }
-        super.visible(context, source, category);
+        super.visible(context, source, category, latency);
     }
 
     @Override
diff --git a/src/com/android/settings/core/instrumentation/SettingsIntelligenceLogWriter.java b/src/com/android/settings/core/instrumentation/SettingsIntelligenceLogWriter.java
index 9498732..62954ea 100644
--- a/src/com/android/settings/core/instrumentation/SettingsIntelligenceLogWriter.java
+++ b/src/com/android/settings/core/instrumentation/SettingsIntelligenceLogWriter.java
@@ -61,12 +61,12 @@
     }
 
     @Override
-    public void visible(Context context, int attribution, int pageId) {
-        action(attribution /* attribution */,
+    public void visible(Context context, int attribution, int pageId, int latency) {
+        action(attribution /* from pageId */,
                 SettingsEnums.PAGE_VISIBLE /* action */,
-                pageId /* pageId */,
+                pageId /* target pageId */,
                 "" /* changedPreferenceKey */,
-                0 /* changedPreferenceIntValue */);
+                latency /* changedPreferenceIntValue */);
     }
 
     @Override
diff --git a/src/com/android/settings/core/instrumentation/StatsLogWriter.java b/src/com/android/settings/core/instrumentation/StatsLogWriter.java
index bcdecf3..6e09b72 100644
--- a/src/com/android/settings/core/instrumentation/StatsLogWriter.java
+++ b/src/com/android/settings/core/instrumentation/StatsLogWriter.java
@@ -26,13 +26,13 @@
 public class StatsLogWriter implements LogWriter {
 
     @Override
-    public void visible(Context context, int attribution, int pageId) {
+    public void visible(Context context, int attribution, int pageId, int latency) {
         StatsLog.write(StatsLog.SETTINGS_UI_CHANGED /* Atom name */,
-                attribution,
+                attribution, /* from pageId */
                 SettingsEnums.PAGE_VISIBLE /* action */,
-                pageId,
+                pageId, /* target pageId */
                 null /* changedPreferenceKey */,
-                0 /* changedPreferenceIntValue */);
+                latency /* changedPreferenceIntValue */);
     }
 
     @Override
diff --git a/src/com/android/settings/datausage/BillingCyclePreference.java b/src/com/android/settings/datausage/BillingCyclePreference.java
index 23c577c..8dea7de 100644
--- a/src/com/android/settings/datausage/BillingCyclePreference.java
+++ b/src/com/android/settings/datausage/BillingCyclePreference.java
@@ -26,27 +26,39 @@
 
 import com.android.settings.R;
 import com.android.settings.core.SubSettingLauncher;
-import com.android.settings.datausage.CellDataPreference.DataStateListener;
+import com.android.settings.network.MobileDataEnabledListener;
 
-public class BillingCyclePreference extends Preference implements TemplatePreference {
+/**
+ * Preference which displays billing cycle of subscription
+ */
+public class BillingCyclePreference extends Preference
+        implements TemplatePreference, MobileDataEnabledListener.Client {
 
     private NetworkTemplate mTemplate;
     private NetworkServices mServices;
     private int mSubId;
+    private MobileDataEnabledListener mListener;
 
+    /**
+     * Preference constructor
+     *
+     * @param context Context of preference
+     * @param arrts The attributes of the XML tag that is inflating the preference
+     */
     public BillingCyclePreference(Context context, AttributeSet attrs) {
         super(context, attrs);
+        mListener = new MobileDataEnabledListener(context, this);
     }
 
     @Override
     public void onAttached() {
         super.onAttached();
-        mListener.setListener(true, mSubId, getContext());
+        mListener.start(mSubId);
     }
 
     @Override
     public void onDetached() {
-        mListener.setListener(false, mSubId, getContext());
+        mListener.stop();
         super.onDetached();
     }
 
@@ -73,7 +85,7 @@
 
     @Override
     public Intent getIntent() {
-        Bundle args = new Bundle();
+        final Bundle args = new Bundle();
         args.putParcelable(DataUsageList.EXTRA_NETWORK_TEMPLATE, mTemplate);
         return new SubSettingLauncher(getContext())
                 .setDestination(BillingCycleSettings.class.getName())
@@ -83,10 +95,10 @@
                 .toIntent();
     }
 
-    private final DataStateListener mListener = new DataStateListener() {
-        @Override
-        public void onChange(boolean selfChange) {
-            updateEnabled();
-        }
-    };
+    /**
+     * Implementation of MobileDataEnabledListener.Client
+     */
+    public void onMobileDataEnabledChange() {
+        updateEnabled();
+    }
 }
diff --git a/src/com/android/settings/datausage/CellDataPreference.java b/src/com/android/settings/datausage/CellDataPreference.java
index af7e16e..f4f2be7 100644
--- a/src/com/android/settings/datausage/CellDataPreference.java
+++ b/src/com/android/settings/datausage/CellDataPreference.java
@@ -17,14 +17,9 @@
 import android.app.settings.SettingsEnums;
 import android.content.Context;
 import android.content.DialogInterface;
-import android.database.ContentObserver;
 import android.net.NetworkTemplate;
-import android.net.Uri;
-import android.os.Handler;
-import android.os.Looper;
 import android.os.Parcel;
 import android.os.Parcelable;
-import android.provider.Settings.Global;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
@@ -39,34 +34,38 @@
 import androidx.preference.PreferenceViewHolder;
 
 import com.android.settings.R;
-import com.android.settings.Utils;
+import com.android.settings.network.MobileDataEnabledListener;
+import com.android.settings.network.ProxySubscriptionManager;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.CustomDialogPreferenceCompat;
 
-import java.util.List;
-
-public class CellDataPreference extends CustomDialogPreferenceCompat implements TemplatePreference {
+/**
+ * Preference of cellular data control within Data Usage
+ */
+public class CellDataPreference extends CustomDialogPreferenceCompat
+        implements TemplatePreference, MobileDataEnabledListener.Client {
 
     private static final String TAG = "CellDataPreference";
 
     public int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
     public boolean mChecked;
     public boolean mMultiSimDialog;
-    private TelephonyManager mTelephonyManager;
     @VisibleForTesting
-    SubscriptionManager mSubscriptionManager;
+    ProxySubscriptionManager mProxySubscriptionMgr;
+    private MobileDataEnabledListener mDataStateListener;
 
     public CellDataPreference(Context context, AttributeSet attrs) {
         super(context, attrs, TypedArrayUtils.getAttr(context,
                 androidx.preference.R.attr.switchPreferenceStyle,
                 android.R.attr.switchPreferenceStyle));
+        mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(context);
+        mDataStateListener = new MobileDataEnabledListener(context, this);
     }
 
     @Override
     protected void onRestoreInstanceState(Parcelable s) {
-        CellDataState state = (CellDataState) s;
+        final CellDataState state = (CellDataState) s;
         super.onRestoreInstanceState(state.getSuperState());
-        mTelephonyManager = TelephonyManager.from(getContext());
         mChecked = state.mChecked;
         mMultiSimDialog = state.mMultiSimDialog;
         if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
@@ -78,7 +77,7 @@
 
     @Override
     protected Parcelable onSaveInstanceState() {
-        CellDataState state = new CellDataState(super.onSaveInstanceState());
+        final CellDataState state = new CellDataState(super.onSaveInstanceState());
         state.mChecked = mChecked;
         state.mMultiSimDialog = mMultiSimDialog;
         state.mSubId = mSubId;
@@ -88,19 +87,14 @@
     @Override
     public void onAttached() {
         super.onAttached();
-        mDataStateListener.setListener(true, mSubId, getContext());
-        if (mSubscriptionManager!= null) {
-            mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
-        }
+        mDataStateListener.start(mSubId);
+        mProxySubscriptionMgr.addActiveSubscriptionsListener(mOnSubscriptionsChangeListener);
     }
 
     @Override
     public void onDetached() {
-        mDataStateListener.setListener(false, mSubId, getContext());
-        if (mSubscriptionManager!= null) {
-            mSubscriptionManager.removeOnSubscriptionsChangedListener(
-                    mOnSubscriptionsChangeListener);
-        }
+        mDataStateListener.stop();
+        mProxySubscriptionMgr.removeActiveSubscriptionsListener(mOnSubscriptionsChangeListener);
         super.onDetached();
     }
 
@@ -109,10 +103,9 @@
         if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
             throw new IllegalArgumentException("CellDataPreference needs a SubscriptionInfo");
         }
-        mSubscriptionManager = SubscriptionManager.from(getContext());
-        mTelephonyManager = TelephonyManager.from(getContext());
 
-        mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
+        mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(getContext());
+        mProxySubscriptionMgr.addActiveSubscriptionsListener(mOnSubscriptionsChangeListener);
 
         if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
             mSubId = subId;
@@ -123,13 +116,13 @@
     }
 
     private void updateChecked() {
-        setChecked(mTelephonyManager.getDataEnabled(mSubId));
+        setChecked(getContext().getSystemService(TelephonyManager.class).getDataEnabled(mSubId));
     }
 
     private void updateEnabled() {
         // If this subscription is not active, for example, SIM card is taken out, we disable
         // the button.
-        setEnabled(mSubscriptionManager.getActiveSubscriptionInfo(mSubId) != null);
+        setEnabled(mProxySubscriptionMgr.getActiveSubscriptionInfo(mSubId) != null);
     }
 
     @Override
@@ -137,47 +130,25 @@
         final Context context = getContext();
         FeatureFactory.getFactory(context).getMetricsFeatureProvider()
                 .action(context, SettingsEnums.ACTION_CELL_DATA_TOGGLE, !mChecked);
-        final SubscriptionInfo currentSir = mSubscriptionManager.getActiveSubscriptionInfo(
+        final SubscriptionInfo currentSir = mProxySubscriptionMgr.getActiveSubscriptionInfo(
                 mSubId);
-        final SubscriptionInfo nextSir = mSubscriptionManager.getDefaultDataSubscriptionInfo();
+        final SubscriptionInfo nextSir = mProxySubscriptionMgr.getActiveSubscriptionInfo(
+                SubscriptionManager.getDefaultDataSubscriptionId());
         if (mChecked) {
-            // If the device is single SIM or is enabling data on the active data SIM then forgo
-            // the pop-up.
-            if (!Utils.showSimCardTile(getContext()) ||
-                    (nextSir != null && currentSir != null &&
-                            currentSir.getSubscriptionId() == nextSir.getSubscriptionId())) {
-                setMobileDataEnabled(false);
-                if (nextSir != null && currentSir != null &&
-                        currentSir.getSubscriptionId() == nextSir.getSubscriptionId()) {
-                    disableDataForOtherSubscriptions(mSubId);
-                }
-                return;
+            setMobileDataEnabled(false);
+            if (nextSir != null && currentSir != null
+                    && currentSir.getSubscriptionId() == nextSir.getSubscriptionId()) {
+                disableDataForOtherSubscriptions(mSubId);
             }
-            // disabling data; show confirmation dialog which eventually
-            // calls setMobileDataEnabled() once user confirms.
-            mMultiSimDialog = false;
-            super.performClick(view);
         } else {
-            // If we are showing the Sim Card tile then we are a Multi-Sim device.
-            if (Utils.showSimCardTile(getContext())) {
-                mMultiSimDialog = true;
-                if (nextSir != null && currentSir != null &&
-                        currentSir.getSubscriptionId() == nextSir.getSubscriptionId()) {
-                    setMobileDataEnabled(true);
-                    disableDataForOtherSubscriptions(mSubId);
-                    return;
-                }
-                super.performClick(view);
-            } else {
-                setMobileDataEnabled(true);
-            }
+            setMobileDataEnabled(true);
         }
     }
 
     private void setMobileDataEnabled(boolean enabled) {
         if (DataUsageSummary.LOGD) Log.d(TAG, "setMobileDataEnabled(" + enabled + ","
                 + mSubId + ")");
-        mTelephonyManager.setDataEnabled(mSubId, enabled);
+        getContext().getSystemService(TelephonyManager.class).setDataEnabled(mSubId, enabled);
         setChecked(enabled);
     }
 
@@ -190,7 +161,7 @@
     @Override
     public void onBindViewHolder(PreferenceViewHolder holder) {
         super.onBindViewHolder(holder);
-        View switchView = holder.findViewById(android.R.id.switch_widget);
+        final View switchView = holder.findViewById(android.R.id.switch_widget);
         switchView.setClickable(false);
         ((Checkable) switchView).setChecked(mChecked);
     }
@@ -215,8 +186,10 @@
 
     private void showMultiSimDialog(Builder builder,
             DialogInterface.OnClickListener listener) {
-        final SubscriptionInfo currentSir = mSubscriptionManager.getActiveSubscriptionInfo(mSubId);
-        final SubscriptionInfo nextSir = mSubscriptionManager.getDefaultDataSubscriptionInfo();
+        final SubscriptionInfo currentSir = mProxySubscriptionMgr.getActiveSubscriptionInfo(
+                mSubId);
+        final SubscriptionInfo nextSir = mProxySubscriptionMgr.getActiveSubscriptionInfo(
+                SubscriptionManager.getDefaultDataSubscriptionId());
 
         final String previousName = (nextSir == null)
             ? getContext().getResources().getString(R.string.sim_selection_required_pref)
@@ -232,14 +205,10 @@
     }
 
     private void disableDataForOtherSubscriptions(int subId) {
-        List<SubscriptionInfo> subInfoList = mSubscriptionManager
-                .getActiveSubscriptionInfoList(true);
-        if (subInfoList != null) {
-            for (SubscriptionInfo subInfo : subInfoList) {
-                if (subInfo.getSubscriptionId() != subId) {
-                    mTelephonyManager.setDataEnabled(subInfo.getSubscriptionId(), false);
-                }
-            }
+        final SubscriptionInfo subInfo = mProxySubscriptionMgr.getActiveSubscriptionInfo(
+                subId);
+        if (subInfo != null) {
+            getContext().getSystemService(TelephonyManager.class).setDataEnabled(subId, false);
         }
     }
 
@@ -249,7 +218,7 @@
             return;
         }
         if (mMultiSimDialog) {
-            mSubscriptionManager.setDefaultDataSubId(mSubId);
+            mProxySubscriptionMgr.get().setDefaultDataSubId(mSubId);
             setMobileDataEnabled(true);
             disableDataForOtherSubscriptions(mSubId);
         } else {
@@ -259,40 +228,23 @@
     }
 
     @VisibleForTesting
-    final SubscriptionManager.OnSubscriptionsChangedListener mOnSubscriptionsChangeListener
-            = new SubscriptionManager.OnSubscriptionsChangedListener() {
-        @Override
-        public void onSubscriptionsChanged() {
-            if (DataUsageSummary.LOGD) {
-                Log.d(TAG, "onSubscriptionsChanged");
-            }
-            updateEnabled();
-        }
-    };
-
-    private final DataStateListener mDataStateListener = new DataStateListener() {
-        @Override
-        public void onChange(boolean selfChange) {
-            updateChecked();
-        }
-    };
-
-    public abstract static class DataStateListener extends ContentObserver {
-        public DataStateListener() {
-            super(new Handler(Looper.getMainLooper()));
-        }
-
-        public void setListener(boolean listening, int subId, Context context) {
-            if (listening) {
-                Uri uri = Global.getUriFor(Global.MOBILE_DATA);
-                if (TelephonyManager.getDefault().getSimCount() != 1) {
-                    uri = Global.getUriFor(Global.MOBILE_DATA + subId);
+    final ProxySubscriptionManager.OnActiveSubscriptionChangedListener
+            mOnSubscriptionsChangeListener =
+            new ProxySubscriptionManager.OnActiveSubscriptionChangedListener() {
+                public void onChanged() {
+                    if (DataUsageSummary.LOGD) {
+                        Log.d(TAG, "onSubscriptionsChanged");
+                    }
+                    updateEnabled();
                 }
-                context.getContentResolver().registerContentObserver(uri, false, this);
-            } else {
-                context.getContentResolver().unregisterContentObserver(this);
-            }
-        }
+            };
+
+    /**
+     * Implementation of MobileDataEnabledListener.Client
+    */
+    @VisibleForTesting
+    public void onMobileDataEnabledChange() {
+        updateChecked();
     }
 
     public static class CellDataState extends BaseSavedState {
diff --git a/src/com/android/settings/datausage/DataUsageList.java b/src/com/android/settings/datausage/DataUsageList.java
index f477ba3..f747951 100644
--- a/src/com/android/settings/datausage/DataUsageList.java
+++ b/src/com/android/settings/datausage/DataUsageList.java
@@ -39,7 +39,6 @@
 import android.provider.Settings;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
-import android.telephony.TelephonyManager;
 import android.util.Log;
 import android.util.SparseArray;
 import android.view.View;
@@ -57,6 +56,8 @@
 import com.android.settings.R;
 import com.android.settings.core.SubSettingLauncher;
 import com.android.settings.datausage.CycleAdapter.SpinnerInterface;
+import com.android.settings.network.MobileDataEnabledListener;
+import com.android.settings.network.ProxySubscriptionManager;
 import com.android.settings.widget.LoadingViewController;
 import com.android.settingslib.AppItem;
 import com.android.settingslib.net.NetworkCycleChartData;
@@ -72,7 +73,8 @@
  * Panel showing data usage history across various networks, including options
  * to inspect based on usage cycle and control through {@link NetworkPolicy}.
  */
-public class DataUsageList extends DataUsageBaseFragment {
+public class DataUsageList extends DataUsageBaseFragment
+        implements MobileDataEnabledListener.Client {
 
     static final String EXTRA_SUB_ID = "sub_id";
     static final String EXTRA_NETWORK_TEMPLATE = "network_template";
@@ -91,13 +93,8 @@
     private static final int LOADER_CHART_DATA = 2;
     private static final int LOADER_SUMMARY = 3;
 
-    private final CellDataPreference.DataStateListener mDataStateListener =
-            new CellDataPreference.DataStateListener() {
-                @Override
-                public void onChange(boolean selfChange) {
-                    updatePolicy();
-                }
-            };
+    @VisibleForTesting
+    MobileDataEnabledListener mDataStateListener;
 
     @VisibleForTesting
     NetworkTemplate mTemplate;
@@ -111,7 +108,6 @@
     LoadingViewController mLoadingViewController;
 
     private ChartDataUsagePreference mChart;
-    private TelephonyManager mTelephonyManager;
     private List<NetworkCycleChartData> mCycleData;
     private ArrayList<Long> mCycles;
     private UidDetailProvider mUidDetailProvider;
@@ -133,14 +129,15 @@
         if (!isBandwidthControlEnabled()) {
             Log.w(TAG, "No bandwidth control; leaving");
             activity.finish();
+            return;
         }
 
         mUidDetailProvider = new UidDetailProvider(activity);
-        mTelephonyManager = activity.getSystemService(TelephonyManager.class);
         mUsageAmount = findPreference(KEY_USAGE_AMOUNT);
         mChart = findPreference(KEY_CHART_DATA);
         mApps = findPreference(KEY_APPS_GROUP);
         processArgument();
+        mDataStateListener = new MobileDataEnabledListener(activity, this);
     }
 
     @Override
@@ -190,20 +187,21 @@
     @Override
     public void onResume() {
         super.onResume();
-        mDataStateListener.setListener(true, mSubId, getContext());
+        mDataStateListener.start(mSubId);
         updateBody();
     }
 
     @Override
     public void onPause() {
         super.onPause();
-        mDataStateListener.setListener(false, mSubId, getContext());
+        mDataStateListener.stop();
     }
 
     @Override
     public void onDestroy() {
         mUidDetailProvider.clearCache();
         mUidDetailProvider = null;
+        mDataStateListener.stop();
 
         super.onDestroy();
     }
@@ -234,6 +232,13 @@
     }
 
     /**
+     * Implementation of MobileDataEnabledListener.Client
+     */
+    public void onMobileDataEnabledChange() {
+        updatePolicy();
+    }
+
+    /**
      * Update body content based on current tab. Loads network cycle data from system, and
      * binds them to visible controls.
      */
@@ -253,7 +258,7 @@
 
         int seriesColor = context.getColor(R.color.sim_noitification);
         if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
-            final SubscriptionInfo sir = services.mSubscriptionManager
+            final SubscriptionInfo sir = ProxySubscriptionManager.getInstance(context)
                     .getActiveSubscriptionInfo(mSubId);
 
             if (sir != null) {
@@ -400,7 +405,7 @@
         Collections.sort(items);
         for (int i = 0; i < items.size(); i++) {
             final int percentTotal = largest != 0 ? (int) (items.get(i).total * 100 / largest) : 0;
-            AppDataUsagePreference preference = new AppDataUsagePreference(getContext(),
+            final AppDataUsagePreference preference = new AppDataUsagePreference(getContext(),
                     items.get(i), percentTotal, mUidDetailProvider);
             preference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
                 @Override
diff --git a/src/com/android/settings/datausage/DataUsageSummary.java b/src/com/android/settings/datausage/DataUsageSummary.java
index d26fc30..0796e5a 100644
--- a/src/com/android/settings/datausage/DataUsageSummary.java
+++ b/src/com/android/settings/datausage/DataUsageSummary.java
@@ -33,6 +33,7 @@
 import androidx.preference.PreferenceScreen;
 
 import com.android.settings.R;
+import com.android.settings.network.ProxySubscriptionManager;
 import com.android.settingslib.NetworkPolicyEditor;
 import com.android.settingslib.core.AbstractPreferenceController;
 
@@ -65,6 +66,7 @@
     private DataUsageSummaryPreference mSummaryPreference;
     private DataUsageSummaryPreferenceController mSummaryController;
     private NetworkTemplate mDefaultTemplate;
+    private ProxySubscriptionManager mProxySubscriptionMgr;
 
     @Override
     public int getHelpResource() {
@@ -76,6 +78,11 @@
         super.onCreate(icicle);
         Context context = getContext();
 
+        // enable ProxySubscriptionMgr with Lifecycle support for all controllers
+        // live within this fragment
+        mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(context);
+        mProxySubscriptionMgr.setLifecycle(getLifecycle());
+
         boolean hasMobileData = DataUsageUtils.hasMobileData(context);
 
         final int defaultSubId = SubscriptionManager.getDefaultDataSubscriptionId();
diff --git a/src/com/android/settings/development/featureflags/FeatureFlagPersistent.java b/src/com/android/settings/development/featureflags/FeatureFlagPersistent.java
index 59318c4..d89df79 100644
--- a/src/com/android/settings/development/featureflags/FeatureFlagPersistent.java
+++ b/src/com/android/settings/development/featureflags/FeatureFlagPersistent.java
@@ -35,7 +35,6 @@
     static {
         PERSISTENT_FLAGS = new HashSet<>();
         PERSISTENT_FLAGS.add(FeatureFlags.HEARING_AID_SETTINGS);
-        PERSISTENT_FLAGS.add(FeatureFlags.NETWORK_INTERNET_V2);
         PERSISTENT_FLAGS.add(FeatureFlags.DYNAMIC_SYSTEM);
     }
 
diff --git a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java
index 52ecc97..71bd8c5 100644
--- a/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java
+++ b/src/com/android/settings/deviceinfo/PhoneNumberPreferenceController.java
@@ -24,8 +24,6 @@
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
-import android.text.BidiFormatter;
-import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
 import android.widget.Toast;
 
@@ -160,10 +158,10 @@
 
     @VisibleForTesting
     CharSequence getFormattedPhoneNumber(SubscriptionInfo subscriptionInfo) {
-        final String phoneNumber = DeviceInfoUtils.getFormattedPhoneNumber(mContext,
+        final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext,
                 subscriptionInfo);
         return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default)
-                : BidiFormatter.getInstance().unicodeWrap(phoneNumber, TextDirectionHeuristics.LTR);
+                : phoneNumber;
     }
 
     @VisibleForTesting
diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
index 86374b4..857f535 100644
--- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
+++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java
@@ -26,17 +26,15 @@
 import android.os.PersistableBundle;
 import android.os.UserHandle;
 import android.telephony.CarrierConfigManager;
-import android.telephony.SmsCbMessage;
 import android.telephony.PhoneStateListener;
 import android.telephony.ServiceState;
 import android.telephony.SignalStrength;
+import android.telephony.SmsCbMessage;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
 import android.telephony.TelephonyManager;
 import android.telephony.euicc.EuiccManager;
-import android.text.BidiFormatter;
-import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
 
 import androidx.annotation.NonNull;
@@ -143,9 +141,9 @@
         mSlotIndex = slotId;
         mSubscriptionInfo = getPhoneSubscriptionInfo(slotId);
 
-        mTelephonyManager =  mContext.getSystemService(TelephonyManager.class);
-        mCarrierConfigManager =  mContext.getSystemService(CarrierConfigManager.class);
-        mEuiccManager =  mContext.getSystemService(EuiccManager.class);
+        mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
+        mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class);
+        mEuiccManager = mContext.getSystemService(EuiccManager.class);
         mSubscriptionManager = mContext.getSystemService(SubscriptionManager.class);
 
         mRes = mContext.getResources();
@@ -184,9 +182,9 @@
 
         mTelephonyManager.createForSubscriptionId(mSubscriptionInfo.getSubscriptionId())
                 .listen(mPhoneStateListener,
-                PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
-                        | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
-                        | PhoneStateListener.LISTEN_SERVICE_STATE);
+                        PhoneStateListener.LISTEN_DATA_CONNECTION_STATE
+                                | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS
+                                | PhoneStateListener.LISTEN_SERVICE_STATE);
         mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangedListener);
 
         if (mShowLatestAreaInfo) {
@@ -224,8 +222,8 @@
 
     private void updatePhoneNumber() {
         // If formattedNumber is null or empty, it'll display as "Unknown".
-        mDialog.setText(PHONE_NUMBER_VALUE_ID, BidiFormatter.getInstance().unicodeWrap(
-                getPhoneNumber(), TextDirectionHeuristics.LTR));
+        mDialog.setText(PHONE_NUMBER_VALUE_ID,
+                DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext, mSubscriptionInfo));
     }
 
     private void updateDataState(int state) {
@@ -407,13 +405,14 @@
     private void updateImsRegistrationState() {
         final int subscriptionId = mSubscriptionInfo.getSubscriptionId();
         final PersistableBundle carrierConfig =
-            mCarrierConfigManager.getConfigForSubId(subscriptionId);
+                mCarrierConfigManager.getConfigForSubId(subscriptionId);
         final boolean showImsRegState = carrierConfig == null ? false :
-            carrierConfig.getBoolean(CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL);
+                carrierConfig.getBoolean(
+                        CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL);
         if (showImsRegState) {
             final boolean isImsRegistered = mTelephonyManager.isImsRegistered(subscriptionId);
             mDialog.setText(IMS_REGISTRATION_STATE_VALUE_ID, mRes.getString(isImsRegistered ?
-                R.string.ims_reg_status_registered : R.string.ims_reg_status_not_registered));
+                    R.string.ims_reg_status_registered : R.string.ims_reg_status_not_registered));
         } else {
             mDialog.removeSettingFromScreen(IMS_REGISTRATION_STATE_LABEL_ID);
             mDialog.removeSettingFromScreen(IMS_REGISTRATION_STATE_VALUE_ID);
@@ -462,11 +461,6 @@
     }
 
     @VisibleForTesting
-    String getPhoneNumber() {
-        return DeviceInfoUtils.getFormattedPhoneNumber(mContext, mSubscriptionInfo);
-    }
-
-    @VisibleForTesting
     SignalStrength getSignalStrength() {
         return mTelephonyManager.getSignalStrength();
     }
diff --git a/src/com/android/settings/fuelgauge/BatteryAppListPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryAppListPreferenceController.java
index 7741a97..70b964c 100644
--- a/src/com/android/settings/fuelgauge/BatteryAppListPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/BatteryAppListPreferenceController.java
@@ -46,7 +46,6 @@
 import com.android.settings.SettingsActivity;
 import com.android.settings.core.InstrumentedPreferenceFragment;
 import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settingslib.applications.AppUtils;
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -355,7 +354,7 @@
         // Don't show over-counted, unaccounted and hidden system module in any condition
         return sipper.drainType == BatterySipper.DrainType.OVERCOUNTED
                 || sipper.drainType == BatterySipper.DrainType.UNACCOUNTED
-                || mBatteryUtils.isHiddenSystemModule(sipper);
+                || mBatteryUtils.isHiddenSystemModule(sipper) || sipper.getUid() < 0;
     }
 
     @VisibleForTesting
diff --git a/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardRenderer.java b/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardRenderer.java
index 91b2e97..ccfb732 100644
--- a/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardRenderer.java
+++ b/src/com/android/settings/homepage/contextualcards/conditional/ConditionContextualCardRenderer.java
@@ -65,7 +65,7 @@
                 mContext).getMetricsFeatureProvider();
 
         metricsFeatureProvider.visible(mContext, SettingsEnums.SETTINGS_HOMEPAGE,
-                card.getMetricsConstant());
+                card.getMetricsConstant(), 0);
         initializePrimaryClick(view, card, metricsFeatureProvider);
         initializeView(view, card);
         initializeActionButton(view, card, metricsFeatureProvider);
diff --git a/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionController.java b/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionController.java
index 3557e49..bd0bd7a 100644
--- a/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionController.java
+++ b/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionController.java
@@ -116,8 +116,8 @@
     private CharSequence getSsid() {
         WifiConfiguration wifiConfig = mWifiManager.getWifiApConfiguration();
         if (wifiConfig == null) {
-            return mAppContext.getText(
-                    com.android.internal.R.string.wifi_tether_configure_ssid_default);
+            // Should never happen.
+            return "";
         } else {
             return wifiConfig.SSID;
         }
diff --git a/src/com/android/settings/homepage/contextualcards/deviceinfo/DeviceInfoSlice.java b/src/com/android/settings/homepage/contextualcards/deviceinfo/DeviceInfoSlice.java
index 48a9aa5..f3baaa1 100644
--- a/src/com/android/settings/homepage/contextualcards/deviceinfo/DeviceInfoSlice.java
+++ b/src/com/android/settings/homepage/contextualcards/deviceinfo/DeviceInfoSlice.java
@@ -23,8 +23,6 @@
 import android.net.Uri;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
-import android.text.BidiFormatter;
-import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
 
 import androidx.annotation.VisibleForTesting;
@@ -100,10 +98,10 @@
         if (subscriptionInfo == null) {
             return mContext.getString(R.string.device_info_default);
         }
-        final String phoneNumber = DeviceInfoUtils.getFormattedPhoneNumber(mContext,
+        final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext,
                 subscriptionInfo);
         return TextUtils.isEmpty(phoneNumber) ? mContext.getString(R.string.device_info_default)
-                : BidiFormatter.getInstance().unicodeWrap(phoneNumber, TextDirectionHeuristics.LTR);
+                : phoneNumber;
     }
 
     private CharSequence getDeviceModel() {
diff --git a/src/com/android/settings/media/MediaOutputIndicatorSlice.java b/src/com/android/settings/media/MediaOutputIndicatorSlice.java
index 073682c..d66ee8b 100644
--- a/src/com/android/settings/media/MediaOutputIndicatorSlice.java
+++ b/src/com/android/settings/media/MediaOutputIndicatorSlice.java
@@ -148,14 +148,14 @@
         // Return Hearing Aid device name if it is active
         BluetoothDevice activeDevice = findActiveHearingAidDevice();
         if (activeDevice != null) {
-            return activeDevice.getAliasName();
+            return activeDevice.getAlias();
         }
         // Return A2DP device name if it is active
         final A2dpProfile a2dpProfile = mProfileManager.getA2dpProfile();
         if (a2dpProfile != null) {
             activeDevice = a2dpProfile.getActiveDevice();
             if (activeDevice != null) {
-                return activeDevice.getAliasName();
+                return activeDevice.getAlias();
             }
         }
         // No active device, return default summary
diff --git a/src/com/android/settings/media/MediaOutputSlice.java b/src/com/android/settings/media/MediaOutputSlice.java
index 8086c41..2b70caf 100644
--- a/src/com/android/settings/media/MediaOutputSlice.java
+++ b/src/com/android/settings/media/MediaOutputSlice.java
@@ -164,7 +164,7 @@
         intent.putExtra(MEDIA_DEVICE_ID, id);
         intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
         return PendingIntent.getBroadcast(context, requestCode /* requestCode */, intent,
-                PendingIntent.FLAG_CANCEL_CURRENT);
+                PendingIntent.FLAG_UPDATE_CURRENT);
     }
 
     @Override
diff --git a/src/com/android/settings/network/ActiveSubsciptionsListener.java b/src/com/android/settings/network/ActiveSubsciptionsListener.java
index 1ed8078..d7a1def 100644
--- a/src/com/android/settings/network/ActiveSubsciptionsListener.java
+++ b/src/com/android/settings/network/ActiveSubsciptionsListener.java
@@ -85,6 +85,7 @@
     @VisibleForTesting
     BroadcastReceiver mSubscriptionChangeReceiver;
 
+    private Integer mMaxActiveSubscriptionInfos;
     private List<SubscriptionInfo> mCachedActiveSubscriptionInfo;
 
     /**
@@ -126,6 +127,24 @@
     }
 
     /**
+     * Get current max. number active subscription info(s) been setup within device
+     *
+     * @return max. number of active subscription info(s)
+     */
+    public int getActiveSubscriptionInfoCountMax() {
+        int count = 0;
+        if (mMaxActiveSubscriptionInfos == null) {
+            count = getSubscriptionManager().getActiveSubscriptionInfoCountMax();
+            if (mIsMonitoringDataChange) {
+                mMaxActiveSubscriptionInfos = count;
+            }
+        } else {
+            count = mMaxActiveSubscriptionInfos.intValue();
+        }
+        return count;
+    }
+
+    /**
      * Get a list of active subscription info
      *
      * @return A list of active subscription info
@@ -134,7 +153,7 @@
         if (mIsCachedDataAvailable) {
             return mCachedActiveSubscriptionInfo;
         }
-        mIsCachedDataAvailable = true;
+        mIsCachedDataAvailable = mIsMonitoringDataChange;
         mCachedActiveSubscriptionInfo = getSubscriptionManager().getActiveSubscriptionInfoList();
         return mCachedActiveSubscriptionInfo;
     }
@@ -163,6 +182,7 @@
      */
     public void clearCache() {
         mIsCachedDataAvailable = false;
+        mMaxActiveSubscriptionInfos = null;
         mCachedActiveSubscriptionInfo = null;
     }
 
diff --git a/src/com/android/settings/network/GlobalSettingsChangeListener.java b/src/com/android/settings/network/GlobalSettingsChangeListener.java
index 03103d7..89d374b 100644
--- a/src/com/android/settings/network/GlobalSettingsChangeListener.java
+++ b/src/com/android/settings/network/GlobalSettingsChangeListener.java
@@ -33,7 +33,8 @@
 /**
  * A listener for Settings.Global configuration change, with support of Lifecycle
  */
-abstract class GlobalSettingsChangeListener extends ContentObserver implements LifecycleObserver {
+public abstract class GlobalSettingsChangeListener extends ContentObserver
+        implements LifecycleObserver, AutoCloseable {
 
     /**
      * Constructor
@@ -41,7 +42,7 @@
      * @param context of this listener
      * @param field field of Global Settings
      */
-    GlobalSettingsChangeListener(Context context, String field) {
+    public GlobalSettingsChangeListener(Context context, String field) {
         super(new Handler());
         mContext = context;
         mField = field;
@@ -92,6 +93,13 @@
 
     @OnLifecycleEvent(ON_DESTROY)
     void onDestroy() {
+        close();
+    }
+
+    /**
+     * Implementation of AutoCloseable
+     */
+    public void close() {
         monitorUri(false);
         notifyChangeBasedOn(null);
     }
diff --git a/src/com/android/settings/network/MobileDataEnabledListener.java b/src/com/android/settings/network/MobileDataEnabledListener.java
index 8344f88..4c04282 100644
--- a/src/com/android/settings/network/MobileDataEnabledListener.java
+++ b/src/com/android/settings/network/MobileDataEnabledListener.java
@@ -17,53 +17,98 @@
 package com.android.settings.network;
 
 import android.content.Context;
-import android.database.ContentObserver;
-import android.net.Uri;
-import android.os.Handler;
 import android.provider.Settings;
 import android.telephony.SubscriptionManager;
 
 /** Helper class to listen for changes in the enabled state of mobile data. */
-public class MobileDataEnabledListener extends ContentObserver {
+public class MobileDataEnabledListener {
     private Context mContext;
     private Client mClient;
     private int mSubId;
+    /**
+     * There're 2 listeners both activated at the same time.
+     * For project that access MOBILE_DATA, only first listener is functional.
+     * For project that access "MOBILE_DATA + subId", first listener will be stopped when receiving
+     * any onChange from second listener.
+     */
+    private GlobalSettingsChangeListener mListener;
+    private GlobalSettingsChangeListener mListenerForSubId;
 
     public interface Client {
         void onMobileDataEnabledChange();
     }
 
+    /**
+     * Constructor
+     *
+     * @param context of this listener
+     * @param client callback when configuration changed
+     */
     public MobileDataEnabledListener(Context context, Client client) {
-        super(new Handler());
         mContext = context;
         mClient = client;
         mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
     }
 
-    /** Starts listening to changes in the enabled state for data on the given subscription id. */
+    /**
+     * Starts listening to changes in the enabled state for data on the given subscription id.
+     *
+     * @param subId subscription id for enabled state of data subscription
+     */
     public void start(int subId) {
         mSubId = subId;
-        Uri uri;
-        if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
-            uri = Settings.Global.getUriFor(Settings.Global.MOBILE_DATA);
-        }  else {
-            uri = Settings.Global.getUriFor(Settings.Global.MOBILE_DATA + mSubId);
+
+        if (mListener == null) {
+            mListener = new GlobalSettingsChangeListener(mContext,
+                    Settings.Global.MOBILE_DATA) {
+                public void onChanged(String field) {
+                    mClient.onMobileDataEnabledChange();
+                }
+            };
         }
-        mContext.getContentResolver().registerContentObserver(uri, true /*notifyForDescendants*/,
-                this);
+        stopMonitorSubIdSpecific();
+
+        if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+            return;
+        }
+
+        mListenerForSubId = new GlobalSettingsChangeListener(mContext,
+                Settings.Global.MOBILE_DATA + mSubId) {
+            public void onChanged(String field) {
+                stopMonitor();
+                mClient.onMobileDataEnabledChange();
+            }
+        };
     }
 
+    /**
+     * Get latest subscription id configured for listening
+     *
+     * @return subscription id
+     */
     public int getSubId() {
         return mSubId;
     }
 
-    public MobileDataEnabledListener stop() {
-        mContext.getContentResolver().unregisterContentObserver(this);
-        return this;
+    /**
+     * Stop listening to changes in the enabled state for data.
+     */
+    public void stop() {
+        stopMonitor();
+        stopMonitorSubIdSpecific();
     }
 
-    @Override
-    public void onChange(boolean selfChange) {
-        mClient.onMobileDataEnabledChange();
+    private void stopMonitor() {
+        if (mListener != null) {
+            mListener.close();
+            mListener = null;
+        }
+    }
+
+    private void stopMonitorSubIdSpecific() {
+        if (mListenerForSubId != null) {
+            mListenerForSubId.close();
+            mListenerForSubId = null;
+        }
     }
 }
diff --git a/src/com/android/settings/network/MobileNetworkPreferenceController.java b/src/com/android/settings/network/MobileNetworkPreferenceController.java
index 646f10c..5612d2e 100644
--- a/src/com/android/settings/network/MobileNetworkPreferenceController.java
+++ b/src/com/android/settings/network/MobileNetworkPreferenceController.java
@@ -19,7 +19,6 @@
 import static android.os.UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS;
 
 import android.content.BroadcastReceiver;
-import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
@@ -28,13 +27,11 @@
 import android.telephony.PhoneStateListener;
 import android.telephony.ServiceState;
 import android.telephony.TelephonyManager;
-import android.util.FeatureFlagUtils;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settings.network.telephony.MobileNetworkActivity;
 import com.android.settings.network.telephony.MobileNetworkUtils;
@@ -51,10 +48,6 @@
 
     @VisibleForTesting
     static final String KEY_MOBILE_NETWORK_SETTINGS = "mobile_network_settings";
-    @VisibleForTesting
-    static final String MOBILE_NETWORK_PACKAGE = "com.android.phone";
-    @VisibleForTesting
-    static final String MOBILE_NETWORK_CLASS = "com.android.phone.MobileNetworkSettings";
 
     private final boolean mIsSecondaryUser;
     private final TelephonyManager mTelephonyManager;
@@ -147,15 +140,8 @@
     @Override
     public boolean handlePreferenceTreeClick(Preference preference) {
         if (KEY_MOBILE_NETWORK_SETTINGS.equals(preference.getKey())) {
-            if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.MOBILE_NETWORK_V2)) {
-                final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
-                mContext.startActivity(intent);
-            } else {
-                final Intent intent = new Intent(Intent.ACTION_MAIN);
-                intent.setComponent(
-                        new ComponentName(MOBILE_NETWORK_PACKAGE, MOBILE_NETWORK_CLASS));
-                mContext.startActivity(intent);
-            }
+            final Intent intent = new Intent(mContext, MobileNetworkActivity.class);
+            mContext.startActivity(intent);
             return true;
         }
         return false;
diff --git a/src/com/android/settings/network/NetworkDashboardFragment.java b/src/com/android/settings/network/NetworkDashboardFragment.java
index 92c55cb..2bc97e6 100644
--- a/src/com/android/settings/network/NetworkDashboardFragment.java
+++ b/src/com/android/settings/network/NetworkDashboardFragment.java
@@ -20,16 +20,13 @@
 import android.app.Dialog;
 import android.app.settings.SettingsEnums;
 import android.content.Context;
-import android.provider.SearchIndexableResource;
 import android.util.Log;
 
 import androidx.appcompat.app.AlertDialog;
 import androidx.fragment.app.Fragment;
 
 import com.android.settings.R;
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.dashboard.DashboardFragment;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
 import com.android.settings.network.MobilePlanPreferenceController.MobilePlanPreferenceHost;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.wifi.WifiMasterSwitchPreferenceController;
@@ -39,7 +36,6 @@
 import com.android.settingslib.search.SearchIndexable;
 
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.List;
 
 @SearchIndexable
@@ -60,20 +56,14 @@
 
     @Override
     protected int getPreferenceScreenResId() {
-        if (FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2)) {
-            return R.xml.network_and_internet_v2;
-        } else {
-            return R.xml.network_and_internet;
-        }
+        return R.xml.network_and_internet;
     }
 
     @Override
     public void onAttach(Context context) {
         super.onAttach(context);
 
-        if (FeatureFlagPersistent.isEnabled(context, FeatureFlags.NETWORK_INTERNET_V2)) {
-            use(MultiNetworkHeaderController.class).init(getSettingsLifecycle());
-        }
+        use(MultiNetworkHeaderController.class).init(getSettingsLifecycle());
         use(AirplaneModePreferenceController.class).setFragment(this);
     }
 
@@ -95,10 +85,6 @@
                 new MobilePlanPreferenceController(context, mobilePlanHost);
         final WifiMasterSwitchPreferenceController wifiPreferenceController =
                 new WifiMasterSwitchPreferenceController(context, metricsFeatureProvider);
-        MobileNetworkPreferenceController mobileNetworkPreferenceController = null;
-        if (!FeatureFlagPersistent.isEnabled(context, FeatureFlags.NETWORK_INTERNET_V2)) {
-            mobileNetworkPreferenceController = new MobileNetworkPreferenceController(context);
-        }
 
         final VpnPreferenceController vpnPreferenceController =
                 new VpnPreferenceController(context);
@@ -108,21 +94,13 @@
         if (lifecycle != null) {
             lifecycle.addObserver(mobilePlanPreferenceController);
             lifecycle.addObserver(wifiPreferenceController);
-            if (mobileNetworkPreferenceController != null) {
-                lifecycle.addObserver(mobileNetworkPreferenceController);
-            }
             lifecycle.addObserver(vpnPreferenceController);
             lifecycle.addObserver(privateDnsPreferenceController);
         }
 
         final List<AbstractPreferenceController> controllers = new ArrayList<>();
 
-        if (FeatureFlagPersistent.isEnabled(context, FeatureFlags.NETWORK_INTERNET_V2)) {
-            controllers.add(new MobileNetworkSummaryController(context, lifecycle));
-        }
-        if (mobileNetworkPreferenceController != null) {
-            controllers.add(mobileNetworkPreferenceController);
-        }
+        controllers.add(new MobileNetworkSummaryController(context, lifecycle));
         controllers.add(new TetherPreferenceController(context, lifecycle));
         controllers.add(vpnPreferenceController);
         controllers.add(new ProxyPreferenceController(context));
@@ -163,19 +141,7 @@
     }
 
     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-            new BaseSearchIndexProvider() {
-                @Override
-                public List<SearchIndexableResource> getXmlResourcesToIndex(
-                        Context context, boolean enabled) {
-                    final SearchIndexableResource sir = new SearchIndexableResource(context);
-                    if (FeatureFlagPersistent.isEnabled(context,
-                            FeatureFlags.NETWORK_INTERNET_V2)) {
-                        sir.xmlResId = R.xml.network_and_internet_v2;
-                    } else {
-                        sir.xmlResId = R.xml.network_and_internet;
-                    }
-                    return Arrays.asList(sir);
-                }
+            new BaseSearchIndexProvider(R.xml.network_and_internet) {
 
                 @Override
                 public List<AbstractPreferenceController> createPreferenceControllers(Context
diff --git a/src/com/android/settings/network/ProxySubscriptionManager.java b/src/com/android/settings/network/ProxySubscriptionManager.java
index ec4fcbe..4e3e717 100644
--- a/src/com/android/settings/network/ProxySubscriptionManager.java
+++ b/src/com/android/settings/network/ProxySubscriptionManager.java
@@ -82,7 +82,6 @@
             }
         };
 
-        mKeepCacheWhenOnStart = true;
         mSubsciptionsMonitor.start();
     }
 
@@ -90,7 +89,6 @@
     private Context mContext;
     private ActiveSubsciptionsListener mSubsciptionsMonitor;
     private GlobalSettingsChangeListener mAirplaneModeMonitor;
-    private boolean mKeepCacheWhenOnStart;
 
     private List<OnActiveSubscriptionChangedListener> mActiveSubscriptionsListeners;
 
@@ -100,6 +98,12 @@
         }
     }
 
+    @Override
+    public void onSubscriptionsChanged() {
+        clearCache();
+        notifyAllListeners();
+    }
+
     /**
      * Lifecycle for data within proxy
      *
@@ -118,15 +122,11 @@
 
     @OnLifecycleEvent(ON_START)
     void onStart() {
-        if (!mKeepCacheWhenOnStart) {
-            mSubsciptionsMonitor.clearCache();
-        }
         mSubsciptionsMonitor.start();
     }
 
     @OnLifecycleEvent(ON_STOP)
     void onStop() {
-        mKeepCacheWhenOnStart = false;
         mSubsciptionsMonitor.stop();
     }
 
@@ -152,6 +152,15 @@
     }
 
     /**
+     * Get current max. number active subscription info(s) been setup within device
+     *
+     * @return max. number of active subscription info(s)
+     */
+    public int getActiveSubscriptionInfoCountMax() {
+        return mSubsciptionsMonitor.getActiveSubscriptionInfoCountMax();
+    }
+
+    /**
      * Get a list of active subscription info
      *
      * @return A list of active subscription info
@@ -183,6 +192,9 @@
      * @param listener listener to active subscriptions change
      */
     public void addActiveSubscriptionsListener(OnActiveSubscriptionChangedListener listener) {
+        if (mActiveSubscriptionsListeners.contains(listener)) {
+            return;
+        }
         mActiveSubscriptionsListeners.add(listener);
     }
 
diff --git a/src/com/android/settings/network/telephony/CellInfoUtil.java b/src/com/android/settings/network/telephony/CellInfoUtil.java
index def81a1..3129694 100644
--- a/src/com/android/settings/network/telephony/CellInfoUtil.java
+++ b/src/com/android/settings/network/telephony/CellInfoUtil.java
@@ -17,23 +17,26 @@
 package com.android.settings.network.telephony;
 
 import android.telephony.CellIdentity;
-import android.telephony.CellIdentityCdma;
 import android.telephony.CellIdentityGsm;
 import android.telephony.CellIdentityLte;
+import android.telephony.CellIdentityNr;
+import android.telephony.CellIdentityTdscdma;
 import android.telephony.CellIdentityWcdma;
 import android.telephony.CellInfo;
 import android.telephony.CellInfoCdma;
 import android.telephony.CellInfoGsm;
 import android.telephony.CellInfoLte;
+import android.telephony.CellInfoNr;
+import android.telephony.CellInfoTdscdma;
 import android.telephony.CellInfoWcdma;
 import android.text.BidiFormatter;
 import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
-import android.util.Log;
 
 import com.android.internal.telephony.OperatorInfo;
 
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -47,85 +50,55 @@
     }
 
     /**
-     * Wrap a CellIdentity into a CellInfo.
-     */
-    public static CellInfo wrapCellInfoWithCellIdentity(CellIdentity cellIdentity) {
-        if (cellIdentity instanceof CellIdentityLte) {
-            CellInfoLte cellInfo = new CellInfoLte();
-            cellInfo.setCellIdentity((CellIdentityLte) cellIdentity);
-            return cellInfo;
-        } else if (cellIdentity instanceof CellIdentityCdma) {
-            CellInfoCdma cellInfo = new CellInfoCdma();
-            cellInfo.setCellIdentity((CellIdentityCdma) cellIdentity);
-            return cellInfo;
-        }  else if (cellIdentity instanceof CellIdentityWcdma) {
-            CellInfoWcdma cellInfo = new CellInfoWcdma();
-            cellInfo.setCellIdentity((CellIdentityWcdma) cellIdentity);
-            return cellInfo;
-        } else if (cellIdentity instanceof CellIdentityGsm) {
-            CellInfoGsm cellInfo = new CellInfoGsm();
-            cellInfo.setCellIdentity((CellIdentityGsm) cellIdentity);
-            return cellInfo;
-        } else {
-            Log.e(TAG, "Invalid CellInfo type");
-            return null;
-        }
-    }
-
-    /**
      * Returns the title of the network obtained in the manual search.
      *
-     * @param cellInfo contains the information of the network.
+     * @param cellId contains the information of the network.
+     * @param networkMccMnc contains the MCCMNC string of the network
      * @return Long Name if not null/empty, otherwise Short Name if not null/empty,
      * else MCCMNC string.
      */
-    public static String getNetworkTitle(CellInfo cellInfo) {
-        OperatorInfo oi = getOperatorInfoFromCellInfo(cellInfo);
-
-        if (!TextUtils.isEmpty(oi.getOperatorAlphaLong())) {
-            return oi.getOperatorAlphaLong();
-        } else if (!TextUtils.isEmpty(oi.getOperatorAlphaShort())) {
-            return oi.getOperatorAlphaShort();
-        } else {
-            BidiFormatter bidiFormatter = BidiFormatter.getInstance();
-            return bidiFormatter.unicodeWrap(oi.getOperatorNumeric(), TextDirectionHeuristics.LTR);
+    public static String getNetworkTitle(CellIdentity cellId, String networkMccMnc) {
+        if (cellId != null) {
+            String title = Objects.toString(cellId.getOperatorAlphaLong(), "");
+            if (TextUtils.isEmpty(title)) {
+                title = Objects.toString(cellId.getOperatorAlphaShort(), "");
+            }
+            if (!TextUtils.isEmpty(title)) {
+                return title;
+            }
         }
+        if (TextUtils.isEmpty(networkMccMnc)) {
+            return "";
+        }
+        final BidiFormatter bidiFormatter = BidiFormatter.getInstance();
+        return bidiFormatter.unicodeWrap(networkMccMnc, TextDirectionHeuristics.LTR);
     }
 
     /**
-     * Wrap a cell info into an operator info.
+     * Returns the CellIdentity from CellInfo
+     *
+     * @param cellInfo contains the information of the network.
+     * @return CellIdentity within CellInfo
      */
-    public static OperatorInfo getOperatorInfoFromCellInfo(CellInfo cellInfo) {
-        OperatorInfo oi;
-        if (cellInfo instanceof CellInfoLte) {
-            CellInfoLte lte = (CellInfoLte) cellInfo;
-            oi = new OperatorInfo(
-                    (String) lte.getCellIdentity().getOperatorAlphaLong(),
-                    (String) lte.getCellIdentity().getOperatorAlphaShort(),
-                    lte.getCellIdentity().getMobileNetworkOperator());
-        } else if (cellInfo instanceof CellInfoWcdma) {
-            CellInfoWcdma wcdma = (CellInfoWcdma) cellInfo;
-            oi = new OperatorInfo(
-                    (String) wcdma.getCellIdentity().getOperatorAlphaLong(),
-                    (String) wcdma.getCellIdentity().getOperatorAlphaShort(),
-                    wcdma.getCellIdentity().getMobileNetworkOperator());
-        } else if (cellInfo instanceof CellInfoGsm) {
-            CellInfoGsm gsm = (CellInfoGsm) cellInfo;
-            oi = new OperatorInfo(
-                    (String) gsm.getCellIdentity().getOperatorAlphaLong(),
-                    (String) gsm.getCellIdentity().getOperatorAlphaShort(),
-                    gsm.getCellIdentity().getMobileNetworkOperator());
-        } else if (cellInfo instanceof CellInfoCdma) {
-            CellInfoCdma cdma = (CellInfoCdma) cellInfo;
-            oi = new OperatorInfo(
-                    (String) cdma.getCellIdentity().getOperatorAlphaLong(),
-                    (String) cdma.getCellIdentity().getOperatorAlphaShort(),
-                    "" /* operator numeric */);
-        } else {
-            Log.e(TAG, "Invalid CellInfo type");
-            oi = new OperatorInfo("", "", "");
+    public static CellIdentity getCellIdentity(CellInfo cellInfo) {
+        if (cellInfo == null) {
+            return null;
         }
-        return oi;
+        CellIdentity cellId = null;
+        if (cellInfo instanceof CellInfoGsm) {
+            cellId = ((CellInfoGsm) cellInfo).getCellIdentity();
+        } else if (cellInfo instanceof CellInfoCdma) {
+            cellId = ((CellInfoCdma) cellInfo).getCellIdentity();
+        } else if (cellInfo instanceof CellInfoWcdma) {
+            cellId = ((CellInfoWcdma) cellInfo).getCellIdentity();
+        } else if (cellInfo instanceof CellInfoTdscdma) {
+            cellId = ((CellInfoTdscdma) cellInfo).getCellIdentity();
+        } else if (cellInfo instanceof CellInfoLte) {
+            cellId = ((CellInfoLte) cellInfo).getCellIdentity();
+        } else if (cellInfo instanceof CellInfoNr) {
+            cellId = ((CellInfoNr) cellInfo).getCellIdentity();
+        }
+        return cellId;
     }
 
     /**
@@ -135,14 +108,14 @@
      * we only want to wrap the operator info and PLMN to a CellInfo object.
      */
     public static CellInfo convertOperatorInfoToCellInfo(OperatorInfo operatorInfo) {
-        String operatorNumeric = operatorInfo.getOperatorNumeric();
+        final String operatorNumeric = operatorInfo.getOperatorNumeric();
         String mcc = null;
         String mnc = null;
         if (operatorNumeric != null && operatorNumeric.matches("^[0-9]{5,6}$")) {
             mcc = operatorNumeric.substring(0, 3);
             mnc = operatorNumeric.substring(3);
         }
-        CellIdentityGsm cig = new CellIdentityGsm(
+        final CellIdentityGsm cig = new CellIdentityGsm(
                 Integer.MAX_VALUE /* lac */,
                 Integer.MAX_VALUE /* cid */,
                 Integer.MAX_VALUE /* arfcn */,
@@ -152,17 +125,11 @@
                 operatorInfo.getOperatorAlphaLong(),
                 operatorInfo.getOperatorAlphaShort());
 
-        CellInfoGsm ci = new CellInfoGsm();
+        final CellInfoGsm ci = new CellInfoGsm();
         ci.setCellIdentity(cig);
         return ci;
     }
 
-    /** Checks whether the network operator is forbidden. */
-    public static boolean isForbidden(CellInfo cellInfo, List<String> forbiddenPlmns) {
-        String plmn = CellInfoUtil.getOperatorInfoFromCellInfo(cellInfo).getOperatorNumeric();
-        return forbiddenPlmns != null && forbiddenPlmns.contains(plmn);
-    }
-
     /** Convert a list of cellInfos to readable string without sensitive info. */
     public static String cellInfoListToString(List<CellInfo> cellInfos) {
         return cellInfos.stream()
@@ -172,11 +139,31 @@
 
     /** Convert {@code cellInfo} to a readable string without sensitive info. */
     public static String cellInfoToString(CellInfo cellInfo) {
-        String cellType = cellInfo.getClass().getSimpleName();
-        CellIdentity cid = cellInfo.getCellIdentity();
+        final String cellType = cellInfo.getClass().getSimpleName();
+        final CellIdentity cid = getCellIdentity(cellInfo);
+        String mcc = null;
+        String mnc = null;
+        if (cid != null) {
+            if (cid instanceof CellIdentityGsm) {
+                mcc = ((CellIdentityGsm) cid).getMccString();
+                mnc = ((CellIdentityGsm) cid).getMncString();
+            } else if (cid instanceof CellIdentityWcdma) {
+                mcc = ((CellIdentityWcdma) cid).getMccString();
+                mnc = ((CellIdentityWcdma) cid).getMncString();
+            } else if (cid instanceof CellIdentityTdscdma) {
+                mcc = ((CellIdentityTdscdma) cid).getMccString();
+                mnc = ((CellIdentityTdscdma) cid).getMncString();
+            } else if (cid instanceof CellIdentityLte) {
+                mcc = ((CellIdentityLte) cid).getMccString();
+                mnc = ((CellIdentityLte) cid).getMncString();
+            } else if (cid instanceof CellIdentityNr) {
+                mcc = ((CellIdentityNr) cid).getMccString();
+                mnc = ((CellIdentityNr) cid).getMncString();
+            }
+        }
         return String.format(
                 "{CellType = %s, isRegistered = %b, mcc = %s, mnc = %s, alphaL = %s, alphaS = %s}",
-                cellType, cellInfo.isRegistered(), cid.getMccString(), cid.getMncString(),
+                cellType, cellInfo.isRegistered(), mcc, mnc,
                 cid.getOperatorAlphaLong(), cid.getOperatorAlphaShort());
     }
 }
diff --git a/src/com/android/settings/network/telephony/MobileNetworkActivity.java b/src/com/android/settings/network/telephony/MobileNetworkActivity.java
index b4653a7..1bcbf97 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkActivity.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkActivity.java
@@ -22,8 +22,8 @@
 import android.os.UserManager;
 import android.provider.Settings;
 import android.telephony.SubscriptionInfo;
-import android.view.Menu;
 import android.view.View;
+import android.widget.Toolbar;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.VisibleForTesting;
@@ -33,13 +33,9 @@
 
 import com.android.internal.util.CollectionUtils;
 import com.android.settings.R;
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.SettingsBaseActivity;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
 import com.android.settings.network.ProxySubscriptionManager;
 
-import com.google.android.material.bottomnavigation.BottomNavigationView;
-
 import java.util.List;
 
 /**
@@ -80,12 +76,14 @@
             return;
         }
 
-        if (FeatureFlagPersistent.isEnabled(this, FeatureFlags.NETWORK_INTERNET_V2)) {
-            setContentView(R.layout.mobile_network_settings_container_v2);
-        } else {
-            setContentView(R.layout.mobile_network_settings_container);
+        final Toolbar toolbar = findViewById(R.id.action_bar);
+        toolbar.setVisibility(View.VISIBLE);
+        setActionBar(toolbar);
+
+        final ActionBar actionBar = getActionBar();
+        if (actionBar != null) {
+            actionBar.setDisplayHomeAsUpEnabled(true);
         }
-        setActionBar(findViewById(R.id.mobile_action_bar));
 
         mProxySubscriptionMgr = ProxySubscriptionManager.getInstance(this);
         mProxySubscriptionMgr.setLifecycle(getLifecycle());
@@ -95,11 +93,6 @@
                 ? savedInstanceState.getInt(Settings.EXTRA_SUB_ID, SUB_ID_NULL)
                 : SUB_ID_NULL;
 
-        final ActionBar actionBar = getActionBar();
-        if (actionBar != null) {
-            actionBar.setDisplayHomeAsUpEnabled(true);
-        }
-
         final SubscriptionInfo subscription = getSubscription();
         updateTitleAndNavigation(subscription);
     }
@@ -141,10 +134,6 @@
         if (subscription != null) {
             setTitle(subscription.getDisplayName());
         }
-
-        if (!FeatureFlagPersistent.isEnabled(this, FeatureFlags.NETWORK_INTERNET_V2)) {
-            updateBottomNavigationView();
-        }
     }
 
     @VisibleForTesting
@@ -181,38 +170,6 @@
         return subInfos.get(0);
     }
 
-    private void updateBottomNavigationView() {
-        final BottomNavigationView navigation = findViewById(R.id.bottom_nav);
-
-        final List<SubscriptionInfo> subInfos = mProxySubscriptionMgr.getActiveSubscriptionsInfo();
-        if (CollectionUtils.size(subInfos) <= 1) {
-            navigation.setVisibility(View.GONE);
-        } else {
-            final Menu menu = navigation.getMenu();
-            menu.clear();
-            for (int i = 0, size = subInfos.size(); i < size; i++) {
-                final SubscriptionInfo subscriptionInfo = subInfos.get(i);
-                menu.add(0, subscriptionInfo.getSubscriptionId(), i,
-                        subscriptionInfo.getDisplayName())
-                        .setIcon(R.drawable.ic_settings_sim);
-            }
-            navigation.setOnNavigationItemSelectedListener(item -> {
-                final int subId = item.getItemId();
-                if (!isSubscriptionChanged(subId)) {
-                    return true;
-                }
-                final SubscriptionInfo subscriptionInfo = mProxySubscriptionMgr
-                        .getActiveSubscriptionInfo(subId);
-                if (subscriptionInfo == null) {
-                    return true;
-                }
-                updateSubscriptions(subscriptionInfo);
-                return true;
-            });
-            navigation.setVisibility(View.VISIBLE);
-        }
-    }
-
     @VisibleForTesting
     void switchFragment(SubscriptionInfo subInfo) {
         final FragmentManager fragmentManager = getSupportFragmentManager();
@@ -224,7 +181,7 @@
 
         final Fragment fragment = new MobileNetworkSettings();
         fragment.setArguments(bundle);
-        fragmentTransaction.replace(R.id.main_content, fragment, buildFragmentTag(subId));
+        fragmentTransaction.replace(R.id.content_frame, fragment, buildFragmentTag(subId));
         fragmentTransaction.commit();
     }
 
diff --git a/src/com/android/settings/network/telephony/MobileNetworkSettings.java b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
index a5bf313..a928c28 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkSettings.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkSettings.java
@@ -22,7 +22,6 @@
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.UserManager;
-import android.provider.SearchIndexableResource;
 import android.provider.Settings;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
@@ -37,11 +36,9 @@
 
 import com.android.internal.telephony.TelephonyIntents;
 import com.android.settings.R;
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.dashboard.RestrictedDashboardFragment;
 import com.android.settings.datausage.BillingCyclePreferenceController;
 import com.android.settings.datausage.DataUsageSummaryPreferenceController;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
 import com.android.settings.network.telephony.cdma.CdmaSubscriptionPreferenceController;
 import com.android.settings.network.telephony.cdma.CdmaSystemSelectPreferenceController;
 import com.android.settings.network.telephony.gsm.AutoSelectPreferenceController;
@@ -51,7 +48,6 @@
 import com.android.settingslib.core.AbstractPreferenceController;
 import com.android.settingslib.search.SearchIndexable;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
@@ -117,8 +113,7 @@
         mSubId = getArguments().getInt(Settings.EXTRA_SUB_ID,
                 MobileNetworkUtils.getSearchableSubscriptionId(context));
 
-        if (FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2) &&
-                mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+        if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
             return Arrays.asList(
                     new DataUsageSummaryPreferenceController(getActivity(), getSettingsLifecycle(),
                             this, mSubId));
@@ -130,19 +125,17 @@
     public void onAttach(Context context) {
         super.onAttach(context);
 
-        if (FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2)) {
-            use(CallsDefaultSubscriptionController.class).init(getLifecycle());
-            use(SmsDefaultSubscriptionController.class).init(getLifecycle());
-            use(MobileNetworkSwitchController.class).init(getLifecycle(), mSubId);
-            use(CarrierSettingsVersionPreferenceController.class).init(mSubId);
-            use(BillingCyclePreferenceController.class).init(mSubId);
-            use(MmsMessagePreferenceController.class).init(mSubId);
-            use(DataDuringCallsPreferenceController.class).init(getLifecycle(), mSubId);
-            use(DisabledSubscriptionController.class).init(getLifecycle(), mSubId);
-            use(DeleteSimProfilePreferenceController.class).init(mSubId, this,
-                    REQUEST_CODE_DELETE_SUBSCRIPTION);
-            use(DisableSimFooterPreferenceController.class).init(mSubId);
-        }
+        use(CallsDefaultSubscriptionController.class).init(getLifecycle());
+        use(SmsDefaultSubscriptionController.class).init(getLifecycle());
+        use(MobileNetworkSwitchController.class).init(getLifecycle(), mSubId);
+        use(CarrierSettingsVersionPreferenceController.class).init(mSubId);
+        use(BillingCyclePreferenceController.class).init(mSubId);
+        use(MmsMessagePreferenceController.class).init(mSubId);
+        use(DataDuringCallsPreferenceController.class).init(getLifecycle(), mSubId);
+        use(DisabledSubscriptionController.class).init(getLifecycle(), mSubId);
+        use(DeleteSimProfilePreferenceController.class).init(mSubId, this,
+                REQUEST_CODE_DELETE_SUBSCRIPTION);
+        use(DisableSimFooterPreferenceController.class).init(mSubId);
         use(MobileDataPreferenceController.class).init(getFragmentManager(), mSubId);
         use(RoamingPreferenceController.class).init(getFragmentManager(), mSubId);
         use(ApnPreferenceController.class).init(mSubId);
@@ -151,9 +144,7 @@
         use(PreferredNetworkModePreferenceController.class).init(mSubId);
         use(EnabledNetworkModePreferenceController.class).init(getLifecycle(), mSubId);
         use(DataServiceSetupPreferenceController.class).init(mSubId);
-        if (!FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2)) {
-            use(EuiccPreferenceController.class).init(mSubId);
-        }
+
         final WifiCallingPreferenceController wifiCallingPreferenceController =
                 use(WifiCallingPreferenceController.class).init(mSubId);
 
@@ -204,11 +195,7 @@
 
     @Override
     protected int getPreferenceScreenResId() {
-        if (FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2)) {
-            return R.xml.mobile_network_settings_v2;
-        } else {
-            return R.xml.mobile_network_settings;
-        }
+        return R.xml.mobile_network_settings;
     }
 
     @Override
@@ -250,8 +237,7 @@
 
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
-        if (FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2) &&
-                mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+        if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
             final MenuItem item = menu.add(Menu.NONE, R.id.edit_sim_name, Menu.NONE,
                     R.string.mobile_network_sim_name);
             item.setIcon(com.android.internal.R.drawable.ic_mode_edit);
@@ -262,8 +248,7 @@
 
     @Override
     public boolean onOptionsItemSelected(MenuItem menuItem) {
-        if (FeatureFlagPersistent.isEnabled(getContext(), FeatureFlags.NETWORK_INTERNET_V2) &&
-                mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+        if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
             if (menuItem.getItemId() == R.id.edit_sim_name) {
                 RenameMobileNetworkDialogFragment.newInstance(mSubId).show(
                         getFragmentManager(), RenameMobileNetworkDialogFragment.TAG);
@@ -274,20 +259,7 @@
     }
 
     public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
-            new BaseSearchIndexProvider() {
-                @Override
-                public List<SearchIndexableResource> getXmlResourcesToIndex(Context context,
-                        boolean enabled) {
-                    final ArrayList<SearchIndexableResource> result = new ArrayList<>();
-
-                    final SearchIndexableResource sir = new SearchIndexableResource(context);
-                    sir.xmlResId = FeatureFlagPersistent.isEnabled(context,
-                            FeatureFlags.NETWORK_INTERNET_V2)
-                            ? R.xml.mobile_network_settings_v2
-                            : R.xml.mobile_network_settings;
-                    result.add(sir);
-                    return result;
-                }
+            new BaseSearchIndexProvider(R.xml.mobile_network_settings) {
 
                 /** suppress full page if user is not admin */
                 @Override
diff --git a/src/com/android/settings/network/telephony/MobileNetworkSwitchController.java b/src/com/android/settings/network/telephony/MobileNetworkSwitchController.java
index 02396dd..94f86f4 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkSwitchController.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkSwitchController.java
@@ -22,24 +22,19 @@
 import android.content.Context;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
-import android.util.Log;
-
-import com.android.settings.R;
-import com.android.settings.core.BasePreferenceController;
-import com.android.settings.core.FeatureFlags;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
-import com.android.settings.network.SubscriptionUtil;
-import com.android.settings.network.SubscriptionsChangeListener;
-import com.android.settings.widget.SwitchBar;
-import com.android.settingslib.widget.LayoutPreference;
-
-import java.util.List;
 
 import androidx.lifecycle.Lifecycle;
 import androidx.lifecycle.LifecycleObserver;
 import androidx.lifecycle.OnLifecycleEvent;
 import androidx.preference.PreferenceScreen;
 
+import com.android.settings.R;
+import com.android.settings.core.BasePreferenceController;
+import com.android.settings.network.SubscriptionUtil;
+import com.android.settings.network.SubscriptionsChangeListener;
+import com.android.settings.widget.SwitchBar;
+import com.android.settingslib.widget.LayoutPreference;
+
 /** This controls a switch to allow enabling/disabling a mobile network */
 public class MobileNetworkSwitchController extends BasePreferenceController implements
         SubscriptionsChangeListener.SubscriptionsChangeListenerClient, LifecycleObserver {
@@ -118,11 +113,8 @@
 
     @Override
     public int getAvailabilityStatus() {
-        if (FeatureFlagPersistent.isEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2)) {
-            return AVAILABLE_UNSEARCHABLE;
-        } else {
-            return CONDITIONALLY_UNAVAILABLE;
-        }
+        return AVAILABLE_UNSEARCHABLE;
+
     }
 
     @Override
diff --git a/src/com/android/settings/network/telephony/NetworkOperatorPreference.java b/src/com/android/settings/network/telephony/NetworkOperatorPreference.java
index 77f40da..db7c864 100644
--- a/src/com/android/settings/network/telephony/NetworkOperatorPreference.java
+++ b/src/com/android/settings/network/telephony/NetworkOperatorPreference.java
@@ -19,16 +19,28 @@
 import static android.telephony.SignalStrength.NUM_SIGNAL_STRENGTH_BINS;
 
 import android.content.Context;
+import android.telephony.CellIdentity;
+import android.telephony.CellIdentityGsm;
+import android.telephony.CellIdentityLte;
+import android.telephony.CellIdentityNr;
+import android.telephony.CellIdentityTdscdma;
+import android.telephony.CellIdentityWcdma;
 import android.telephony.CellInfo;
+import android.telephony.CellInfoCdma;
+import android.telephony.CellInfoGsm;
+import android.telephony.CellInfoLte;
+import android.telephony.CellInfoNr;
+import android.telephony.CellInfoTdscdma;
+import android.telephony.CellInfoWcdma;
 import android.telephony.CellSignalStrength;
 import android.util.Log;
 
 import androidx.preference.Preference;
 
 import com.android.settings.R;
-import com.android.settings.Utils;
 
 import java.util.List;
+import java.util.Objects;
 
 /**
  * A Preference represents a network operator in the NetworkSelectSetting fragment.
@@ -41,38 +53,74 @@
     private static final int LEVEL_NONE = -1;
 
     private CellInfo mCellInfo;
+    private CellIdentity mCellId;
     private List<String> mForbiddenPlmns;
     private int mLevel = LEVEL_NONE;
     private boolean mShow4GForLTE;
     private boolean mUseNewApi;
 
-    public NetworkOperatorPreference(
-            CellInfo cellinfo, Context context, List<String> forbiddenPlmns, boolean show4GForLTE) {
+    public NetworkOperatorPreference(Context context, CellInfo cellinfo,
+            List<String> forbiddenPlmns, boolean show4GForLTE) {
+        this(context, forbiddenPlmns, show4GForLTE);
+        updateCell(cellinfo);
+    }
+
+    public NetworkOperatorPreference(Context context, CellIdentity connectedCellId,
+            List<String> forbiddenPlmns, boolean show4GForLTE) {
+        this(context, forbiddenPlmns, show4GForLTE);
+        mCellInfo = null;
+        mCellId = connectedCellId;
+        refresh();
+    }
+
+    private NetworkOperatorPreference(
+            Context context, List<String> forbiddenPlmns, boolean show4GForLTE) {
         super(context);
-        mCellInfo = cellinfo;
         mForbiddenPlmns = forbiddenPlmns;
         mShow4GForLTE = show4GForLTE;
         mUseNewApi = context.getResources().getBoolean(
                 com.android.internal.R.bool.config_enableNewAutoSelectNetworkUI);
+    }
+
+    /**
+     * Change cell information
+     */
+    public void updateCell(CellInfo cellinfo) {
+        mCellInfo = cellinfo;
+        mCellId = CellInfoUtil.getCellIdentity(cellinfo);
         refresh();
     }
 
-    public CellInfo getCellInfo() {
-        return mCellInfo;
+    /**
+     * Compare cell within preference
+     */
+    public boolean isSameCell(CellInfo cellinfo) {
+        if (cellinfo == null) {
+            return false;
+        }
+        return mCellId.equals(CellInfoUtil.getCellIdentity(cellinfo));
     }
 
     /**
      * Refresh the NetworkOperatorPreference by updating the title and the icon.
      */
     public void refresh() {
-        if (DBG) Log.d(TAG, "refresh the network: " + CellInfoUtil.getNetworkTitle(mCellInfo));
-        String networkTitle = CellInfoUtil.getNetworkTitle(mCellInfo);
-        if (CellInfoUtil.isForbidden(mCellInfo, mForbiddenPlmns)) {
-            networkTitle += " " + getContext().getResources().getString(R.string.forbidden_network);
-        }
-        setTitle(networkTitle);
+        String networkTitle = getOperatorName();
 
-        final CellSignalStrength signalStrength = mCellInfo.getCellSignalStrength();
+        if ((mForbiddenPlmns != null) && mForbiddenPlmns.contains(getOperatorNumeric())) {
+            if (DBG) Log.d(TAG, "refresh forbidden network: " + networkTitle);
+            networkTitle += " "
+                    + getContext().getResources().getString(R.string.forbidden_network);
+        } else {
+            if (DBG) Log.d(TAG, "refresh the network: " + networkTitle);
+        }
+        setTitle(Objects.toString(networkTitle, ""));
+
+        if (mCellInfo == null) {
+            return;
+        }
+
+        final CellSignalStrength signalStrength = getCellSignalStrength(mCellInfo);
         final int level = signalStrength != null ? signalStrength.getLevel() : LEVEL_NONE;
         if (DBG) Log.d(TAG, "refresh level: " + String.valueOf(level));
         if (mLevel != level) {
@@ -88,29 +136,87 @@
         updateIcon(level);
     }
 
-    private int getIconIdForCell(CellInfo ci) {
-        final int type = ci.getCellIdentity().getType();
-        switch (type) {
-            case CellInfo.TYPE_GSM:
-                return R.drawable.signal_strength_g;
-            case CellInfo.TYPE_WCDMA: // fall through
-            case CellInfo.TYPE_TDSCDMA:
-                return R.drawable.signal_strength_3g;
-            case CellInfo.TYPE_LTE:
-                return mShow4GForLTE
-                        ? R.drawable.ic_signal_strength_4g : R.drawable.signal_strength_lte;
-            case CellInfo.TYPE_CDMA:
-                return R.drawable.signal_strength_1x;
-            default:
-                return MobileNetworkUtils.NO_CELL_DATA_TYPE_ICON;
+    /**
+     * Operator numeric of this cell
+     */
+    public String getOperatorNumeric() {
+        final CellIdentity cellId = mCellId;
+        if (cellId == null) {
+            return null;
         }
+        if (cellId instanceof CellIdentityGsm) {
+            return ((CellIdentityGsm) cellId).getMobileNetworkOperator();
+        }
+        if (cellId instanceof CellIdentityWcdma) {
+            return ((CellIdentityWcdma) cellId).getMobileNetworkOperator();
+        }
+        if (cellId instanceof CellIdentityTdscdma) {
+            return ((CellIdentityTdscdma) cellId).getMobileNetworkOperator();
+        }
+        if (cellId instanceof CellIdentityLte) {
+            return ((CellIdentityLte) cellId).getMobileNetworkOperator();
+        }
+        if (cellId instanceof CellIdentityNr) {
+            final String mcc = ((CellIdentityNr) cellId).getMccString();
+            if (mcc == null) {
+                return null;
+            }
+            return mcc.concat(((CellIdentityNr) cellId).getMncString());
+        }
+        return null;
+    }
+
+    /**
+     * Operator name of this cell
+     */
+    public String getOperatorName() {
+        return CellInfoUtil.getNetworkTitle(mCellId, getOperatorNumeric());
+    }
+
+    private int getIconIdForCell(CellInfo ci) {
+        if (ci instanceof CellInfoGsm) {
+            return R.drawable.signal_strength_g;
+        }
+        if (ci instanceof CellInfoCdma) {
+            return R.drawable.signal_strength_1x;
+        }
+        if ((ci instanceof CellInfoWcdma) || (ci instanceof CellInfoTdscdma)) {
+            return R.drawable.signal_strength_3g;
+        }
+        if (ci instanceof CellInfoLte) {
+            return mShow4GForLTE
+                    ? R.drawable.ic_signal_strength_4g : R.drawable.signal_strength_lte;
+        }
+        return MobileNetworkUtils.NO_CELL_DATA_TYPE_ICON;
+    }
+
+    private CellSignalStrength getCellSignalStrength(CellInfo ci) {
+        if (ci instanceof CellInfoGsm) {
+            return ((CellInfoGsm) ci).getCellSignalStrength();
+        }
+        if (ci instanceof CellInfoCdma) {
+            return ((CellInfoCdma) ci).getCellSignalStrength();
+        }
+        if (ci instanceof CellInfoWcdma) {
+            return ((CellInfoWcdma) ci).getCellSignalStrength();
+        }
+        if (ci instanceof CellInfoTdscdma) {
+            return ((CellInfoTdscdma) ci).getCellSignalStrength();
+        }
+        if (ci instanceof CellInfoLte) {
+            return ((CellInfoLte) ci).getCellSignalStrength();
+        }
+        if (ci instanceof CellInfoNr) {
+            return ((CellInfoNr) ci).getCellSignalStrength();
+        }
+        return null;
     }
 
     private void updateIcon(int level) {
         if (!mUseNewApi || level < 0 || level >= NUM_SIGNAL_STRENGTH_BINS) {
             return;
         }
-        Context context = getContext();
+        final Context context = getContext();
         setIcon(MobileNetworkUtils.getSignalStrengthIcon(context, level, NUM_SIGNAL_STRENGTH_BINS,
                 getIconIdForCell(mCellInfo), false));
     }
diff --git a/src/com/android/settings/network/telephony/NetworkSelectSettings.java b/src/com/android/settings/network/telephony/NetworkSelectSettings.java
index 4c62de2..2835b6e 100644
--- a/src/com/android/settings/network/telephony/NetworkSelectSettings.java
+++ b/src/com/android/settings/network/telephony/NetworkSelectSettings.java
@@ -13,6 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package com.android.settings.network.telephony;
 
 import android.app.Activity;
@@ -39,7 +40,6 @@
 import androidx.preference.Preference;
 import androidx.preference.PreferenceCategory;
 
-import com.android.internal.telephony.OperatorInfo;
 import com.android.settings.R;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.overlay.FeatureFactory;
@@ -48,14 +48,12 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 
 /**
- * "Choose network" settings UI for the Phone app.
+ * "Choose network" settings UI for the Settings app.
  */
 public class NetworkSelectSettings extends DashboardFragment {
 
@@ -66,15 +64,11 @@
     private static final int EVENT_NETWORK_SCAN_ERROR = 3;
     private static final int EVENT_NETWORK_SCAN_COMPLETED = 4;
 
-    private static final String PREF_KEY_CONNECTED_NETWORK_OPERATOR =
-            "connected_network_operator_preference";
     private static final String PREF_KEY_NETWORK_OPERATORS = "network_operators_preference";
 
     @VisibleForTesting
     PreferenceCategory mPreferenceCategory;
     @VisibleForTesting
-    PreferenceCategory mConnectedPreferenceCategory;
-    @VisibleForTesting
     NetworkOperatorPreference mSelectedPreference;
     private View mProgressHeader;
     private Preference mStatusMessagePreference;
@@ -89,6 +83,12 @@
     private final ExecutorService mNetworkScanExecutor = Executors.newFixedThreadPool(1);
     private MetricsFeatureProvider mMetricsFeatureProvider;
     private boolean mUseNewApi;
+    private long mRequestIdManualNetworkSelect;
+    private long mRequestIdManualNetworkScan;
+    private boolean mScreenIsOn;
+    private long mWaitingForNumberOfScanResults;
+
+    private static final int MIN_NUMBER_OF_SCAN_REQUIRED = 2;
 
     @Override
     public void onCreate(Bundle icicle) {
@@ -98,12 +98,12 @@
                 com.android.internal.R.bool.config_enableNewAutoSelectNetworkUI);
         mSubId = getArguments().getInt(Settings.EXTRA_SUB_ID);
 
-        mConnectedPreferenceCategory = findPreference(PREF_KEY_CONNECTED_NETWORK_OPERATOR);
         mPreferenceCategory = findPreference(PREF_KEY_NETWORK_OPERATORS);
         mStatusMessagePreference = new Preference(getContext());
         mStatusMessagePreference.setSelectable(false);
         mSelectedPreference = null;
-        mTelephonyManager = TelephonyManager.from(getContext()).createForSubscriptionId(mSubId);
+        mTelephonyManager = getContext().getSystemService(TelephonyManager.class)
+                .createForSubscriptionId(mSubId);
         mNetworkScanHelper = new NetworkScanHelper(
                 mTelephonyManager, mCallback, mNetworkScanExecutor);
         PersistableBundle bundle = ((CarrierConfigManager) getContext().getSystemService(
@@ -138,12 +138,10 @@
         if (isProgressBarVisible()) {
             return;
         }
-        setProgressBarVisible(true);
-
-        mNetworkScanHelper.startNetworkScan(
-                mUseNewApi
-                        ? NetworkScanHelper.NETWORK_SCAN_TYPE_INCREMENTAL_RESULTS
-                        : NetworkScanHelper.NETWORK_SCAN_TYPE_WAIT_FOR_ALL_RESULTS);
+        mScreenIsOn = true;
+        if (mWaitingForNumberOfScanResults <= 0) {
+            startNetworkQuery();
+        }
     }
 
     /**
@@ -160,43 +158,42 @@
     @Override
     public void onStop() {
         super.onStop();
+        mScreenIsOn = false;
+        if (mWaitingForNumberOfScanResults <= 0) {
+            stopNetworkQuery();
+        }
     }
 
     @Override
     public boolean onPreferenceTreeClick(Preference preference) {
         if (preference != mSelectedPreference) {
             stopNetworkQuery();
+
             // Refresh the last selected item in case users reselect network.
+            clearPreferenceSummary();
             if (mSelectedPreference != null) {
-                mSelectedPreference.setSummary(null);
+                // Set summary as "Disconnected" to the previously connected network
+                mSelectedPreference.setSummary(R.string.network_disconnected);
             }
 
             mSelectedPreference = (NetworkOperatorPreference) preference;
-            CellInfo cellInfo = mSelectedPreference.getCellInfo();
             mSelectedPreference.setSummary(R.string.network_connecting);
 
             mMetricsFeatureProvider.action(getContext(),
                     SettingsEnums.ACTION_MOBILE_NETWORK_MANUAL_SELECT_NETWORK);
 
-            // Set summary as "Disconnected" to the previously connected network
-            if (mConnectedPreferenceCategory.getPreferenceCount() > 0) {
-                NetworkOperatorPreference connectedNetworkOperator = (NetworkOperatorPreference)
-                        (mConnectedPreferenceCategory.getPreference(0));
-                if (!CellInfoUtil.getNetworkTitle(cellInfo).equals(
-                        CellInfoUtil.getNetworkTitle(connectedNetworkOperator.getCellInfo()))) {
-                    connectedNetworkOperator.setSummary(R.string.network_disconnected);
-                }
-            }
-
             setProgressBarVisible(true);
             // Disable the screen until network is manually set
             getPreferenceScreen().setEnabled(false);
 
-            final OperatorInfo operatorInfo = CellInfoUtil.getOperatorInfoFromCellInfo(cellInfo);
+            mRequestIdManualNetworkSelect = getNewRequestId();
+            mWaitingForNumberOfScanResults = MIN_NUMBER_OF_SCAN_REQUIRED;
+            final String operatorNumeric = mSelectedPreference.getOperatorNumeric();
             ThreadUtils.postOnBackgroundThread(() -> {
-                Message msg = mHandler.obtainMessage(EVENT_SET_NETWORK_SELECTION_MANUALLY_DONE);
+                final Message msg = mHandler.obtainMessage(
+                        EVENT_SET_NETWORK_SELECTION_MANUALLY_DONE);
                 msg.obj = mTelephonyManager.setNetworkSelectionModeManual(
-                        operatorInfo, true /* persistSelection */);
+                        operatorNumeric, true /* persistSelection */);
                 msg.sendToTarget();
             });
         }
@@ -224,35 +221,85 @@
         public void handleMessage(Message msg) {
             switch (msg.what) {
                 case EVENT_SET_NETWORK_SELECTION_MANUALLY_DONE:
-                    setProgressBarVisible(false);
-                    getPreferenceScreen().setEnabled(true);
-
-                    boolean isSucceed = (boolean) msg.obj;
-                    mSelectedPreference.setSummary(isSucceed
-                            ? R.string.network_connected
-                            : R.string.network_could_not_connect);
+                    final boolean isSucceed = (boolean) msg.obj;
+                    if (isSucceed) {
+                        // Don't enable screen here. Wait until result of network re-scan.
+                        startNetworkQuery();
+                    } else {
+                        stopNetworkQuery();
+                        setProgressBarVisible(false);
+                        getPreferenceScreen().setEnabled(true);
+                        // For failure case, only update the summary of selected item.
+                        mSelectedPreference.setSummary(R.string.network_could_not_connect);
+                    }
                     break;
                 case EVENT_NETWORK_SCAN_RESULTS:
-                    List<CellInfo> results = aggregateCellInfoList((List<CellInfo>) msg.obj);
-                    Log.d(TAG, "CellInfoList after aggregation: "
-                            + CellInfoUtil.cellInfoListToString(results));
-                    mCellInfoList = new ArrayList<>(results);
-                    if (mCellInfoList != null && mCellInfoList.size() != 0) {
-                        updateAllPreferenceCategory();
-                    } else {
-                        addMessagePreference(R.string.empty_networks_list);
+                    final List<CellInfo> results = (List<CellInfo>) msg.obj;
+                    if (mRequestIdManualNetworkScan < mRequestIdManualNetworkSelect) {
+                        Log.d(TAG, "CellInfoList (drop): "
+                                + CellInfoUtil.cellInfoListToString(new ArrayList<>(results)));
+                        break;
+                    }
+                    mWaitingForNumberOfScanResults--;
+                    if ((!mScreenIsOn) && (mWaitingForNumberOfScanResults <= 0)) {
+                        stopNetworkQuery();
                     }
 
+                    mCellInfoList = new ArrayList<>(results);
+                    Log.d(TAG, "CellInfoList: " + CellInfoUtil.cellInfoListToString(mCellInfoList));
+                    if (mCellInfoList != null && mCellInfoList.size() != 0) {
+                        final NetworkOperatorPreference connectedPref =
+                                updateAllPreferenceCategory();
+                        if (connectedPref != null) {
+                            // update selected preference instance into connected preference
+                            if (mSelectedPreference != null) {
+                                mSelectedPreference = connectedPref;
+                            }
+                        } else if (!getPreferenceScreen().isEnabled()) {
+                            if (connectedPref == null) {
+                                mSelectedPreference.setSummary(R.string.network_connecting);
+                            }
+                        }
+                        getPreferenceScreen().setEnabled(true);
+                    } else if (getPreferenceScreen().isEnabled()) {
+                        addMessagePreference(R.string.empty_networks_list);
+                        // keep showing progress bar, it will be stopped when error or completed
+                        setProgressBarVisible(true);
+                    }
                     break;
 
                 case EVENT_NETWORK_SCAN_ERROR:
                     stopNetworkQuery();
-                    addMessagePreference(R.string.network_query_error);
+                    Log.i(TAG, "Network scan failure " + msg.arg1 + ":"
+                            + " scan request 0x" + Long.toHexString(mRequestIdManualNetworkScan)
+                            + ", waiting for scan results = " + mWaitingForNumberOfScanResults
+                            + ", select request 0x"
+                            + Long.toHexString(mRequestIdManualNetworkSelect));
+                    if (mRequestIdManualNetworkScan < mRequestIdManualNetworkSelect) {
+                        break;
+                    }
+                    if (!getPreferenceScreen().isEnabled()) {
+                        clearPreferenceSummary();
+                        getPreferenceScreen().setEnabled(true);
+                    } else {
+                        addMessagePreference(R.string.network_query_error);
+                    }
                     break;
 
                 case EVENT_NETWORK_SCAN_COMPLETED:
                     stopNetworkQuery();
-                    if (mCellInfoList == null) {
+                    Log.d(TAG, "Network scan complete:"
+                            + " scan request 0x" + Long.toHexString(mRequestIdManualNetworkScan)
+                            + ", waiting for scan results = " + mWaitingForNumberOfScanResults
+                            + ", select request 0x"
+                            + Long.toHexString(mRequestIdManualNetworkSelect));
+                    if (mRequestIdManualNetworkScan < mRequestIdManualNetworkSelect) {
+                        break;
+                    }
+                    if (!getPreferenceScreen().isEnabled()) {
+                        clearPreferenceSummary();
+                        getPreferenceScreen().setEnabled(true);
+                    } else if (mCellInfoList == null) {
                         // In case the scan timeout before getting any results
                         addMessagePreference(R.string.empty_networks_list);
                     }
@@ -265,48 +312,86 @@
     private final NetworkScanHelper.NetworkScanCallback mCallback =
             new NetworkScanHelper.NetworkScanCallback() {
                 public void onResults(List<CellInfo> results) {
-                    Message msg = mHandler.obtainMessage(EVENT_NETWORK_SCAN_RESULTS, results);
+                    final Message msg = mHandler.obtainMessage(EVENT_NETWORK_SCAN_RESULTS, results);
                     msg.sendToTarget();
                 }
 
                 public void onComplete() {
-                    Message msg = mHandler.obtainMessage(EVENT_NETWORK_SCAN_COMPLETED);
+                    final Message msg = mHandler.obtainMessage(EVENT_NETWORK_SCAN_COMPLETED);
                     msg.sendToTarget();
                 }
 
                 public void onError(int error) {
-                    Message msg = mHandler.obtainMessage(EVENT_NETWORK_SCAN_ERROR, error,
+                    final Message msg = mHandler.obtainMessage(EVENT_NETWORK_SCAN_ERROR, error,
                             0 /* arg2 */);
                     msg.sendToTarget();
                 }
             };
 
     /**
-     * Update the currently available network operators list, which only contains the unregistered
-     * network operators. So if the device has no data and the network operator in the connected
-     * network operator category shows "Disconnected", it will also exist in the available network
-     * operator category for user to select. On the other hand, if the device has data and the
-     * network operator in the connected network operator category shows "Connected", it will not
-     * exist in the available network category.
+     * Update the content of network operators list.
+     *
+     * @return preference which shows connected
      */
     @VisibleForTesting
-    void updateAllPreferenceCategory() {
-        updateConnectedPreferenceCategory();
+    NetworkOperatorPreference updateAllPreferenceCategory() {
+        int numberOfPreferences = mPreferenceCategory.getPreferenceCount();
 
-        mPreferenceCategory.removeAll();
+        // remove unused preferences
+        while (numberOfPreferences > mCellInfoList.size()) {
+            numberOfPreferences--;
+            mPreferenceCategory.removePreference(
+                    mPreferenceCategory.getPreference(numberOfPreferences));
+        }
+
+        // update selected preference instance by index
         for (int index = 0; index < mCellInfoList.size(); index++) {
-            if (!mCellInfoList.get(index).isRegistered()) {
-                NetworkOperatorPreference pref = new NetworkOperatorPreference(
-                        mCellInfoList.get(index), getPrefContext(), mForbiddenPlmns, mShow4GForLTE);
-                pref.setKey(CellInfoUtil.getNetworkTitle(mCellInfoList.get(index)));
+            final CellInfo cellInfo = mCellInfoList.get(index);
+
+            if ((mSelectedPreference != null) && mSelectedPreference.isSameCell(cellInfo)) {
+                mSelectedPreference = (NetworkOperatorPreference)
+                        (mPreferenceCategory.getPreference(index));
+            }
+        }
+
+        // update the content of preference
+        NetworkOperatorPreference connectedPref = null;
+        for (int index = 0; index < mCellInfoList.size(); index++) {
+            final CellInfo cellInfo = mCellInfoList.get(index);
+
+            NetworkOperatorPreference pref = null;
+            if (index < numberOfPreferences) {
+                final Preference rawPref = mPreferenceCategory.getPreference(index);
+                if (rawPref instanceof NetworkOperatorPreference) {
+                    // replace existing preference
+                    pref = (NetworkOperatorPreference) rawPref;
+                    pref.updateCell(cellInfo);
+                } else {
+                    mPreferenceCategory.removePreference(rawPref);
+                }
+            }
+            if (pref == null) {
+                // add new preference
+                pref = new NetworkOperatorPreference(getPrefContext(),
+                        cellInfo, mForbiddenPlmns, mShow4GForLTE);
                 pref.setOrder(index);
                 mPreferenceCategory.addPreference(pref);
             }
+            pref.setKey(pref.getOperatorName());
+
+            if (mCellInfoList.get(index).isRegistered()) {
+                pref.setSummary(R.string.network_connected);
+                connectedPref = pref;
+            } else {
+                pref.setSummary(null);
+            }
         }
+
+        return connectedPref;
     }
 
     /**
-     * Config the connected network operator preference when the page was created. When user get
+     * Config the network operator list when the page was created. When user get
      * into this page, the device might or might not have data connection.
      * - If the device has data:
      * 1. use {@code ServiceState#getNetworkRegistrationInfoList()} to get the currently
@@ -320,63 +405,45 @@
     private void forceUpdateConnectedPreferenceCategory() {
         if (mTelephonyManager.getDataState() == mTelephonyManager.DATA_CONNECTED) {
             // Try to get the network registration states
-            ServiceState ss = mTelephonyManager.getServiceState();
-            List<NetworkRegistrationInfo> networkList =
+            final ServiceState ss = mTelephonyManager.getServiceState();
+            final List<NetworkRegistrationInfo> networkList =
                     ss.getNetworkRegistrationInfoListForTransportType(
                             AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
             if (networkList == null || networkList.size() == 0) {
-                // Remove the connected network operators category
-                mConnectedPreferenceCategory.setVisible(false);
                 return;
             }
-            CellIdentity cellIdentity = networkList.get(0).getCellIdentity();
-            CellInfo cellInfo = CellInfoUtil.wrapCellInfoWithCellIdentity(cellIdentity);
-            if (cellInfo != null) {
-                NetworkOperatorPreference pref = new NetworkOperatorPreference(
-                        cellInfo, getPrefContext(), mForbiddenPlmns, mShow4GForLTE);
-                pref.setTitle(MobileNetworkUtils.getCurrentCarrierNameForDisplay(
-                        getPrefContext(), mSubId));
-                pref.setSummary(R.string.network_connected);
-                // Update the signal strength icon, since the default signalStrength value would be
-                // zero (it would be quite confusing why the connected network has no signal)
-                pref.setIcon(SignalStrength.NUM_SIGNAL_STRENGTH_BINS - 1);
-                mConnectedPreferenceCategory.addPreference(pref);
-            } else {
-                // Remove the connected network operators category
-                mConnectedPreferenceCategory.setVisible(false);
+            for (NetworkRegistrationInfo regInfo : networkList) {
+                final CellIdentity cellIdentity = regInfo.getCellIdentity();
+                if (cellIdentity != null) {
+                    final NetworkOperatorPreference pref = new NetworkOperatorPreference(
+                            getPrefContext(), cellIdentity, mForbiddenPlmns, mShow4GForLTE);
+                    pref.setSummary(R.string.network_connected);
+                    // Update the signal strength icon, since the default signalStrength value
+                    // would be zero
+                    // (it would be quite confusing why the connected network has no signal)
+                    pref.setIcon(SignalStrength.NUM_SIGNAL_STRENGTH_BINS - 1);
+                    mPreferenceCategory.addPreference(pref);
+                }
             }
-        } else {
-            // Remove the connected network operators category
-            mConnectedPreferenceCategory.setVisible(false);
         }
     }
 
     /**
-     * Configure the ConnectedNetworkOperatorsPreferenceCategory. The category only need to be
-     * configured if the category is currently empty or the operator network title of the previous
-     * connected network is different from the new one.
+     * Clear all of the preference summary
      */
-    private void updateConnectedPreferenceCategory() {
-        CellInfo connectedNetworkOperator = null;
-        for (CellInfo cellInfo : mCellInfoList) {
-            if (cellInfo.isRegistered()) {
-                connectedNetworkOperator = cellInfo;
-                break;
-            }
-        }
-
-        if (connectedNetworkOperator != null) {
-            addConnectedNetworkOperatorPreference(connectedNetworkOperator);
+    private void clearPreferenceSummary() {
+        int idxPreference = mPreferenceCategory.getPreferenceCount();
+        while (idxPreference > 0) {
+            idxPreference--;
+            final NetworkOperatorPreference networkOperator = (NetworkOperatorPreference)
+                    (mPreferenceCategory.getPreference(idxPreference));
+            networkOperator.setSummary(null);
         }
     }
 
-    private void addConnectedNetworkOperatorPreference(CellInfo cellInfo) {
-        mConnectedPreferenceCategory.removeAll();
-        final NetworkOperatorPreference pref = new NetworkOperatorPreference(
-                cellInfo, getPrefContext(), mForbiddenPlmns, mShow4GForLTE);
-        pref.setSummary(R.string.network_connected);
-        mConnectedPreferenceCategory.addPreference(pref);
-        mConnectedPreferenceCategory.setVisible(true);
+    private long getNewRequestId() {
+        return Math.max(mRequestIdManualNetworkSelect,
+                mRequestIdManualNetworkScan) + 1;
     }
 
     private boolean isProgressBarVisible() {
@@ -395,39 +462,26 @@
     private void addMessagePreference(int messageId) {
         setProgressBarVisible(false);
         mStatusMessagePreference.setTitle(messageId);
-        mConnectedPreferenceCategory.setVisible(false);
         mPreferenceCategory.removeAll();
         mPreferenceCategory.addPreference(mStatusMessagePreference);
     }
 
-    /**
-     * The Scan results may contains several cell infos with different radio technologies and signal
-     * strength for one network operator. Aggregate the CellInfoList by retaining only the cell info
-     * with the strongest signal strength.
-     */
-    private List<CellInfo> aggregateCellInfoList(List<CellInfo> cellInfoList) {
-        Map<String, CellInfo> map = new HashMap<>();
-        for (CellInfo cellInfo : cellInfoList) {
-            String plmn = CellInfoUtil.getOperatorInfoFromCellInfo(cellInfo).getOperatorNumeric();
-            if (cellInfo.isRegistered() || !map.containsKey(plmn)) {
-                map.put(plmn, cellInfo);
-            } else {
-                if (map.get(plmn).isRegistered()
-                        || map.get(plmn).getCellSignalStrength().getLevel()
-                        > cellInfo.getCellSignalStrength().getLevel()) {
-                    // Skip if the stored cellInfo is registered or has higher signal strength level
-                    continue;
-                }
-                // Otherwise replace it with the new CellInfo
-                map.put(plmn, cellInfo);
-            }
+    private void startNetworkQuery() {
+        setProgressBarVisible(true);
+        if (mNetworkScanHelper != null) {
+            mRequestIdManualNetworkScan = getNewRequestId();
+            mWaitingForNumberOfScanResults = MIN_NUMBER_OF_SCAN_REQUIRED;
+            mNetworkScanHelper.startNetworkScan(
+                    mUseNewApi
+                            ? NetworkScanHelper.NETWORK_SCAN_TYPE_INCREMENTAL_RESULTS
+                            : NetworkScanHelper.NETWORK_SCAN_TYPE_WAIT_FOR_ALL_RESULTS);
         }
-        return new ArrayList<>(map.values());
     }
 
     private void stopNetworkQuery() {
         setProgressBarVisible(false);
         if (mNetworkScanHelper != null) {
+            mWaitingForNumberOfScanResults = 0;
             mNetworkScanHelper.stopNetworkQuery();
         }
     }
diff --git a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java
index a28fc91..f572927 100644
--- a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java
+++ b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java
@@ -28,29 +28,26 @@
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
-import android.text.BidiFormatter;
-import android.text.TextDirectionHeuristics;
 import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.AdapterView;
 import android.widget.ArrayAdapter;
 import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.Spinner;
 import android.widget.TextView;
 
-import com.android.settings.R;
-import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
-import com.android.settingslib.DeviceInfoUtils;
-
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
 import androidx.appcompat.app.AlertDialog;
 
+import com.android.settings.R;
+import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settingslib.DeviceInfoUtils;
+
 /**
  * A dialog allowing the display name of a mobile network subscription to be changed
  */
@@ -159,9 +156,7 @@
         phoneTitle.setVisibility(info.isOpportunistic() ? View.GONE : View.VISIBLE);
 
         final TextView phoneNumber = view.findViewById(R.id.number_value);
-        final String formattedNumber = DeviceInfoUtils.getFormattedPhoneNumber(getContext(), info);
-        phoneNumber.setText(BidiFormatter.getInstance().unicodeWrap(formattedNumber,
-                TextDirectionHeuristics.LTR));
+        phoneNumber.setText(DeviceInfoUtils.getBidiFormattedPhoneNumber(getContext(), info));
     }
 
     @Override
diff --git a/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java b/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java
index 8f8d0d0..3348cca 100644
--- a/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java
+++ b/src/com/android/settings/network/telephony/WifiCallingPreferenceController.java
@@ -29,12 +29,12 @@
 import android.telephony.PhoneStateListener;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
+import android.telephony.ims.ImsMmTelManager;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
-import com.android.ims.ImsConfig;
 import com.android.ims.ImsManager;
 import com.android.settings.R;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -54,6 +54,7 @@
     CarrierConfigManager mCarrierConfigManager;
     @VisibleForTesting
     ImsManager mImsManager;
+    private ImsMmTelManager mImsMmTelManager;
     @VisibleForTesting
     PhoneAccountHandle mSimCallManager;
     private PhoneCallStateListener mPhoneStateListener;
@@ -88,7 +89,7 @@
     public void displayPreference(PreferenceScreen screen) {
         super.displayPreference(screen);
         mPreference = screen.findPreference(getPreferenceKey());
-        Intent intent = mPreference.getIntent();
+        final Intent intent = mPreference.getIntent();
         if (intent != null) {
             intent.putExtra(Settings.EXTRA_SUB_ID, mSubId);
         }
@@ -98,14 +99,14 @@
     public void updateState(Preference preference) {
         super.updateState(preference);
         if (mSimCallManager != null) {
-            Intent intent = MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext,
+            final Intent intent = MobileNetworkUtils.buildPhoneAccountConfigureIntent(mContext,
                     mSimCallManager);
             if (intent == null) {
                 // Do nothing in this case since preference is invisible
                 return;
             }
             final PackageManager pm = mContext.getPackageManager();
-            List<ResolveInfo> resolutions = pm.queryIntentActivities(intent, 0);
+            final List<ResolveInfo> resolutions = pm.queryIntentActivities(intent, 0);
             preference.setTitle(resolutions.get(0).loadLabel(pm));
             preference.setSummary(null);
             preference.setIntent(intent);
@@ -126,16 +127,18 @@
                     }
                 }
                 final boolean isRoaming = mTelephonyManager.isNetworkRoaming();
-                int wfcMode = mImsManager.getWfcMode(isRoaming && !useWfcHomeModeForRoaming);
+                final int wfcMode = (isRoaming && !useWfcHomeModeForRoaming)
+                        ? mImsMmTelManager.getVoWiFiRoamingModeSetting() :
+                        mImsMmTelManager.getVoWiFiModeSetting();
                 switch (wfcMode) {
-                    case ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY:
+                    case ImsMmTelManager.WIFI_MODE_WIFI_ONLY:
                         resId = com.android.internal.R.string.wfc_mode_wifi_only_summary;
                         break;
-                    case ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED:
+                    case ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED:
                         resId = com.android.internal.R.string
                                 .wfc_mode_cellular_preferred_summary;
                         break;
-                    case ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED:
+                    case ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED:
                         resId = com.android.internal.R.string.wfc_mode_wifi_preferred_summary;
                         break;
                     default:
@@ -150,14 +153,20 @@
 
     public WifiCallingPreferenceController init(int subId) {
         mSubId = subId;
-        mTelephonyManager = TelephonyManager.from(mContext).createForSubscriptionId(mSubId);
+        mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
+                .createForSubscriptionId(mSubId);
         mImsManager = ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(mSubId));
+        mImsMmTelManager = getImsMmTelManager(mSubId);
         mSimCallManager = mContext.getSystemService(TelecomManager.class)
                 .getSimCallManagerForSubscription(mSubId);
 
         return this;
     }
 
+    protected ImsMmTelManager getImsMmTelManager(int subId) {
+        return ImsMmTelManager.createForSubscriptionId(subId);
+    }
+
     private class PhoneCallStateListener extends PhoneStateListener {
 
         public PhoneCallStateListener(Looper looper) {
diff --git a/src/com/android/settings/notification/BlockPreferenceController.java b/src/com/android/settings/notification/BlockPreferenceController.java
index 27144b8..0dfd38b 100644
--- a/src/com/android/settings/notification/BlockPreferenceController.java
+++ b/src/com/android/settings/notification/BlockPreferenceController.java
@@ -62,8 +62,8 @@
         pref.setSelectable(false);
         SwitchBar bar = pref.findViewById(R.id.switch_bar);
         if (bar != null) {
-            bar.setSwitchBarText(R.string.notification_switch_label,
-                    R.string.notification_switch_label);
+            String switchBarText = getSwitchBarText();
+            bar.setSwitchBarText(switchBarText, switchBarText);
             bar.show();
             try {
                 bar.addOnSwitchChangeListener(this);
@@ -125,4 +125,18 @@
         }
         mImportanceListener.onImportanceChanged();
     }
+
+    String getSwitchBarText() {
+        if (mChannel != null) {
+            return mContext.getString(R.string.notification_content_block_title);
+        } else  {
+            CharSequence fieldContextName;
+            if (mChannelGroup != null) {
+                fieldContextName = mChannelGroup.getName();
+            } else {
+                fieldContextName = mAppRow.label;
+            }
+            return mContext.getString(R.string.notification_switch_label, fieldContextName);
+        }
+    }
 }
diff --git a/src/com/android/settings/notification/ChannelListPreferenceController.java b/src/com/android/settings/notification/ChannelListPreferenceController.java
index 7ff407c..7ea3339 100644
--- a/src/com/android/settings/notification/ChannelListPreferenceController.java
+++ b/src/com/android/settings/notification/ChannelListPreferenceController.java
@@ -156,7 +156,8 @@
             NotificationChannelGroup group) {
         RestrictedSwitchPreference preference =
                 new RestrictedSwitchPreference(mContext);
-        preference.setTitle(R.string.notification_switch_label);
+        preference.setTitle(mContext.getString(
+                R.string.notification_switch_label, group.getName()));
         preference.setEnabled(mAdmin == null
                 && isChannelGroupBlockable(group));
         preference.setChecked(!group.isBlocked());
diff --git a/src/com/android/settings/notification/RecentNotifyingAppsPreferenceController.java b/src/com/android/settings/notification/RecentNotifyingAppsPreferenceController.java
index 9b20e7a..9efe34e 100644
--- a/src/com/android/settings/notification/RecentNotifyingAppsPreferenceController.java
+++ b/src/com/android/settings/notification/RecentNotifyingAppsPreferenceController.java
@@ -97,7 +97,7 @@
                 app == null ? null : ApplicationsState.getInstance(app), host);
     }
 
-    @VisibleForTesting(otherwise = VisibleForTesting.NONE)
+    @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
     RecentNotifyingAppsPreferenceController(Context context, NotificationBackend backend,
             IUsageStatsManager usageStatsManager, UserManager userManager,
             ApplicationsState appState, Fragment host) {
@@ -118,7 +118,7 @@
 
     @Override
     public boolean isAvailable() {
-        return true;
+        return mApplicationsState != null;
     }
 
     @Override
@@ -307,9 +307,6 @@
             if (appEntry == null) {
                 continue;
             }
-            if (!shouldIncludePkgInRecents(app.getPackage(), app.getUserId())) {
-                continue;
-            }
             displayableApps.add(app);
             count++;
             if (count >= SHOW_RECENT_APP_COUNT) {
@@ -318,24 +315,4 @@
         }
         return displayableApps;
     }
-
-
-    /**
-     * Whether or not the app should be included in recent list.
-     */
-    private boolean shouldIncludePkgInRecents(String pkgName, int userId) {
-        final Intent launchIntent = new Intent().addCategory(Intent.CATEGORY_LAUNCHER)
-                .setPackage(pkgName);
-
-        if (mPm.resolveActivity(launchIntent, 0) == null) {
-            // Not visible on launcher -> likely not a user visible app, skip if non-instant.
-            final ApplicationsState.AppEntry appEntry =
-                    mApplicationsState.getEntry(pkgName, userId);
-            if (appEntry == null || appEntry.info == null || !AppUtils.isInstant(appEntry.info)) {
-                Log.d(TAG, "Not a user visible or instant app, skipping " + pkgName);
-                return false;
-            }
-        }
-        return true;
-    }
 }
diff --git a/src/com/android/settings/notification/ZenAccessSettings.java b/src/com/android/settings/notification/ZenAccessSettings.java
index 34b5354..d9c57c7 100644
--- a/src/com/android/settings/notification/ZenAccessSettings.java
+++ b/src/com/android/settings/notification/ZenAccessSettings.java
@@ -114,7 +114,6 @@
         }
         ArraySet<String> autoApproved = new ArraySet<>();
         autoApproved.addAll(mNoMan.getEnabledNotificationListenerPackages());
-        requesting.addAll(autoApproved);
         Collections.sort(apps, new PackageItemInfo.DisplayNameComparator(mPkgMan));
         for (ApplicationInfo app : apps) {
             final String pkg = app.packageName;
diff --git a/src/com/android/settings/search/SettingsSearchIndexablesProvider.java b/src/com/android/settings/search/SettingsSearchIndexablesProvider.java
index f0ae804..e681a22 100644
--- a/src/com/android/settings/search/SettingsSearchIndexablesProvider.java
+++ b/src/com/android/settings/search/SettingsSearchIndexablesProvider.java
@@ -68,6 +68,7 @@
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.Tile;
 import com.android.settingslib.search.Indexable;
+import com.android.settingslib.search.SearchIndexableData;
 import com.android.settingslib.search.SearchIndexableRaw;
 
 import java.util.ArrayList;
@@ -106,7 +107,7 @@
         final List<SearchIndexableResource> resources =
                 getSearchIndexableResourcesFromProvider(getContext());
         for (SearchIndexableResource val : resources) {
-            Object[] ref = new Object[INDEXABLES_XML_RES_COLUMNS.length];
+            final Object[] ref = new Object[INDEXABLES_XML_RES_COLUMNS.length];
             ref[COLUMN_INDEX_XML_RES_RANK] = val.rank;
             ref[COLUMN_INDEX_XML_RES_RESID] = val.xmlResId;
             ref[COLUMN_INDEX_XML_RES_CLASS_NAME] = val.className;
@@ -128,21 +129,7 @@
         final MatrixCursor cursor = new MatrixCursor(INDEXABLES_RAW_COLUMNS);
         final List<SearchIndexableRaw> raws = getSearchIndexableRawFromProvider(getContext());
         for (SearchIndexableRaw val : raws) {
-            Object[] ref = new Object[INDEXABLES_RAW_COLUMNS.length];
-            ref[COLUMN_INDEX_RAW_TITLE] = val.title;
-            ref[COLUMN_INDEX_RAW_SUMMARY_ON] = val.summaryOn;
-            ref[COLUMN_INDEX_RAW_SUMMARY_OFF] = val.summaryOff;
-            ref[COLUMN_INDEX_RAW_ENTRIES] = val.entries;
-            ref[COLUMN_INDEX_RAW_KEYWORDS] = val.keywords;
-            ref[COLUMN_INDEX_RAW_SCREEN_TITLE] = val.screenTitle;
-            ref[COLUMN_INDEX_RAW_CLASS_NAME] = val.className;
-            ref[COLUMN_INDEX_RAW_ICON_RESID] = val.iconResId;
-            ref[COLUMN_INDEX_RAW_INTENT_ACTION] = val.intentAction;
-            ref[COLUMN_INDEX_RAW_INTENT_TARGET_PACKAGE] = val.intentTargetPackage;
-            ref[COLUMN_INDEX_RAW_INTENT_TARGET_CLASS] = val.intentTargetClass;
-            ref[COLUMN_INDEX_RAW_KEY] = val.key;
-            ref[COLUMN_INDEX_RAW_USER_ID] = val.userId;
-            cursor.addRow(ref);
+            cursor.addRow(createIndexableRawColumnObjects(val));
         }
 
         return cursor;
@@ -180,21 +167,7 @@
 
         final MatrixCursor cursor = new MatrixCursor(INDEXABLES_RAW_COLUMNS);
         for (SearchIndexableRaw raw : rawList) {
-            Object[] ref = new Object[INDEXABLES_RAW_COLUMNS.length];
-            ref[COLUMN_INDEX_RAW_TITLE] = raw.title;
-            ref[COLUMN_INDEX_RAW_SUMMARY_ON] = raw.summaryOn;
-            ref[COLUMN_INDEX_RAW_SUMMARY_OFF] = raw.summaryOff;
-            ref[COLUMN_INDEX_RAW_ENTRIES] = raw.entries;
-            ref[COLUMN_INDEX_RAW_KEYWORDS] = raw.keywords;
-            ref[COLUMN_INDEX_RAW_SCREEN_TITLE] = raw.screenTitle;
-            ref[COLUMN_INDEX_RAW_CLASS_NAME] = raw.className;
-            ref[COLUMN_INDEX_RAW_ICON_RESID] = raw.iconResId;
-            ref[COLUMN_INDEX_RAW_INTENT_ACTION] = raw.intentAction;
-            ref[COLUMN_INDEX_RAW_INTENT_TARGET_PACKAGE] = raw.intentTargetPackage;
-            ref[COLUMN_INDEX_RAW_INTENT_TARGET_CLASS] = raw.intentTargetClass;
-            ref[COLUMN_INDEX_RAW_KEY] = raw.key;
-            ref[COLUMN_INDEX_RAW_USER_ID] = raw.userId;
-            cursor.addRow(ref);
+            cursor.addRow(createIndexableRawColumnObjects(raw));
         }
 
         return cursor;
@@ -260,14 +233,14 @@
     }
 
     private List<String> getNonIndexableKeysFromProvider(Context context) {
-        final Collection<Class> values = getIndexableProviderValues(context);
+        final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(context)
+                .getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
+
         final List<String> nonIndexableKeys = new ArrayList<>();
 
-        for (Class<?> clazz : values) {
+        for (SearchIndexableData bundle : bundles) {
             final long startTime = System.currentTimeMillis();
-            final Indexable.SearchIndexProvider provider =
-                    DatabaseIndexingUtils.getSearchIndexProvider(clazz);
-
+            Indexable.SearchIndexProvider provider = bundle.getSearchIndexProvider();
             List<String> providerNonIndexableKeys;
             try {
                 providerNonIndexableKeys = provider.getNonIndexableKeys(context);
@@ -281,7 +254,8 @@
                 if (System.getProperty(SYSPROP_CRASH_ON_ERROR) != null) {
                     throw new RuntimeException(e);
                 }
-                Log.e(TAG, "Error trying to get non-indexable keys from: " + clazz.getName(), e);
+                Log.e(TAG, "Error trying to get non-indexable keys from: "
+                        + bundle.getTargetClass().getName(), e);
                 continue;
             }
 
@@ -310,12 +284,12 @@
     }
 
     private List<SearchIndexableResource> getSearchIndexableResourcesFromProvider(Context context) {
-        final Collection<Class> values = getIndexableProviderValues(context);
-        final List<SearchIndexableResource> resourceList = new ArrayList<>();
+        final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(context)
+                .getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
+        List<SearchIndexableResource> resourceList = new ArrayList<>();
 
-        for (Class<?> clazz : values) {
-            final Indexable.SearchIndexProvider provider =
-                    DatabaseIndexingUtils.getSearchIndexProvider(clazz);
+        for (SearchIndexableData bundle : bundles) {
+            Indexable.SearchIndexProvider provider = bundle.getSearchIndexProvider();
             final List<SearchIndexableResource> resList =
                     provider.getXmlResourcesToIndex(context, true);
 
@@ -325,7 +299,7 @@
 
             for (SearchIndexableResource item : resList) {
                 item.className = TextUtils.isEmpty(item.className)
-                        ? clazz.getName()
+                        ? bundle.getTargetClass().getName()
                         : item.className;
             }
 
@@ -336,14 +310,14 @@
     }
 
     private List<SearchIndexableRaw> getSearchIndexableRawFromProvider(Context context) {
-        final Collection<Class> values = getIndexableProviderValues(context);
+        final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(context)
+                .getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
         final List<SearchIndexableRaw> rawList = new ArrayList<>();
 
-        for (Class<?> clazz : values) {
-            final Indexable.SearchIndexProvider provider =
-                    DatabaseIndexingUtils.getSearchIndexProvider(clazz);
-            final List<SearchIndexableRaw> providerRaws =
-                    provider.getRawDataToIndex(context, true /* enabled */);
+        for (SearchIndexableData bundle : bundles) {
+            Indexable.SearchIndexProvider provider = bundle.getSearchIndexProvider();
+            final List<SearchIndexableRaw> providerRaws = provider.getRawDataToIndex(context,
+                    true /* enabled */);
 
             if (providerRaws == null) {
                 continue;
@@ -352,7 +326,7 @@
             for (SearchIndexableRaw raw : providerRaws) {
                 // The classname and intent information comes from the PreIndexData
                 // This will be more clear when provider conversion is done at PreIndex time.
-                raw.className = clazz.getName();
+                raw.className = bundle.getTargetClass().getName();
 
             }
             rawList.addAll(providerRaws);
@@ -362,12 +336,12 @@
     }
 
     private List<SearchIndexableRaw> getDynamicSearchIndexableRawFromProvider(Context context) {
-        final Collection<Class> values = getIndexableProviderValues(context);
+        final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(context)
+                .getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
         final List<SearchIndexableRaw> rawList = new ArrayList<>();
 
-        for (Class<?> clazz : values) {
-            final Indexable.SearchIndexProvider provider =
-                    DatabaseIndexingUtils.getSearchIndexProvider(clazz);
+        for (SearchIndexableData bundle : bundles) {
+            final Indexable.SearchIndexProvider provider = bundle.getSearchIndexProvider();
             final List<SearchIndexableRaw> providerRaws =
                     provider.getDynamicRawDataToIndex(context, true /* enabled */);
 
@@ -378,7 +352,7 @@
             for (SearchIndexableRaw raw : providerRaws) {
                 // The classname and intent information comes from the PreIndexData
                 // This will be more clear when provider conversion is done at PreIndex time.
-                raw.className = clazz.getName();
+                raw.className = bundle.getTargetClass().getName();
 
             }
             rawList.addAll(providerRaws);
@@ -392,27 +366,40 @@
                 FeatureFactory.getFactory(context).getDashboardFeatureProvider(context);
 
         final List<SearchIndexableRaw> rawList = new ArrayList<>();
+        final String currentPackageName = context.getPackageName();
         for (DashboardCategory category : dashboardFeatureProvider.getAllCategories()) {
             for (Tile tile : category.getTiles()) {
-                final String packageName = tile.getPackageName();
-                if (context.getPackageName().equals(packageName)) {
+                if (currentPackageName.equals(tile.getPackageName())) {
                     continue;
                 }
                 final SearchIndexableRaw raw = new SearchIndexableRaw(context);
+                raw.key = dashboardFeatureProvider.getDashboardKeyForTile(tile);
                 raw.title = tile.getTitle(context).toString();
-                raw.summaryOn = tile.getSummary(context).toString();
-                raw.summaryOff = tile.getSummary(context).toString();
-                raw.keywords = dashboardFeatureProvider.getDashboardKeyForTile(tile);
+                CharSequence summary = tile.getSummary(context);
+                raw.summaryOn = TextUtils.isEmpty(summary) ? null : summary.toString();
+                raw.summaryOff = raw.summaryOn;
                 raw.className = CATEGORY_KEY_TO_PARENT_MAP.get(tile.getCategory());
                 rawList.add(raw);
             }
         }
 
-        return rawList;
-    }
+        return rawList;    }
 
-    private Collection<Class> getIndexableProviderValues(Context context) {
-        return FeatureFactory.getFactory(context)
-                .getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
+    private static Object[] createIndexableRawColumnObjects(SearchIndexableRaw raw) {
+        final Object[] ref = new Object[INDEXABLES_RAW_COLUMNS.length];
+        ref[COLUMN_INDEX_RAW_TITLE] = raw.title;
+        ref[COLUMN_INDEX_RAW_SUMMARY_ON] = raw.summaryOn;
+        ref[COLUMN_INDEX_RAW_SUMMARY_OFF] = raw.summaryOff;
+        ref[COLUMN_INDEX_RAW_ENTRIES] = raw.entries;
+        ref[COLUMN_INDEX_RAW_KEYWORDS] = raw.keywords;
+        ref[COLUMN_INDEX_RAW_SCREEN_TITLE] = raw.screenTitle;
+        ref[COLUMN_INDEX_RAW_CLASS_NAME] = raw.className;
+        ref[COLUMN_INDEX_RAW_ICON_RESID] = raw.iconResId;
+        ref[COLUMN_INDEX_RAW_INTENT_ACTION] = raw.intentAction;
+        ref[COLUMN_INDEX_RAW_INTENT_TARGET_PACKAGE] = raw.intentTargetPackage;
+        ref[COLUMN_INDEX_RAW_INTENT_TARGET_CLASS] = raw.intentTargetClass;
+        ref[COLUMN_INDEX_RAW_KEY] = raw.key;
+        ref[COLUMN_INDEX_RAW_USER_ID] = raw.userId;
+        return ref;
     }
 }
diff --git a/src/com/android/settings/security/ScreenPinningSettings.java b/src/com/android/settings/security/ScreenPinningSettings.java
index 849db40..aa3e862 100644
--- a/src/com/android/settings/security/ScreenPinningSettings.java
+++ b/src/com/android/settings/security/ScreenPinningSettings.java
@@ -23,9 +23,6 @@
 import android.os.UserHandle;
 import android.provider.SearchIndexableResource;
 import android.provider.Settings;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
 import android.widget.Switch;
 
 import androidx.preference.Preference;
@@ -41,6 +38,7 @@
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.widget.SwitchBar;
 import com.android.settingslib.search.SearchIndexable;
+import com.android.settingslib.widget.FooterPreference;
 
 import java.util.Arrays;
 import java.util.List;
@@ -52,11 +50,13 @@
 public class ScreenPinningSettings extends SettingsPreferenceFragment
         implements SwitchBar.OnSwitchChangeListener {
 
-    private static final CharSequence KEY_USE_SCREEN_LOCK = "use_screen_lock";
+    private static final String KEY_USE_SCREEN_LOCK = "use_screen_lock";
+    private static final String KEY_FOOTER = "screen_pinning_settings_screen_footer";
     private static final int CHANGE_LOCK_METHOD_REQUEST = 43;
 
     private SwitchBar mSwitchBar;
     private SwitchPreference mUseScreenLock;
+    private FooterPreference mFooterPreference;
     private LockPatternUtils mLockPatternUtils;
 
     @Override
@@ -77,6 +77,13 @@
         mSwitchBar.addOnSwitchChangeListener(this);
         mSwitchBar.show();
         mSwitchBar.setChecked(isLockToAppEnabled(getActivity()));
+
+        addPreferencesFromResource(R.xml.screen_pinning_settings);
+
+        final PreferenceScreen root = getPreferenceScreen();
+        mUseScreenLock = root.findPreference(KEY_USE_SCREEN_LOCK);
+        mFooterPreference = root.findPreference(KEY_FOOTER);
+        updateDisplay();
     }
 
     @Override
@@ -85,16 +92,6 @@
     }
 
     @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-        ViewGroup parent = (ViewGroup) view.findViewById(android.R.id.list_container);
-        View emptyView = LayoutInflater.from(getContext())
-                .inflate(R.layout.screen_pinning_instructions, parent, false);
-        parent.addView(emptyView);
-        setEmptyView(emptyView);
-    }
-
-    @Override
     public void onDestroyView() {
         super.onDestroyView();
 
@@ -192,16 +189,10 @@
         updateDisplay();
     }
 
-    public void updateDisplay() {
-        PreferenceScreen root = getPreferenceScreen();
-        if (root != null) {
-            root.removeAll();
-        }
+    private void updateDisplay() {
         if (isLockToAppEnabled(getActivity())) {
-            addPreferencesFromResource(R.xml.screen_pinning_settings);
-            root = getPreferenceScreen();
-
-            mUseScreenLock = (SwitchPreference) root.findPreference(KEY_USE_SCREEN_LOCK);
+            mFooterPreference.setVisible(false);
+            mUseScreenLock.setVisible(true);
             mUseScreenLock.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
                 @Override
                 public boolean onPreferenceChange(Preference preference, Object newValue) {
@@ -210,6 +201,9 @@
             });
             mUseScreenLock.setChecked(isScreenLockUsed());
             mUseScreenLock.setTitle(getCurrentSecurityTitle());
+        } else {
+            mFooterPreference.setVisible(true);
+            mUseScreenLock.setVisible(false);
         }
     }
 
diff --git a/src/com/android/settings/slices/SliceDataConverter.java b/src/com/android/settings/slices/SliceDataConverter.java
index 06b5d78..551a186 100644
--- a/src/com/android/settings/slices/SliceDataConverter.java
+++ b/src/com/android/settings/slices/SliceDataConverter.java
@@ -53,9 +53,9 @@
 import com.android.settings.core.PreferenceXmlParserUtils.MetadataFlag;
 import com.android.settings.dashboard.DashboardFragment;
 import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.search.DatabaseIndexingUtils;
-import com.android.settingslib.search.Indexable.SearchIndexProvider;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
+import com.android.settingslib.search.Indexable.SearchIndexProvider;
+import com.android.settingslib.search.SearchIndexableData;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
@@ -101,14 +101,13 @@
     public List<SliceData> getSliceData() {
         List<SliceData> sliceData = new ArrayList<>();
 
-        final Collection<Class> indexableClasses = FeatureFactory.getFactory(mContext)
+        final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(mContext)
                 .getSearchFeatureProvider().getSearchIndexableResources().getProviderValues();
 
-        for (Class clazz : indexableClasses) {
-            final String fragmentName = clazz.getName();
+        for (SearchIndexableData bundle : bundles) {
+            final String fragmentName = bundle.getTargetClass().getName();
 
-            final SearchIndexProvider provider = DatabaseIndexingUtils.getSearchIndexProvider(
-                    clazz);
+            final SearchIndexProvider provider = bundle.getSearchIndexProvider();
 
             // CodeInspection test guards against the null check. Keep check in case of bad actors.
             if (provider == null) {
diff --git a/src/com/android/settings/sound/HandsFreeProfileOutputPreferenceController.java b/src/com/android/settings/sound/HandsFreeProfileOutputPreferenceController.java
index 9157477..d72f503 100644
--- a/src/com/android/settings/sound/HandsFreeProfileOutputPreferenceController.java
+++ b/src/com/android/settings/sound/HandsFreeProfileOutputPreferenceController.java
@@ -66,7 +66,7 @@
             final BluetoothDevice btDevice = mConnectedDevices.get(connectedDeviceIndex);
             mSelectedIndex = connectedDeviceIndex;
             setActiveBluetoothDevice(btDevice);
-            listPreference.setSummary(btDevice.getAliasName());
+            listPreference.setSummary(btDevice.getAlias());
         }
         return true;
     }
@@ -143,7 +143,7 @@
         mediaValues[mSelectedIndex] = defaultSummary;
         for (int i = 0, size = mConnectedDevices.size(); i < size; i++) {
             final BluetoothDevice btDevice = mConnectedDevices.get(i);
-            mediaOutputs[i] = btDevice.getAliasName();
+            mediaOutputs[i] = btDevice.getAlias();
             mediaValues[i] = btDevice.getAddress();
             if (btDevice.equals(activeDevice)) {
                 // select the active connected device.
diff --git a/src/com/android/settings/sound/MediaOutputPreferenceController.java b/src/com/android/settings/sound/MediaOutputPreferenceController.java
index 1831ad6..b133713 100644
--- a/src/com/android/settings/sound/MediaOutputPreferenceController.java
+++ b/src/com/android/settings/sound/MediaOutputPreferenceController.java
@@ -76,7 +76,7 @@
         mPreference.setVisible(deviceConnected);
         mPreference.setSummary((activeDevice == null) ?
                 mContext.getText(R.string.media_output_default_summary) :
-                activeDevice.getAliasName());
+                activeDevice.getAlias());
     }
 
     @Override
diff --git a/src/com/android/settings/widget/MediaAnimationController.java b/src/com/android/settings/widget/MediaAnimationController.java
index eb7b3e0..87a5365 100644
--- a/src/com/android/settings/widget/MediaAnimationController.java
+++ b/src/com/android/settings/widget/MediaAnimationController.java
@@ -33,6 +33,7 @@
 class MediaAnimationController implements VideoPreference.AnimationController {
     private MediaPlayer mMediaPlayer;
     private boolean mVideoReady;
+    private Surface mSurface;
 
     MediaAnimationController(Context context, int videoId) {
         final Uri videoPath = new Uri.Builder().scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
@@ -86,10 +87,7 @@
             @Override
             public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int width,
                     int height) {
-                if (mMediaPlayer != null) {
-                    final Surface surface = new Surface(surfaceTexture);
-                    mMediaPlayer.setSurface(surface);
-                }
+                setSurface(surfaceTexture);
             }
 
             @Override
@@ -105,6 +103,7 @@
 
             @Override
             public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) {
+                setSurface(surfaceTexture);
                 if (mVideoReady) {
                     if (preview.getVisibility() == View.VISIBLE) {
                         preview.setVisibility(View.GONE);
@@ -146,4 +145,11 @@
             mMediaPlayer.start();
         }
     }
+
+    private void setSurface(SurfaceTexture surfaceTexture) {
+        if (mMediaPlayer != null && mSurface == null) {
+            mSurface = new Surface(surfaceTexture);
+            mMediaPlayer.setSurface(mSurface);
+        }
+    }
 }
diff --git a/src/com/android/settings/widget/VideoPreference.java b/src/com/android/settings/widget/VideoPreference.java
index d23bea9..949ba9b 100644
--- a/src/com/android/settings/widget/VideoPreference.java
+++ b/src/com/android/settings/widget/VideoPreference.java
@@ -50,6 +50,9 @@
     private int mAnimationId;
     private int mVectorAnimationId;
     private int mHeight = LinearLayout.LayoutParams.MATCH_PARENT - 1; // video height in pixels
+    private TextureView mVideo;
+    private ImageView mPreviewImage;
+    private ImageView mPlayButton;
 
     public VideoPreference(Context context) {
         super(context);
@@ -108,19 +111,21 @@
             return;
         }
 
-        final TextureView video = (TextureView) holder.findViewById(R.id.video_texture_view);
-        final ImageView previewImage = (ImageView) holder.findViewById(R.id.video_preview_image);
-        final ImageView playButton = (ImageView) holder.findViewById(R.id.video_play_button);
+        mVideo = (TextureView) holder.findViewById(R.id.video_texture_view);
+        mPreviewImage = (ImageView) holder.findViewById(R.id.video_preview_image);
+        mPlayButton = (ImageView) holder.findViewById(R.id.video_play_button);
         final AspectRatioFrameLayout layout = (AspectRatioFrameLayout) holder.findViewById(
                 R.id.video_container);
 
-        previewImage.setImageResource(mPreviewId);
+        mPreviewImage.setImageResource(mPreviewId);
         layout.setAspectRatio(mAspectRatio);
         if (mHeight >= LinearLayout.LayoutParams.MATCH_PARENT) {
             layout.setLayoutParams(new LinearLayout.LayoutParams(
                     LinearLayout.LayoutParams.MATCH_PARENT, mHeight));
         }
-        mAnimationController.attachView(video, previewImage, playButton);
+        if (mAnimationController != null) {
+            mAnimationController.attachView(mVideo, mPreviewImage, mPlayButton);
+        }
     }
 
     @Override
@@ -164,6 +169,9 @@
         }
         if (mAnimationId != 0) {
             mAnimationController = new MediaAnimationController(mContext, mAnimationId);
+            if (mVideo != null) {
+                mAnimationController.attachView(mVideo, mPreviewImage, mPlayButton);
+            }
         }
     }
 
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 94cb306..0ba2a94 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -261,8 +261,7 @@
         mMeteredSettingsSpinner = mView.findViewById(R.id.metered_settings);
         mHiddenSettingsSpinner = mView.findViewById(R.id.hidden_settings);
         mPrivacySettingsSpinner = mView.findViewById(R.id.privacy_settings);
-        if (mContext.getResources().getBoolean(
-                com.android.internal.R.bool.config_wifi_connected_mac_randomization_supported)) {
+        if (mWifiManager.isConnectedMacRandomizationSupported()) {
             View privacySettingsLayout = mView.findViewById(R.id.privacy_settings_fields);
             privacySettingsLayout.setVisibility(View.VISIBLE);
         }
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 2741139..28b668f 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -53,6 +53,8 @@
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceScreen;
+import androidx.recyclerview.widget.RecyclerView;
 
 import com.android.settings.LinkifyUtils;
 import com.android.settings.R;
@@ -444,6 +446,13 @@
     }
 
     @Override
+    protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
+        final RecyclerView.Adapter adapter = super.onCreateAdapter(preferenceScreen);
+        adapter.setHasStableIds(true);
+        return adapter;
+    }
+
+    @Override
     public int getMetricsCategory() {
         return SettingsEnums.WIFI;
     }
diff --git a/src/com/android/settings/wifi/WifiSettings2.java b/src/com/android/settings/wifi/WifiSettings2.java
index c06aef7..2d26cc4 100644
--- a/src/com/android/settings/wifi/WifiSettings2.java
+++ b/src/com/android/settings/wifi/WifiSettings2.java
@@ -48,6 +48,8 @@
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceScreen;
+import androidx.recyclerview.widget.RecyclerView;
 
 import com.android.settings.LinkifyUtils;
 import com.android.settings.R;
@@ -368,6 +370,13 @@
     }
 
     @Override
+    protected RecyclerView.Adapter onCreateAdapter(PreferenceScreen preferenceScreen) {
+        final RecyclerView.Adapter adapter = super.onCreateAdapter(preferenceScreen);
+        adapter.setHasStableIds(true);
+        return adapter;
+    }
+
+    @Override
     public int getMetricsCategory() {
         return SettingsEnums.WIFI;
     }
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
index 252193d..50396e5 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSettingsForSub.java
@@ -30,6 +30,7 @@
 import android.telephony.PhoneStateListener;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
+import android.telephony.ims.ImsMmTelManager;
 import android.telephony.ims.ProvisioningManager;
 import android.text.TextUtils;
 import android.util.Log;
@@ -98,6 +99,7 @@
 
     private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
     private ImsManager mImsManager;
+    private ImsMmTelManager mImsMmTelManager;
     private TelephonyManager mTelephonyManager;
 
     private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
@@ -110,8 +112,8 @@
         @Override
         public void onCallStateChanged(int state, String incomingNumber) {
             final SettingsActivity activity = (SettingsActivity) getActivity();
-            boolean isNonTtyOrTtyOnVolteEnabled = mImsManager.isNonTtyOrTtyOnVolteEnabled();
-            boolean isWfcEnabled = mSwitchBar.isChecked()
+            final boolean isNonTtyOrTtyOnVolteEnabled = mImsManager.isNonTtyOrTtyOnVolteEnabled();
+            final boolean isWfcEnabled = mSwitchBar.isChecked()
                     && isNonTtyOrTtyOnVolteEnabled;
 
             mSwitchBar.setEnabled((state == TelephonyManager.CALL_STATE_IDLE)
@@ -132,12 +134,12 @@
                 }
             }
 
-            Preference pref = getPreferenceScreen().findPreference(BUTTON_WFC_MODE);
+            final Preference pref = getPreferenceScreen().findPreference(BUTTON_WFC_MODE);
             if (pref != null) {
                 pref.setEnabled(isWfcEnabled && isWfcModeEditable
                         && (state == TelephonyManager.CALL_STATE_IDLE));
             }
-            Preference pref_roam =
+            final Preference pref_roam =
                     getPreferenceScreen().findPreference(BUTTON_WFC_ROAMING_MODE);
             if (pref_roam != null) {
                 pref_roam.setEnabled(isWfcEnabled && isWfcRoamingModeEditable
@@ -151,7 +153,7 @@
      */
     private final OnPreferenceClickListener mUpdateAddressListener =
             preference -> {
-                Intent carrierAppIntent = getCarrierActivityIntent();
+                final Intent carrierAppIntent = getCarrierActivityIntent();
                 if (carrierAppIntent != null) {
                     carrierAppIntent.putExtra(EXTRA_LAUNCH_CARRIER_APP, LAUCH_APP_UPDATE);
                     startActivity(carrierAppIntent);
@@ -179,7 +181,7 @@
         mEmptyView = getView().findViewById(android.R.id.empty);
         setEmptyView(mEmptyView);
         final Resources res = getResourcesForSubId();
-        String emptyViewText = res.getString(R.string.wifi_calling_off_explanation,
+        final String emptyViewText = res.getString(R.string.wifi_calling_off_explanation,
                 res.getString(R.string.wifi_calling_off_explanation_2));
         mEmptyView.setText(emptyViewText);
 
@@ -195,17 +197,17 @@
     }
 
     private void showAlert(Intent intent) {
-        Context context = getActivity();
+        final Context context = getActivity();
 
-        CharSequence title = intent.getCharSequenceExtra(Phone.EXTRA_KEY_ALERT_TITLE);
-        CharSequence message = intent.getCharSequenceExtra(Phone.EXTRA_KEY_ALERT_MESSAGE);
+        final CharSequence title = intent.getCharSequenceExtra(Phone.EXTRA_KEY_ALERT_TITLE);
+        final CharSequence message = intent.getCharSequenceExtra(Phone.EXTRA_KEY_ALERT_MESSAGE);
 
-        AlertDialog.Builder builder = new AlertDialog.Builder(context);
+        final AlertDialog.Builder builder = new AlertDialog.Builder(context);
         builder.setMessage(message)
                 .setTitle(title)
                 .setIcon(android.R.drawable.ic_dialog_alert)
                 .setPositiveButton(android.R.string.ok, null);
-        AlertDialog dialog = builder.create();
+        final AlertDialog dialog = builder.create();
         dialog.show();
     }
 
@@ -214,7 +216,7 @@
     private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
-            String action = intent.getAction();
+            final String action = intent.getAction();
             if (action.equals(ImsManager.ACTION_IMS_REGISTRATION_ERROR)) {
                 // If this fragment is active then we are immediately
                 // showing alert on screen. There is no need to add
@@ -245,6 +247,11 @@
         return ImsManager.getInstance(getActivity(), SubscriptionManager.getPhoneId(mSubId));
     }
 
+    @VisibleForTesting
+    ImsMmTelManager getImsMmTelManager() {
+        return ImsMmTelManager.createForSubscriptionId(mSubId);
+    }
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -261,6 +268,7 @@
         }
 
         mImsManager = getImsManager();
+        mImsMmTelManager = getImsMmTelManager();
 
         mTelephonyManager = ((TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE))
                 .createForSubscriptionId(mSubId);
@@ -288,12 +296,12 @@
     public View onCreateView(LayoutInflater inflater, ViewGroup container,
             Bundle savedInstanceState) {
 
-        View view = inflater.inflate(
+        final View view = inflater.inflate(
                 R.layout.wifi_calling_settings_preferences, container, false);
 
         final ViewGroup prefs_container = view.findViewById(R.id.prefs_container);
         Utils.prepareCustomPreferencesList(container, view, prefs_container, false);
-        View prefs = super.onCreateView(inflater, prefs_container, savedInstanceState);
+        final View prefs = super.onCreateView(inflater, prefs_container, savedInstanceState);
         prefs_container.addView(prefs);
 
         return view;
@@ -307,12 +315,12 @@
             return;
         }
 
-        CarrierConfigManager configManager = (CarrierConfigManager)
+        final CarrierConfigManager configManager = (CarrierConfigManager)
                 getSystemService(Context.CARRIER_CONFIG_SERVICE);
         boolean isWifiOnlySupported = true;
 
         if (configManager != null) {
-            PersistableBundle b = configManager.getConfigForSubId(mSubId);
+            final PersistableBundle b = configManager.getConfigForSubId(mSubId);
             if (b != null) {
                 mEditableWfcMode = b.getBoolean(
                         CarrierConfigManager.KEY_EDITABLE_WFC_MODE_BOOL);
@@ -341,11 +349,11 @@
 
 
         // NOTE: Buttons will be enabled/disabled in mPhoneStateListener
-        boolean wfcEnabled = mImsManager.isWfcEnabledByUser()
+        final boolean wfcEnabled = mImsManager.isWfcEnabledByUser()
                 && mImsManager.isNonTtyOrTtyOnVolteEnabled();
         mSwitch.setChecked(wfcEnabled);
-        int wfcMode = mImsManager.getWfcMode(false);
-        int wfcRoamingMode = mImsManager.getWfcMode(true);
+        final int wfcMode = mImsMmTelManager.getVoWiFiModeSetting();
+        final int wfcRoamingMode = mImsMmTelManager.getVoWiFiRoamingModeSetting();
         mButtonWfcMode.setValue(Integer.toString(wfcMode));
         mButtonWfcRoamingMode.setValue(Integer.toString(wfcRoamingMode));
         updateButtonWfcMode(wfcEnabled, wfcMode, wfcRoamingMode);
@@ -369,7 +377,7 @@
 
         context.registerReceiver(mIntentReceiver, mIntentFilter);
 
-        Intent intent = getActivity().getIntent();
+        final Intent intent = getActivity().getIntent();
         if (intent.getBooleanExtra(Phone.EXTRA_KEY_ALERT_SHOW, false)) {
             showAlert(intent);
         }
@@ -392,7 +400,8 @@
         if (mValidListener) {
             mValidListener = false;
 
-            TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
+            final TelephonyManager tm = (TelephonyManager)
+                    getSystemService(Context.TELEPHONY_SERVICE);
             tm.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
 
             mSwitchBar.removeOnSwitchChangeListener(this);
@@ -441,22 +450,22 @@
      */
     private Intent getCarrierActivityIntent() {
         // Retrive component name from carrier config
-        CarrierConfigManager configManager =
+        final CarrierConfigManager configManager =
                 getActivity().getSystemService(CarrierConfigManager.class);
         if (configManager == null) return null;
 
-        PersistableBundle bundle = configManager.getConfigForSubId(mSubId);
+        final PersistableBundle bundle = configManager.getConfigForSubId(mSubId);
         if (bundle == null) return null;
 
-        String carrierApp = bundle.getString(
+        final String carrierApp = bundle.getString(
                 CarrierConfigManager.KEY_WFC_EMERGENCY_ADDRESS_CARRIER_APP_STRING);
         if (TextUtils.isEmpty(carrierApp)) return null;
 
-        ComponentName componentName = ComponentName.unflattenFromString(carrierApp);
+        final ComponentName componentName = ComponentName.unflattenFromString(carrierApp);
         if (componentName == null) return null;
 
         // Build and return intent
-        Intent intent = new Intent();
+        final Intent intent = new Intent();
         intent.setComponent(componentName);
         intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, mSubId);
         return intent;
@@ -469,8 +478,8 @@
         Log.i(TAG, "updateWfcMode(" + wfcEnabled + ")");
         mImsManager.setWfcSetting(wfcEnabled);
 
-        int wfcMode = mImsManager.getWfcMode(false);
-        int wfcRoamingMode = mImsManager.getWfcMode(true);
+        final int wfcMode = mImsMmTelManager.getVoWiFiModeSetting();
+        final int wfcRoamingMode = mImsMmTelManager.getVoWiFiRoamingModeSetting();
         updateButtonWfcMode(wfcEnabled, wfcMode, wfcRoamingMode);
         if (wfcEnabled) {
             mMetricsFeatureProvider.action(getActivity(), getMetricsCategory(), wfcMode);
@@ -496,7 +505,7 @@
             case REQUEST_CHECK_WFC_DISCLAIMER:
                 if (resultCode == Activity.RESULT_OK) {
                     // Call address management activity before turning on WFC
-                    Intent carrierAppIntent = getCarrierActivityIntent();
+                    final Intent carrierAppIntent = getCarrierActivityIntent();
                     if (carrierAppIntent != null) {
                         carrierAppIntent.putExtra(EXTRA_LAUNCH_CARRIER_APP, LAUCH_APP_ACTIVATE);
                         startActivityForResult(carrierAppIntent,
@@ -520,7 +529,7 @@
         mButtonWfcRoamingMode.setEnabled(wfcEnabled && mEditableWfcRoamingMode);
 
         final PreferenceScreen preferenceScreen = getPreferenceScreen();
-        boolean updateAddressEnabled = (getCarrierActivityIntent() != null);
+        final boolean updateAddressEnabled = (getCarrierActivityIntent() != null);
         if (wfcEnabled) {
             if (mEditableWfcMode) {
                 preferenceScreen.addPreference(mButtonWfcMode);
@@ -551,24 +560,24 @@
         if (preference == mButtonWfcMode) {
             Log.d(TAG, "onPreferenceChange mButtonWfcMode " + newValue);
             mButtonWfcMode.setValue((String) newValue);
-            int buttonMode = Integer.valueOf((String) newValue);
-            int currentWfcMode = mImsManager.getWfcMode(false);
+            final int buttonMode = Integer.valueOf((String) newValue);
+            final int currentWfcMode = mImsMmTelManager.getVoWiFiModeSetting();
             if (buttonMode != currentWfcMode) {
-                mImsManager.setWfcMode(buttonMode, false);
+                mImsMmTelManager.setVoWiFiModeSetting(buttonMode);
                 mButtonWfcMode.setSummary(getWfcModeSummary(buttonMode));
                 mMetricsFeatureProvider.action(getActivity(), getMetricsCategory(), buttonMode);
 
                 if (mUseWfcHomeModeForRoaming) {
-                    mImsManager.setWfcMode(buttonMode, true);
+                    mImsMmTelManager.setVoWiFiRoamingModeSetting(buttonMode);
                     // mButtonWfcRoamingMode.setSummary is not needed; summary is selected value
                 }
             }
         } else if (preference == mButtonWfcRoamingMode) {
             mButtonWfcRoamingMode.setValue((String) newValue);
-            int buttonMode = Integer.valueOf((String) newValue);
-            int currentMode = mImsManager.getWfcMode(true);
+            final int buttonMode = Integer.valueOf((String) newValue);
+            final int currentMode = mImsMmTelManager.getVoWiFiRoamingModeSetting();
             if (buttonMode != currentMode) {
-                mImsManager.setWfcMode(buttonMode, true);
+                mImsMmTelManager.setVoWiFiRoamingModeSetting(buttonMode);
                 // mButtonWfcRoamingMode.setSummary is not needed; summary is just selected value.
                 mMetricsFeatureProvider.action(getActivity(), getMetricsCategory(), buttonMode);
             }
@@ -580,13 +589,13 @@
         int resId = com.android.internal.R.string.wifi_calling_off_summary;
         if (mImsManager.isWfcEnabledByUser()) {
             switch (wfcMode) {
-                case ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY:
+                case ImsMmTelManager.WIFI_MODE_WIFI_ONLY:
                     resId = com.android.internal.R.string.wfc_mode_wifi_only_summary;
                     break;
-                case ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED:
+                case ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED:
                     resId = com.android.internal.R.string.wfc_mode_cellular_preferred_summary;
                     break;
-                case ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED:
+                case ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED:
                     resId = com.android.internal.R.string.wfc_mode_wifi_preferred_summary;
                     break;
                 default:
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java
index 70eef2c..524ba8a 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSliceHelper.java
@@ -30,6 +30,7 @@
 import android.provider.Settings;
 import android.telephony.CarrierConfigManager;
 import android.telephony.SubscriptionManager;
+import android.telephony.ims.ImsMmTelManager;
 import android.text.TextUtils;
 import android.util.Log;
 
@@ -233,6 +234,7 @@
         final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled(
                 CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, subId, true);
         final ImsManager imsManager = getImsManager(subId);
+        final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId);
 
         if (!imsManager.isWfcEnabledByPlatform()
                 || !imsManager.isWfcProvisionedOnDevice()) {
@@ -249,7 +251,7 @@
         int wfcMode = -1;
         try {
             isWifiCallingEnabled = isWifiCallingEnabled(imsManager);
-            wfcMode = getWfcMode(imsManager);
+            wfcMode = getWfcMode(imsMmTelManager);
         } catch (InterruptedException | ExecutionException | TimeoutException e) {
             Log.e(TAG, "Unable to get wifi calling preferred mode", e);
             return null;
@@ -279,7 +281,7 @@
             Uri sliceUri) {
         final IconCompat icon = IconCompat.createWithResource(mContext, R.drawable.wifi_signal);
         // Top row shows information on current preference state
-        ListBuilder listBuilder = new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY)
+        final ListBuilder listBuilder = new ListBuilder(mContext, sliceUri, ListBuilder.INFINITY)
                 .setAccentColor(Utils.getColorAccentDefaultColor(mContext));
         listBuilder.setHeader(new ListBuilder.HeaderBuilder()
                 .setTitle(mContext.getText(R.string.wifi_calling_mode_title))
@@ -294,18 +296,18 @@
             listBuilder.addRow(wifiPreferenceRowBuilder(listBuilder,
                     com.android.internal.R.string.wfc_mode_wifi_only_summary,
                     ACTION_WIFI_CALLING_PREFERENCE_WIFI_ONLY,
-                    currentWfcPref == ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY));
+                    currentWfcPref == ImsMmTelManager.WIFI_MODE_WIFI_ONLY));
         }
 
         listBuilder.addRow(wifiPreferenceRowBuilder(listBuilder,
                 com.android.internal.R.string.wfc_mode_wifi_preferred_summary,
                 ACTION_WIFI_CALLING_PREFERENCE_WIFI_PREFERRED,
-                currentWfcPref == ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED));
+                currentWfcPref == ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED));
 
         listBuilder.addRow(wifiPreferenceRowBuilder(listBuilder,
                 com.android.internal.R.string.wfc_mode_cellular_preferred_summary,
                 ACTION_WIFI_CALLING_PREFERENCE_CELLULAR_PREFERRED,
-                currentWfcPref == ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED));
+                currentWfcPref == ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
 
         return listBuilder.build();
     }
@@ -337,13 +339,13 @@
      */
     private CharSequence getWifiCallingPreferenceSummary(int wfcMode) {
         switch (wfcMode) {
-            case ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY:
+            case ImsMmTelManager.WIFI_MODE_WIFI_ONLY:
                 return mContext.getText(
                         com.android.internal.R.string.wfc_mode_wifi_only_summary);
-            case ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED:
+            case ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED:
                 return mContext.getText(
                         com.android.internal.R.string.wfc_mode_wifi_preferred_summary);
-            case ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED:
+            case ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED:
                 return mContext.getText(
                         com.android.internal.R.string.wfc_mode_cellular_preferred_summary);
             default:
@@ -355,15 +357,19 @@
         return ImsManager.getInstance(mContext, SubscriptionManager.getPhoneId(subId));
     }
 
-    private int getWfcMode(ImsManager imsManager)
+    protected ImsMmTelManager getImsMmTelManager(int subId) {
+        return ImsMmTelManager.createForSubscriptionId(subId);
+    }
+
+    private int getWfcMode(ImsMmTelManager imsMmTelManager)
             throws InterruptedException, ExecutionException, TimeoutException {
-        FutureTask<Integer> wfcModeTask = new FutureTask<>(new Callable<Integer>() {
+        final FutureTask<Integer> wfcModeTask = new FutureTask<>(new Callable<Integer>() {
             @Override
             public Integer call() {
-                return imsManager.getWfcMode(false);
+                return imsMmTelManager.getVoWiFiModeSetting();
             }
         });
-        ExecutorService executor = Executors.newSingleThreadExecutor();
+        final ExecutorService executor = Executors.newSingleThreadExecutor();
         executor.execute(wfcModeTask);
         return wfcModeTask.get(TIMEOUT_MILLIS, TimeUnit.MILLISECONDS);
     }
@@ -420,7 +426,7 @@
             final boolean isWifiOnlySupported = isCarrierConfigManagerKeyEnabled(
                     CarrierConfigManager.KEY_CARRIER_WFC_SUPPORTS_WIFI_ONLY_BOOL, subId, true);
 
-            ImsManager imsManager = getImsManager(subId);
+            final ImsManager imsManager = getImsManager(subId);
             if (isWifiCallingPrefEditable
                     && imsManager.isWfcEnabledByPlatform()
                     && imsManager.isWfcProvisionedOnDevice()
@@ -428,25 +434,26 @@
                     && imsManager.isNonTtyOrTtyOnVolteEnabled()) {
                 // Change the preference only when wifi calling is enabled
                 // And when wifi calling preference is editable for the current carrier
-                final int currentValue = imsManager.getWfcMode(false);
+                final ImsMmTelManager imsMmTelManager = getImsMmTelManager(subId);
+                final int currentValue = imsMmTelManager.getVoWiFiModeSetting();
                 int newValue = errorValue;
                 switch (intent.getAction()) {
                     case ACTION_WIFI_CALLING_PREFERENCE_WIFI_ONLY:
                         if (isWifiOnlySupported) {
                             // change to wifi_only when wifi_only is enabled.
-                            newValue = ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY;
+                            newValue = ImsMmTelManager.WIFI_MODE_WIFI_ONLY;
                         }
                         break;
                     case ACTION_WIFI_CALLING_PREFERENCE_WIFI_PREFERRED:
-                        newValue = ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED;
+                        newValue = ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED;
                         break;
                     case ACTION_WIFI_CALLING_PREFERENCE_CELLULAR_PREFERRED:
-                        newValue = ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED;
+                        newValue = ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED;
                         break;
                 }
                 if (newValue != errorValue && newValue != currentValue) {
                     // Update the setting only when there is a valid update
-                    imsManager.setWfcMode(newValue, false);
+                    imsMmTelManager.setVoWiFiModeSetting(newValue);
                 }
             }
         }
diff --git a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
index 965b0ff..e9d2e08 100644
--- a/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
+++ b/src/com/android/settings/wifi/details/WifiDetailPreferenceController.java
@@ -64,7 +64,6 @@
 import com.android.settings.core.FeatureFlags;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settings.datausage.WifiDataUsageSummaryPreferenceController;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
 import com.android.settings.widget.EntityHeaderController;
 import com.android.settings.wifi.WifiDialog;
 import com.android.settings.wifi.WifiDialog.WifiDialogListener;
@@ -892,17 +891,8 @@
             mWifiManager.disableEphemeralNetwork(mWifiInfo.getSSID());
         } else if (mAccessPoint.isPasspoint() || mAccessPoint.isPasspointConfig()) {
             // Post a dialog to confirm if user really want to forget the passpoint network.
-            if (FeatureFlagPersistent.isEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2)) {
-                showConfirmForgetDialog();
-                return;
-            }
-
-            try {
-                mWifiManager.removePasspointConfiguration(mAccessPoint.getPasspointFqdn());
-            } catch (RuntimeException e) {
-                Log.e(TAG, "Failed to remove Passpoint configuration for "
-                        + mAccessPoint.getPasspointFqdn());
-            }
+            showConfirmForgetDialog();
+            return;
         } else if (mWifiConfig != null) {
             mWifiManager.forget(mWifiConfig.networkId, null /* action listener */);
         }
diff --git a/src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java b/src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java
index 950cc13..eab0fa4 100644
--- a/src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java
+++ b/src/com/android/settings/wifi/details/WifiPrivacyPreferenceController.java
@@ -65,9 +65,8 @@
 
     @Override
     public int getAvailabilityStatus() {
-        return mContext.getResources().getBoolean(
-                com.android.internal.R.bool.config_wifi_connected_mac_randomization_supported) ?
-                AVAILABLE : CONDITIONALLY_UNAVAILABLE;
+        return mWifiManager.isConnectedMacRandomizationSupported()
+                ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
     }
 
     @Override
diff --git a/src/com/android/settings/wifi/tether/WifiTetherPreferenceController.java b/src/com/android/settings/wifi/tether/WifiTetherPreferenceController.java
index 73f1d82..121af92 100644
--- a/src/com/android/settings/wifi/tether/WifiTetherPreferenceController.java
+++ b/src/com/android/settings/wifi/tether/WifiTetherPreferenceController.java
@@ -16,6 +16,7 @@
 
 package com.android.settings.wifi.tether;
 
+import android.annotation.NonNull;
 import android.content.Context;
 import android.net.ConnectivityManager;
 import android.net.wifi.WifiClient;
@@ -164,12 +165,12 @@
         }
     }
 
-    private void updateConfigSummary(WifiConfiguration wifiConfig) {
-        final String s = mContext.getString(
-                com.android.internal.R.string.wifi_tether_configure_ssid_default);
-
+    private void updateConfigSummary(@NonNull WifiConfiguration wifiConfig) {
+        if (wifiConfig == null) {
+            // Should never happen.
+            return;
+        }
         mPreference.setSummary(mContext.getString(R.string.wifi_tether_enabled_subtext,
-                BidiFormatter.getInstance().unicodeWrap(
-                        (wifiConfig == null) ? s : wifiConfig.SSID)));
+                BidiFormatter.getInstance().unicodeWrap(wifiConfig.SSID)));
     }
 }
diff --git a/src/com/android/settings/wifi/tether/WifiTetherSoftApManager.java b/src/com/android/settings/wifi/tether/WifiTetherSoftApManager.java
index 1a805bd..3de5869 100644
--- a/src/com/android/settings/wifi/tether/WifiTetherSoftApManager.java
+++ b/src/com/android/settings/wifi/tether/WifiTetherSoftApManager.java
@@ -3,6 +3,7 @@
 import android.net.wifi.WifiClient;
 import android.net.wifi.WifiManager;
 import android.os.Handler;
+import android.os.HandlerExecutor;
 
 import java.util.List;
 
@@ -35,7 +36,7 @@
     }
 
     public void registerSoftApCallback() {
-        mWifiManager.registerSoftApCallback(mSoftApCallback, mHandler);
+        mWifiManager.registerSoftApCallback(mSoftApCallback, new HandlerExecutor(mHandler));
     }
 
     public void unRegisterSoftApCallback() {
diff --git a/tests/robotests/res/xml-mcc999/video_preference.xml b/tests/robotests/res/xml-mcc999/video_preference.xml
new file mode 100644
index 0000000..647a82f
--- /dev/null
+++ b/tests/robotests/res/xml-mcc999/video_preference.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2019 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.
+-->
+
+<PreferenceScreen
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:settings="http://schemas.android.com/apk/res-auto">
+    <com.android.settings.widget.VideoPreference
+        android:key="video1"
+        settings:animation="@raw/adaptive_sleep"
+        settings:preview="@drawable/adaptive_sleep"
+        android:title="seek_bar_title"/>
+    <com.android.settings.widget.VideoPreference
+        android:key="video2"
+        settings:animation="@raw/adaptive_sleep"
+        settings:preview="@drawable/adaptive_sleep"
+        settings:vectorAnimation="@drawable/adaptive_sleep"
+        android:title="seek_bar_title"/>
+</PreferenceScreen >
diff --git a/tests/robotests/src/com/android/settings/bluetooth/UtilsTest.java b/tests/robotests/src/com/android/settings/bluetooth/UtilsTest.java
index 1920019..25808b5 100644
--- a/tests/robotests/src/com/android/settings/bluetooth/UtilsTest.java
+++ b/tests/robotests/src/com/android/settings/bluetooth/UtilsTest.java
@@ -15,8 +15,6 @@
  */
 package com.android.settings.bluetooth;
 
-import static com.google.common.truth.Truth.assertThat;
-
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
@@ -24,7 +22,6 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
-import android.bluetooth.BluetoothDevice;
 import android.content.Context;
 
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -61,6 +58,6 @@
         Utils.showConnectingError(mContext, "testName", mock(LocalBluetoothManager.class));
 
         verify(mMetricsFeatureProvider).visible(eq(mContext), anyInt(),
-                eq(MetricsEvent.ACTION_SETTINGS_BLUETOOTH_CONNECT_ERROR));
+                eq(MetricsEvent.ACTION_SETTINGS_BLUETOOTH_CONNECT_ERROR), anyInt());
     }
 }
diff --git a/tests/robotests/src/com/android/settings/core/XmlControllerAttributeTest.java b/tests/robotests/src/com/android/settings/core/XmlControllerAttributeTest.java
index 78d1f74..da234a1 100644
--- a/tests/robotests/src/com/android/settings/core/XmlControllerAttributeTest.java
+++ b/tests/robotests/src/com/android/settings/core/XmlControllerAttributeTest.java
@@ -10,12 +10,11 @@
 import android.util.Xml;
 
 import com.android.settings.R;
-import com.android.settings.search.DatabaseIndexingUtils;
 import com.android.settings.search.SearchFeatureProvider;
 import com.android.settings.search.SearchFeatureProviderImpl;
-import com.android.settings.security.SecuritySettings;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.search.Indexable;
+import com.android.settingslib.search.SearchIndexableData;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -35,9 +34,6 @@
 @RunWith(RobolectricTestRunner.class)
 public class XmlControllerAttributeTest {
 
-    // List of classes that are too hard to mock in order to retrieve xml information.
-    private final List<Class> illegalClasses = Arrays.asList(SecuritySettings.class);
-
     // List of XML that could be retrieved from the illegalClasses list.
     private final List<Integer> whitelistXml = Arrays.asList(R.xml.security_dashboard_settings);
 
@@ -112,14 +108,12 @@
     private Set<Integer> getIndexableXml() {
         Set<Integer> xmlResSet = new HashSet<>();
 
-        Collection<Class> indexableClasses =
+        Collection<SearchIndexableData> SearchIndexableDatas =
                 mSearchProvider.getSearchIndexableResources().getProviderValues();
-        indexableClasses.removeAll(illegalClasses);
 
-        for (Class clazz : indexableClasses) {
+        for (SearchIndexableData bundle : SearchIndexableDatas) {
 
-            Indexable.SearchIndexProvider provider =
-                DatabaseIndexingUtils.getSearchIndexProvider(clazz);
+            Indexable.SearchIndexProvider provider = bundle.getSearchIndexProvider();
 
             if (provider == null) {
                 continue;
diff --git a/tests/robotests/src/com/android/settings/core/instrumentation/SettingsEventLogWriterTest.java b/tests/robotests/src/com/android/settings/core/instrumentation/SettingsEventLogWriterTest.java
index ba2553d..8f22df0 100644
--- a/tests/robotests/src/com/android/settings/core/instrumentation/SettingsEventLogWriterTest.java
+++ b/tests/robotests/src/com/android/settings/core/instrumentation/SettingsEventLogWriterTest.java
@@ -62,7 +62,7 @@
                 SettingsUIDeviceConfig.GENERIC_EVENT_LOGGING_ENABLED, "true", true);
 
         mWriter.visible(RuntimeEnvironment.application, SettingsEnums.PAGE_UNKNOWN,
-                SettingsEnums.SETTINGS_HOMEPAGE);
+                SettingsEnums.SETTINGS_HOMEPAGE, 0);
 
         assertThat(ShadowMetricsLogger.sActionLoggedCount).isEqualTo(1);
     }
@@ -83,7 +83,7 @@
                 SettingsUIDeviceConfig.GENERIC_EVENT_LOGGING_ENABLED, "false", true);
 
         mWriter.visible(RuntimeEnvironment.application, SettingsEnums.PAGE_UNKNOWN,
-                SettingsEnums.SETTINGS_HOMEPAGE);
+                SettingsEnums.SETTINGS_HOMEPAGE, 0);
 
         assertThat(ShadowMetricsLogger.sActionLoggedCount).isEqualTo(0);
     }
diff --git a/tests/robotests/src/com/android/settings/datausage/CellDataPreferenceTest.java b/tests/robotests/src/com/android/settings/datausage/CellDataPreferenceTest.java
index 9b14e19..0b8ebbf 100644
--- a/tests/robotests/src/com/android/settings/datausage/CellDataPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/CellDataPreferenceTest.java
@@ -18,17 +18,18 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.doReturn;
 
 import android.content.Context;
 import android.telephony.SubscriptionInfo;
-import android.telephony.SubscriptionManager;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.LinearLayout;
 
 import androidx.preference.PreferenceViewHolder;
 
+import com.android.settings.network.ProxySubscriptionManager;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -41,14 +42,13 @@
 public class CellDataPreferenceTest {
 
     @Mock
-    private SubscriptionManager mSubscriptionManager;
+    private ProxySubscriptionManager mProxySubscriptionMgr;
     @Mock
     private SubscriptionInfo mSubInfo;
 
     private Context mContext;
     private PreferenceViewHolder mHolder;
     private CellDataPreference mPreference;
-    private SubscriptionManager.OnSubscriptionsChangedListener mListener;
 
     @Before
     public void setUp() {
@@ -56,9 +56,9 @@
 
         mContext = RuntimeEnvironment.application;
         mPreference = new CellDataPreference(mContext, null);
-        mListener = mPreference.mOnSubscriptionsChangeListener;
+        mPreference.mProxySubscriptionMgr = mProxySubscriptionMgr;
 
-        LayoutInflater inflater = LayoutInflater.from(mContext);
+        final LayoutInflater inflater = LayoutInflater.from(mContext);
         final View view = inflater.inflate(mPreference.getLayoutResource(),
                 new LinearLayout(mContext), false);
 
@@ -67,12 +67,15 @@
 
     @Test
     public void noActiveSub_shouldDisable() {
-        mPreference.mSubscriptionManager = mSubscriptionManager;
-        mListener.onSubscriptionsChanged();
+        doReturn(null).when(mProxySubscriptionMgr).getActiveSubscriptionInfo(anyInt());
+        mPreference.mOnSubscriptionsChangeListener.onChanged();
         assertThat(mPreference.isEnabled()).isFalse();
+    }
 
-        when(mSubscriptionManager.getActiveSubscriptionInfo(anyInt())).thenReturn(mSubInfo);
-        mListener.onSubscriptionsChanged();
+    @Test
+    public void hasActiveSub_shouldEnable() {
+        doReturn(mSubInfo).when(mProxySubscriptionMgr).getActiveSubscriptionInfo(anyInt());
+        mPreference.mOnSubscriptionsChangeListener.onChanged();
         assertThat(mPreference.isEnabled()).isTrue();
     }
 }
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java
index 9aa1c6f..6894d38 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataUsageListTest.java
@@ -42,6 +42,7 @@
 
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
+import com.android.settings.network.MobileDataEnabledListener;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.widget.LoadingViewController;
 import com.android.settingslib.AppItem;
@@ -67,7 +68,7 @@
 public class DataUsageListTest {
 
     @Mock
-    private CellDataPreference.DataStateListener mListener;
+    private MobileDataEnabledListener mMobileDataEnabledListener;
     @Mock
     private TemplatePreference.NetworkServices mNetworkServices;
 
@@ -83,9 +84,11 @@
         mActivity = spy(mActivityController.get());
         mNetworkServices.mPolicyEditor = mock(NetworkPolicyEditor.class);
         mDataUsageList = spy(DataUsageList.class);
+        mDataUsageList.mDataStateListener = mMobileDataEnabledListener;
 
         doReturn(mActivity).when(mDataUsageList).getContext();
-        ReflectionHelpers.setField(mDataUsageList, "mDataStateListener", mListener);
+        ReflectionHelpers.setField(mDataUsageList, "mDataStateListener",
+                mMobileDataEnabledListener);
         ReflectionHelpers.setField(mDataUsageList, "services", mNetworkServices);
     }
 
@@ -98,11 +101,11 @@
 
         mDataUsageList.onResume();
 
-        verify(mListener).setListener(true, mDataUsageList.mSubId, mActivity);
+        verify(mMobileDataEnabledListener).start(anyInt());
 
         mDataUsageList.onPause();
 
-        verify(mListener).setListener(false, mDataUsageList.mSubId, mActivity);
+        verify(mMobileDataEnabledListener).stop();
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/datausage/DataUsageUtilsTest.java b/tests/robotests/src/com/android/settings/datausage/DataUsageUtilsTest.java
index aa5db22..fe02cb1 100644
--- a/tests/robotests/src/com/android/settings/datausage/DataUsageUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/datausage/DataUsageUtilsTest.java
@@ -54,7 +54,7 @@
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        ShadowApplication shadowContext = ShadowApplication.getInstance();
+        final ShadowApplication shadowContext = ShadowApplication.getInstance();
         mContext = RuntimeEnvironment.application;
         shadowContext.setSystemService(Context.CONNECTIVITY_SERVICE, mManager);
         shadowContext.setSystemService(Context.TELEPHONY_SERVICE, mTelephonyManager);
@@ -64,28 +64,28 @@
     @Test
     public void mobileDataStatus_whenNetworkIsSupported() {
         when(mManager.isNetworkSupported(anyInt())).thenReturn(true);
-        boolean hasMobileData = DataUsageUtils.hasMobileData(mContext);
+        final boolean hasMobileData = DataUsageUtils.hasMobileData(mContext);
         assertThat(hasMobileData).isTrue();
     }
 
     @Test
     public void mobileDataStatus_whenNetworkIsNotSupported() {
         when(mManager.isNetworkSupported(anyInt())).thenReturn(false);
-        boolean hasMobileData = DataUsageUtils.hasMobileData(mContext);
+        final boolean hasMobileData = DataUsageUtils.hasMobileData(mContext);
         assertThat(hasMobileData).isFalse();
     }
 
     @Test
     public void hasSim_simStateReady() {
         when(mTelephonyManager.getSimState()).thenReturn(TelephonyManager.SIM_STATE_READY);
-        boolean hasSim = DataUsageUtils.hasSim(mContext);
+        final boolean hasSim = DataUsageUtils.hasSim(mContext);
         assertThat(hasSim).isTrue();
     }
 
     @Test
     public void hasSim_simStateMissing() {
         when(mTelephonyManager.getSimState()).thenReturn(TelephonyManager.SIM_STATE_ABSENT);
-        boolean hasSim = DataUsageUtils.hasSim(mContext);
+        final boolean hasSim = DataUsageUtils.hasSim(mContext);
         assertThat(hasSim).isFalse();
     }
 
diff --git a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
index 0f39fc9..3ecdcff 100644
--- a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
+++ b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java
@@ -16,35 +16,21 @@
 
 package com.android.settings.deviceinfo.simstatus;
 
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .CELL_DATA_NETWORK_TYPE_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .CELL_VOICE_NETWORK_TYPE_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.CELL_DATA_NETWORK_TYPE_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.CELL_VOICE_NETWORK_TYPE_VALUE_ID;
 import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.EID_INFO_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .ICCID_INFO_LABEL_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .ICCID_INFO_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .IMS_REGISTRATION_STATE_LABEL_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .IMS_REGISTRATION_STATE_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .NETWORK_PROVIDER_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .OPERATOR_INFO_LABEL_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .OPERATOR_INFO_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .PHONE_NUMBER_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .ROAMING_INFO_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .SERVICE_STATE_VALUE_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .SIGNAL_STRENGTH_LABEL_ID;
-import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController
-        .SIGNAL_STRENGTH_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.ICCID_INFO_LABEL_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.ICCID_INFO_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.IMS_REGISTRATION_STATE_LABEL_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.IMS_REGISTRATION_STATE_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.NETWORK_PROVIDER_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.OPERATOR_INFO_LABEL_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.OPERATOR_INFO_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.PHONE_NUMBER_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.ROAMING_INFO_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.SERVICE_STATE_VALUE_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.SIGNAL_STRENGTH_LABEL_ID;
+import static com.android.settings.deviceinfo.simstatus.SimStatusDialogController.SIGNAL_STRENGTH_VALUE_ID;
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
@@ -70,8 +56,11 @@
 import androidx.lifecycle.LifecycleOwner;
 
 import com.android.settings.R;
+import com.android.settings.testutils.shadow.ShadowDeviceInfoUtils;
+import com.android.settingslib.DeviceInfoUtils;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -80,10 +69,12 @@
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
 import org.robolectric.shadows.ShadowPackageManager;
 import org.robolectric.util.ReflectionHelpers;
 
 @RunWith(RobolectricTestRunner.class)
+@Config(shadows = {ShadowDeviceInfoUtils.class})
 public class SimStatusDialogControllerTest {
 
     @Mock
@@ -120,11 +111,11 @@
         mLifecycleOwner = () -> mLifecycle;
         mLifecycle = new Lifecycle(mLifecycleOwner);
         mController = spy(new SimStatusDialogController(mDialog, mLifecycle, 0 /* phone id */));
+        ShadowDeviceInfoUtils.setPhoneNumber("");
         doReturn(mServiceState).when(mController).getCurrentServiceState();
         doReturn(0).when(mSignalStrength).getDbm();
         doReturn(0).when(mSignalStrength).getAsuLevel();
         doReturn(mPhoneStateListener).when(mController).getPhoneStateListener();
-        doReturn("").when(mController).getPhoneNumber();
         doReturn(mSignalStrength).when(mController).getSignalStrength();
         doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(anyInt());
 
@@ -141,12 +132,17 @@
                 .thenReturn(true);
 
         final ShadowPackageManager shadowPackageManager =
-            Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager());
+                Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager());
         final PackageInfo sysUIPackageInfo = new PackageInfo();
         sysUIPackageInfo.packageName = "com.android.systemui";
         shadowPackageManager.addPackage(sysUIPackageInfo);
     }
 
+    @After
+    public void tearDown() {
+        ShadowDeviceInfoUtils.reset();
+    }
+
     @Test
     public void initialize_updateNetworkProviderWithFoobarCarrier_shouldUpdateCarrierWithFoobar() {
         final CharSequence carrierName = "foobar";
@@ -159,8 +155,10 @@
 
     @Test
     public void initialize_updatePhoneNumberWith1111111111_shouldUpdatePhoneNumber() {
-        final String phoneNumber = "1111111111";
-        doReturn(phoneNumber).when(mController).getPhoneNumber();
+        ShadowDeviceInfoUtils.setPhoneNumber("1111111111");
+
+        final String phoneNumber = DeviceInfoUtils.getBidiFormattedPhoneNumber(mContext,
+                mSubscriptionInfo);
 
         mController.initialize();
 
@@ -239,7 +237,7 @@
         mController.initialize();
 
         final String signalStrengthString =
-            mContext.getString(R.string.sim_signal_strength, signalDbm, signalAsu);
+                mContext.getString(R.string.sim_signal_strength, signalDbm, signalAsu);
         verify(mDialog).setText(SIGNAL_STRENGTH_VALUE_ID, signalStrengthString);
     }
 
@@ -321,7 +319,7 @@
     public void initialize_doNotShowSignalStrength_shouldRemoveSignalStrengthSetting() {
         when(mPersistableBundle.getBoolean(
                 CarrierConfigManager.KEY_SHOW_SIGNAL_STRENGTH_IN_SIM_STATUS_BOOL))
-            .thenReturn(false);
+                .thenReturn(false);
 
         mController.initialize();
 
@@ -377,31 +375,31 @@
     @Test
     public void initialize_imsRegistered_shouldSetImsRegistrationStateSummaryToRegisterd() {
         when(mPersistableBundle.getBoolean(
-            CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(true);
+                CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(true);
         when(mTelephonyManager.isImsRegistered(anyInt())).thenReturn(true);
 
         mController.initialize();
 
         verify(mDialog).setText(IMS_REGISTRATION_STATE_VALUE_ID,
-            mContext.getString(R.string.ims_reg_status_registered));
+                mContext.getString(R.string.ims_reg_status_registered));
     }
 
     @Test
     public void initialize_imsNotRegistered_shouldSetImsRegistrationStateSummaryToNotRegisterd() {
         when(mPersistableBundle.getBoolean(
-            CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(true);
+                CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(true);
         when(mTelephonyManager.isImsRegistered(anyInt())).thenReturn(false);
 
         mController.initialize();
 
         verify(mDialog).setText(IMS_REGISTRATION_STATE_VALUE_ID,
-            mContext.getString(R.string.ims_reg_status_not_registered));
+                mContext.getString(R.string.ims_reg_status_not_registered));
     }
 
     @Test
     public void initialize_showImsRegistration_shouldNotRemoveImsRegistrationStateSetting() {
         when(mPersistableBundle.getBoolean(
-            CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(true);
+                CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(true);
 
         mController.initialize();
 
@@ -411,7 +409,7 @@
     @Test
     public void initialize_doNotShowImsRegistration_shouldRemoveImsRegistrationStateSetting() {
         when(mPersistableBundle.getBoolean(
-            CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(false);
+                CarrierConfigManager.KEY_SHOW_IMS_REGISTRATION_STATUS_BOOL)).thenReturn(false);
 
         mController.initialize();
 
diff --git a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionControllerTest.java b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionControllerTest.java
index 8663d0b..ac3d7d8 100644
--- a/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionControllerTest.java
+++ b/tests/robotests/src/com/android/settings/homepage/contextualcards/conditional/HotspotConditionControllerTest.java
@@ -61,11 +61,10 @@
     }
 
     @Test
-    public void buildContextualCard_noWifiAp_shouldHaveDefaultSsid() {
+    public void buildContextualCard_noWifiAp_shouldHaveEmptySsid() {
         final ContextualCard card = mController.buildContextualCard();
 
-        assertThat(card.getSummaryText()).isEqualTo(
-                mContext.getText(com.android.internal.R.string.wifi_tether_configure_ssid_default));
+        assertThat(card.getSummaryText()).isEqualTo("");
     }
 
     private void setupWifiApConfiguration() {
diff --git a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
index b7691af..702d689 100644
--- a/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/MobileNetworkPreferenceControllerTest.java
@@ -18,12 +18,8 @@
 import static androidx.lifecycle.Lifecycle.Event.ON_START;
 import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
 
-import static com.android.settings.network.MobileNetworkPreferenceController.MOBILE_NETWORK_CLASS;
-import static com.android.settings.network.MobileNetworkPreferenceController.MOBILE_NETWORK_PACKAGE;
-
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
@@ -31,23 +27,18 @@
 import static org.mockito.Mockito.when;
 import static org.robolectric.shadow.api.Shadow.extract;
 
-import android.app.Activity;
-import android.content.ComponentName;
 import android.content.Context;
-import android.content.Intent;
 import android.net.ConnectivityManager;
 import android.os.UserManager;
 import android.provider.Settings;
 import android.provider.Settings.Global;
 import android.telephony.PhoneStateListener;
 import android.telephony.TelephonyManager;
-import android.util.FeatureFlagUtils;
 
 import androidx.lifecycle.LifecycleOwner;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.testutils.shadow.ShadowConnectivityManager;
 import com.android.settings.testutils.shadow.ShadowUserManager;
 import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
@@ -57,10 +48,8 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.robolectric.Robolectric;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
@@ -186,18 +175,4 @@
         mController.updateState(mPreference);
         assertThat(mPreference.isEnabled()).isFalse();
     }
-
-    @Test
-    public void handlePreferenceTreeClick_mobileFeatureDisabled_sendIntent() {
-        mController = new MobileNetworkPreferenceController(mContext);
-        FeatureFlagUtils.setEnabled(mContext, FeatureFlags.MOBILE_NETWORK_V2, false);
-        ArgumentCaptor<Intent> argument = ArgumentCaptor.forClass(Intent.class);
-        doNothing().when(mContext).startActivity(argument.capture());
-
-        mController.handlePreferenceTreeClick(mPreference);
-
-        final ComponentName componentName = argument.getValue().getComponent();
-        assertThat(componentName.getPackageName()).isEqualTo(MOBILE_NETWORK_PACKAGE);
-        assertThat(componentName.getClassName()).isEqualTo(MOBILE_NETWORK_CLASS);
-    }
 }
diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java
index d1a5e42..c4f1948 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkActivityTest.java
@@ -33,19 +33,12 @@
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
-import android.view.Menu;
-import android.view.View;
 
 import androidx.test.core.app.ActivityScenario;
 import androidx.test.core.app.ApplicationProvider;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
 
 import com.android.internal.telephony.TelephonyIntents;
-import com.android.settings.R;
-import com.android.settings.core.FeatureFlags;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
-
-import com.google.android.material.bottomnavigation.BottomNavigationView;
 
 import org.junit.After;
 import org.junit.Before;
@@ -124,26 +117,10 @@
 
     private ActivityScenario<MobileNetworkActivity> createTargetActivity(Intent activityIntent,
             boolean isInternetV2) {
-        FeatureFlagPersistent.setEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2, isInternetV2);
         return ActivityScenario.launch(activityIntent);
     }
 
     @Test
-    public void updateBottomNavigationView_oneSubscription_shouldBeGone() {
-        mSubscriptionManager.setActiveSubscriptionInfos(mSubscriptionInfo1);
-
-        mMobileNetworkActivity = createTargetActivity(mTestIntent, false);
-
-        mMobileNetworkActivity.moveToState(State.STARTED);
-
-        mMobileNetworkActivity.onActivity(activity -> {
-            final BottomNavigationView bottomNavigationView =
-                    activity.findViewById(R.id.bottom_nav);
-            assertThat(bottomNavigationView.getVisibility()).isEqualTo(View.GONE);
-        });
-    }
-
-    @Test
     public void updateBottomNavigationViewV2_oneSubscription_shouldNotCrash() {
         mSubscriptionManager.setActiveSubscriptionInfos(mSubscriptionInfo1);
 
@@ -153,22 +130,6 @@
     }
 
     @Test
-    public void updateBottomNavigationView_twoSubscription_updateMenu() {
-        mSubscriptionManager.setActiveSubscriptionInfos(mSubscriptionInfo1, mSubscriptionInfo2);
-
-        mMobileNetworkActivity = createTargetActivity(mTestIntent, false);
-
-        mMobileNetworkActivity.moveToState(State.STARTED);
-
-        mMobileNetworkActivity.onActivity(activity -> {
-            final BottomNavigationView bottomNavigationView =
-                    activity.findViewById(R.id.bottom_nav);
-            final Menu menu = bottomNavigationView.getMenu();
-            assertThat(menu.size()).isEqualTo(2);
-        });
-    }
-
-    @Test
     public void updateBottomNavigationViewV2_twoSubscription_shouldNotCrash() {
         mSubscriptionManager.setActiveSubscriptionInfos(mSubscriptionInfo1, mSubscriptionInfo2);
 
@@ -189,14 +150,6 @@
         mMobileNetworkActivity.onActivity(activity -> {
             final MockMobileNetworkActivity mockActivity = (MockMobileNetworkActivity) activity;
             assertThat(mockActivity.mSubscriptionInFragment).isEqualTo(mSubscriptionInfo1);
-
-            final BottomNavigationView bottomNavigationView =
-                    mockActivity.findViewById(R.id.bottom_nav);
-            bottomNavigationView.setSelectedItemId(CURRENT_SUB_ID);
-            assertThat(mockActivity.mSubscriptionInFragment).isEqualTo(mSubscriptionInfo2);
-
-            bottomNavigationView.setSelectedItemId(PREV_SUB_ID);
-            assertThat(mockActivity.mSubscriptionInFragment).isEqualTo(mSubscriptionInfo1);
         });
     }
 
diff --git a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java
index 4afe0fc..7ff3ab3 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/MobileNetworkSettingsTest.java
@@ -36,9 +36,7 @@
 
 import androidx.fragment.app.FragmentActivity;
 
-import com.android.settings.core.FeatureFlags;
 import com.android.settings.datausage.DataUsageSummaryPreferenceController;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
 import com.android.settings.widget.EntityHeaderController;
@@ -92,32 +90,13 @@
     }
 
     @Test
-    public void onAttach_noV2Flag_noCrash() {
-        FeatureFlagPersistent.setEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2, false);
+    public void onAttach_noCrash() {
         mFragment.onAttach(mContext);
     }
 
-    @Test
-    public void onAttach_v2Flag_noCrash() {
-        FeatureFlagPersistent.setEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2, true);
-        mFragment.onAttach(mContext);
-    }
 
     @Test
-    public void createPreferenceControllers_noV2Flag_noDataUsageSummaryController() {
-        FeatureFlagPersistent.setEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2, false);
-        final List<AbstractPreferenceController> controllers =
-                mFragment.createPreferenceControllers(mContext);
-        assertThat(controllers.stream().filter(
-                c -> c.getClass().equals(DataUsageSummaryPreferenceController.class))
-                .count())
-                .isEqualTo(0);
-    }
-
-    @Test
-    public void createPreferenceControllers_v2Flag_createsDataUsageSummaryController() {
-        FeatureFlagPersistent.setEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2, true);
-
+    public void createPreferenceControllers_createsDataUsageSummaryController() {
         final List<AbstractPreferenceController> controllers =
                 mFragment.createPreferenceControllers(mContext);
         assertThat(controllers.stream().filter(
diff --git a/tests/robotests/src/com/android/settings/network/telephony/NetworkOperatorPreferenceTest.java b/tests/robotests/src/com/android/settings/network/telephony/NetworkOperatorPreferenceTest.java
index 704dd95..3a61195 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/NetworkOperatorPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/NetworkOperatorPreferenceTest.java
@@ -60,7 +60,7 @@
         when(mResources.getBoolean(com.android.internal.R.bool.config_enableNewAutoSelectNetworkUI))
                 .thenReturn(false);
         final NetworkOperatorPreference preference = spy(
-                new NetworkOperatorPreference(mCellInfo, mContext,
+                new NetworkOperatorPreference(mContext, mCellInfo,
                         new ArrayList<>() /* forbiddenPlmns */, false /* show4GForLTE */));
 
         preference.setIcon(LEVEL);
diff --git a/tests/robotests/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java b/tests/robotests/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java
index 7dfc8a3..6bee38f 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java
@@ -23,7 +23,11 @@
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
-import android.telephony.CellInfo;
+import android.content.SharedPreferences;
+import android.telephony.CellIdentityLte;
+import android.telephony.CellIdentityWcdma;
+import android.telephony.CellInfoLte;
+import android.telephony.CellInfoWcdma;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 
@@ -43,20 +47,27 @@
 @RunWith(RobolectricTestRunner.class)
 public class NetworkSelectSettingsTest {
     private static final int SUB_ID = 2;
+    private static final String CARRIER_NAME1 = "CarrierName1";
+    private static final String CARRIER_NAME2 = "CarrierName2";
 
     @Mock
     private TelephonyManager mTelephonyManager;
     @Mock
     private SubscriptionManager mSubscriptionManager;
     @Mock
-    private CellInfo mCellInfo1;
+    private CellInfoWcdma mCellInfo1;
     @Mock
-    private CellInfo mCellInfo2;
+    private CellIdentityWcdma mCellId1;
+    @Mock
+    private CellInfoLte mCellInfo2;
+    @Mock
+    private CellIdentityLte mCellId2;
     @Mock
     private PreferenceManager mPreferenceManager;
+    @Mock
+    private SharedPreferences mSharedPreferences;
     private Context mContext;
 
-    private PreferenceCategory mConnectedPreferenceCategory;
     private PreferenceCategory mPreferenceCategory;
 
     private NetworkSelectSettings mNetworkSelectSettings;
@@ -71,10 +82,13 @@
         when(mTelephonyManager.createForSubscriptionId(SUB_ID)).thenReturn(mTelephonyManager);
 
         when(mCellInfo1.isRegistered()).thenReturn(true);
+        when(mCellInfo1.getCellIdentity()).thenReturn(mCellId1);
+        when(mCellId1.getOperatorAlphaLong()).thenReturn(CARRIER_NAME1);
         when(mCellInfo2.isRegistered()).thenReturn(false);
+        when(mCellInfo2.getCellIdentity()).thenReturn(mCellId2);
+        when(mCellId2.getOperatorAlphaLong()).thenReturn(CARRIER_NAME2);
 
-        mConnectedPreferenceCategory = spy(new PreferenceCategory(mContext));
-        doReturn(mPreferenceManager).when(mConnectedPreferenceCategory).getPreferenceManager();
+        doReturn(mSharedPreferences).when(mPreferenceManager).getSharedPreferences();
         mPreferenceCategory = spy(new PreferenceCategory(mContext));
         doReturn(mPreferenceManager).when(mPreferenceCategory).getPreferenceManager();
 
@@ -84,23 +98,18 @@
         doReturn(mContext).when(mPreferenceManager).getContext();
 
         mNetworkSelectSettings.mTelephonyManager = mTelephonyManager;
-        mNetworkSelectSettings.mConnectedPreferenceCategory = mConnectedPreferenceCategory;
         mNetworkSelectSettings.mPreferenceCategory = mPreferenceCategory;
         mNetworkSelectSettings.mCellInfoList = Arrays.asList(mCellInfo1, mCellInfo2);
     }
 
     @Test
-    public void updateAllPreferenceCategory_containCorrectPreference() {
+    public void updateAllPreferenceCategory_correctOrderingPreference() {
         mNetworkSelectSettings.updateAllPreferenceCategory();
 
-        assertThat(mConnectedPreferenceCategory.getPreferenceCount()).isEqualTo(1);
-        final NetworkOperatorPreference connectedPreference =
-                (NetworkOperatorPreference) mConnectedPreferenceCategory.getPreference(0);
-        assertThat(connectedPreference.getCellInfo()).isEqualTo(mCellInfo1);
-        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(1);
+        assertThat(mPreferenceCategory.getPreferenceCount()).isEqualTo(2);
         final NetworkOperatorPreference preference =
-                (NetworkOperatorPreference) mPreferenceCategory.getPreference(0);
-        assertThat(preference.getCellInfo()).isEqualTo(mCellInfo2);
+                (NetworkOperatorPreference) mPreferenceCategory.getPreference(1);
+        assertThat(preference.getOperatorName()).isEqualTo(mCellId2.getOperatorAlphaLong());
     }
 
     @Test
diff --git a/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java
index 1048acd..a320c6e 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/WifiCallingPreferenceControllerTest.java
@@ -19,7 +19,6 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.junit.Assert.assertNull;
-import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
@@ -31,12 +30,11 @@
 import android.telephony.CarrierConfigManager;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
+import android.telephony.ims.ImsMmTelManager;
 
 import androidx.preference.Preference;
-import androidx.preference.PreferenceCategory;
 import androidx.preference.PreferenceScreen;
 
-import com.android.ims.ImsConfig;
 import com.android.ims.ImsManager;
 import com.android.internal.R;
 import com.android.settings.core.BasePreferenceController;
@@ -60,6 +58,8 @@
     @Mock
     private ImsManager mImsManager;
     @Mock
+    private ImsMmTelManager mImsMmTelManager;
+    @Mock
     private PreferenceScreen mPreferenceScreen;
 
     private WifiCallingPreferenceController mController;
@@ -77,7 +77,12 @@
         when(mTelephonyManager.createForSubscriptionId(SUB_ID)).thenReturn(mTelephonyManager);
 
         mPreference = new Preference(mContext);
-        mController = new WifiCallingPreferenceController(mContext, "wifi_calling");
+        mController = new WifiCallingPreferenceController(mContext, "wifi_calling") {
+            @Override
+            protected ImsMmTelManager getImsMmTelManager(int subId) {
+                return mImsMmTelManager;
+            }
+        };
         mController.mCarrierConfigManager = mCarrierConfigManager;
         mController.init(SUB_ID);
         mController.mImsManager = mImsManager;
@@ -94,8 +99,10 @@
     public void updateState_noSimCallManager_setCorrectSummary() {
         mController.mSimCallManager = null;
         when(mImsManager.isWfcEnabledByUser()).thenReturn(true);
-        when(mImsManager.getWfcMode(anyBoolean())).thenReturn(
-                ImsConfig.WfcModeFeatureValueConstants.WIFI_ONLY);
+        when(mImsMmTelManager.getVoWiFiRoamingModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_WIFI_ONLY);
+        when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_WIFI_ONLY);
 
         mController.updateState(mPreference);
 
@@ -129,10 +136,10 @@
         mController.init(SUB_ID);
         mController.mImsManager = mImsManager;
 
-        when(mImsManager.getWfcMode(true)).thenReturn(
-                ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED);
-        when(mImsManager.getWfcMode(false)).thenReturn(
-                ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED);
+        when(mImsMmTelManager.getVoWiFiRoamingModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED);
+        when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED);
         when(mImsManager.isWfcEnabledByUser()).thenReturn(true);
         when(mTelephonyManager.isNetworkRoaming()).thenReturn(true);
 
@@ -146,10 +153,10 @@
         assertNull(mController.mSimCallManager);
         // useWfcHomeModeForRoaming is false by default. In order to check wfc in roaming mode. We
         // need the device roaming, and not using home mode in roaming network.
-        when(mImsManager.getWfcMode(true)).thenReturn(
-                ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED);
-        when(mImsManager.getWfcMode(false)).thenReturn(
-                ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED);
+        when(mImsMmTelManager.getVoWiFiRoamingModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED);
+        when(mImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED);
         when(mImsManager.isWfcEnabledByUser()).thenReturn(true);
         when(mTelephonyManager.isNetworkRoaming()).thenReturn(true);
 
@@ -169,7 +176,7 @@
 
     @Test
     public void displayPreference_available_setsSubscriptionIdOnIntent() {
-        Intent intent = new Intent();
+        final Intent intent = new Intent();
         mPreference.setIntent(intent);
         mController.displayPreference(mPreferenceScreen);
         assertThat(intent.getIntExtra(Settings.EXTRA_SUB_ID,
diff --git a/src/com/android/settings/search/DatabaseIndexingUtils.java b/tests/robotests/src/com/android/settings/search/DatabaseIndexingUtils.java
similarity index 90%
rename from src/com/android/settings/search/DatabaseIndexingUtils.java
rename to tests/robotests/src/com/android/settings/search/DatabaseIndexingUtils.java
index 21936a0..0aa70ae 100644
--- a/src/com/android/settings/search/DatabaseIndexingUtils.java
+++ b/tests/robotests/src/com/android/settings/search/DatabaseIndexingUtils.java
@@ -12,7 +12,6 @@
  * 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.
- *
  */
 
 package com.android.settings.search;
@@ -41,14 +40,14 @@
         } catch (NoSuchFieldException e) {
             Log.d(TAG, "Cannot find field '" + FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'");
         } catch (SecurityException se) {
-            Log.d(TAG, "Security exception for field '" +
-                    FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'");
+            Log.d(TAG,
+                    "Security exception for field '" + FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'");
         } catch (IllegalAccessException e) {
             Log.d(TAG, "Illegal access to field '" + FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'");
         } catch (IllegalArgumentException e) {
-            Log.d(TAG, "Illegal argument when accessing field '" +
-                    FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'");
+            Log.d(TAG, "Illegal argument when accessing field '"
+                    + FIELD_NAME_SEARCH_INDEX_DATA_PROVIDER + "'");
         }
         return null;
     }
-}
\ No newline at end of file
+}
diff --git a/tests/robotests/src/com/android/settings/search/SearchIndexProviderCodeInspector.java b/tests/robotests/src/com/android/settings/search/SearchIndexProviderCodeInspector.java
index c75e3b1..9daac80 100644
--- a/tests/robotests/src/com/android/settings/search/SearchIndexProviderCodeInspector.java
+++ b/tests/robotests/src/com/android/settings/search/SearchIndexProviderCodeInspector.java
@@ -26,6 +26,7 @@
 import com.android.settings.core.codeinspection.CodeInspector;
 import com.android.settings.dashboard.DashboardFragmentSearchIndexProviderInspector;
 import com.android.settingslib.search.Indexable;
+import com.android.settingslib.search.SearchIndexableData;
 import com.android.settingslib.search.SearchIndexableResources;
 
 import org.robolectric.RuntimeEnvironment;
@@ -54,7 +55,7 @@
                     + " but these are not: \n";
     private static final String NOT_PROVIDING_VALID_RESOURCE_ERROR =
             "SearchIndexableProvider must either provide no resource to index, or valid ones. "
-            + "But the followings contain resource with xml id = 0\n";
+                    + "But the followings contain resource with xml id = 0\n";
 
     private final List<String> notImplementingIndexProviderGrandfatherList;
     private final List<String> notInSearchIndexableRegistryGrandfatherList;
@@ -79,6 +80,13 @@
         final Set<String> notInSearchProviderRegistry = new ArraySet<>();
         final Set<String> notSharingPreferenceControllers = new ArraySet<>();
         final Set<String> notProvidingValidResource = new ArraySet<>();
+        final Set<Class> providerClasses = new ArraySet<>();
+
+        final SearchFeatureProvider provider = new SearchFeatureProviderImpl();
+        for (SearchIndexableData bundle :
+                provider.getSearchIndexableResources().getProviderValues()) {
+            providerClasses.add(bundle.getTargetClass());
+        }
 
         for (Class clazz : mClasses) {
             if (!isConcreteSettingsClass(clazz)) {
@@ -108,8 +116,7 @@
                 continue;
             }
             // Must be in SearchProviderRegistry
-            SearchFeatureProvider provider = new SearchFeatureProviderImpl();
-            if (!provider.getSearchIndexableResources().getProviderValues().contains(clazz)) {
+            if (!providerClasses.contains(clazz)) {
                 if (!notInSearchIndexableRegistryGrandfatherList.remove(className)) {
                     notInSearchProviderRegistry.add(className);
                 }
diff --git a/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java b/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java
index ff2acdc..5bcce57 100644
--- a/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java
+++ b/tests/robotests/src/com/android/settings/search/SearchIndexableResourcesTest.java
@@ -21,7 +21,6 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.junit.Assert.fail;
-
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
@@ -32,6 +31,7 @@
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.FakeIndexProvider;
 import com.android.settings.wifi.WifiSettings;
+import com.android.settingslib.search.SearchIndexableData;
 
 import org.junit.After;
 import org.junit.Before;
@@ -65,11 +65,11 @@
                 .doesNotContain(String.class);
         final int beforeCount =
                 mSearchProvider.getSearchIndexableResources().getProviderValues().size();
-
-        mSearchProvider.getSearchIndexableResources().addIndex(String.class);
+        final SearchIndexableData testBundle = new SearchIndexableData(null, null);
+        mSearchProvider.getSearchIndexableResources().addIndex(testBundle);
 
         assertThat(mSearchProvider.getSearchIndexableResources().getProviderValues())
-                .contains(String.class);
+                .contains(testBundle);
         final int afterCount =
                 mSearchProvider.getSearchIndexableResources().getProviderValues().size();
         assertThat(afterCount).isEqualTo(beforeCount + 1);
@@ -77,14 +77,22 @@
 
     @Test
     public void testIndexHasWifiSettings() {
-        assertThat(mSearchProvider.getSearchIndexableResources().getProviderValues())
-                .contains(WifiSettings.class);
+        boolean hasWifi = false;
+        for (SearchIndexableData bundle :
+                mSearchProvider.getSearchIndexableResources().getProviderValues()) {
+            if (bundle.getTargetClass().getName().equals(WifiSettings.class.getName())) {
+                hasWifi = true;
+                break;
+            }
+        }
+        assertThat(hasWifi).isTrue();
     }
 
     @Test
     public void testNonIndexableKeys_GetsKeyFromProvider() {
         mSearchProvider.getSearchIndexableResources().getProviderValues().clear();
-        mSearchProvider.getSearchIndexableResources().addIndex(FakeIndexProvider.class);
+        mSearchProvider.getSearchIndexableResources().addIndex(
+                new SearchIndexableData(null, FakeIndexProvider.SEARCH_INDEX_DATA_PROVIDER));
 
         SettingsSearchIndexablesProvider provider = spy(new SettingsSearchIndexablesProvider());
 
@@ -105,9 +113,10 @@
 
     @Test
     public void testAllClassNamesHaveProviders() {
-        for (Class clazz : mSearchProvider.getSearchIndexableResources().getProviderValues()) {
-            if (DatabaseIndexingUtils.getSearchIndexProvider(clazz) == null) {
-                fail(clazz.getName() + "is not an index provider");
+        for (SearchIndexableData data :
+                mSearchProvider.getSearchIndexableResources().getProviderValues()) {
+            if (DatabaseIndexingUtils.getSearchIndexProvider(data.getTargetClass()) == null) {
+                fail(data.getTargetClass().getName() + "is not an index provider");
             }
         }
     }
diff --git a/tests/robotests/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java b/tests/robotests/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java
index 2a8407b..0db684e 100644
--- a/tests/robotests/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java
+++ b/tests/robotests/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java
@@ -13,6 +13,7 @@
 
 import com.android.settings.R;
 import com.android.settings.testutils.FakeFeatureFactory;
+import com.android.settingslib.search.SearchIndexableData;
 
 import org.junit.After;
 import org.junit.Before;
@@ -46,7 +47,8 @@
         final SearchFeatureProvider featureProvider = new SearchFeatureProviderImpl();
         featureProvider.getSearchIndexableResources().getProviderValues().clear();
         featureProvider.getSearchIndexableResources().getProviderValues()
-                .add(FakeSettingsFragment.class);
+                .add(new SearchIndexableData(FakeSettingsFragment.class,
+                        FakeSettingsFragment.SEARCH_INDEX_DATA_PROVIDER));
         mFakeFeatureFactory = FakeFeatureFactory.setupForTest();
         mFakeFeatureFactory.searchFeatureProvider = featureProvider;
     }
diff --git a/tests/robotests/src/com/android/settings/slices/SliceControllerInXmlCodeInspector.java b/tests/robotests/src/com/android/settings/slices/SliceControllerInXmlCodeInspector.java
index 21944fc..72eae7d 100644
--- a/tests/robotests/src/com/android/settings/slices/SliceControllerInXmlCodeInspector.java
+++ b/tests/robotests/src/com/android/settings/slices/SliceControllerInXmlCodeInspector.java
@@ -31,11 +31,11 @@
 import com.android.settings.core.TogglePreferenceController;
 import com.android.settings.core.codeinspection.CodeInspector;
 import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.search.DatabaseIndexingUtils;
 import com.android.settings.search.SearchFeatureProvider;
 import com.android.settings.search.SearchFeatureProviderImpl;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settingslib.search.Indexable;
+import com.android.settingslib.search.SearchIndexableData;
 
 import org.robolectric.RuntimeEnvironment;
 import org.xmlpull.v1.XmlPullParserException;
@@ -146,13 +146,12 @@
     private List<Integer> getIndexableXml() {
         final List<Integer> xmlResSet = new ArrayList<>();
 
-        final Collection<Class> indexableClasses = FeatureFactory.getFactory(
+        final Collection<SearchIndexableData> bundles = FeatureFactory.getFactory(
                 mContext).getSearchFeatureProvider().getSearchIndexableResources()
                 .getProviderValues();
 
-        for (Class clazz : indexableClasses) {
-            Indexable.SearchIndexProvider provider = DatabaseIndexingUtils.getSearchIndexProvider(
-                    clazz);
+        for (SearchIndexableData bundle : bundles) {
+            Indexable.SearchIndexProvider provider = bundle.getSearchIndexProvider();
 
             if (provider == null) {
                 continue;
diff --git a/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java b/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java
index 63da4d0..3ce964c 100644
--- a/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java
+++ b/tests/robotests/src/com/android/settings/slices/SliceDataConverterTest.java
@@ -37,6 +37,7 @@
 import com.android.settings.search.SearchFeatureProviderImpl;
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.FakeIndexProvider;
+import com.android.settingslib.search.SearchIndexableData;
 
 import org.junit.After;
 import org.junit.Before;
@@ -92,7 +93,8 @@
     public void testFakeProvider_convertsFakeData() {
         mSearchFeatureProvider.getSearchIndexableResources().getProviderValues().clear();
         mSearchFeatureProvider.getSearchIndexableResources().getProviderValues()
-                .add(FakeIndexProvider.class);
+                .add(new SearchIndexableData(FakeIndexProvider.class,
+                        FakeIndexProvider.SEARCH_INDEX_DATA_PROVIDER));
 
         doReturn(getFakeService()).when(mSliceDataConverter).getAccessibilityServiceInfoList();
 
diff --git a/tests/robotests/src/com/android/settings/slices/SlicesDatabaseAccessorTest.java b/tests/robotests/src/com/android/settings/slices/SlicesDatabaseAccessorTest.java
index bed5a27..a28dba8 100644
--- a/tests/robotests/src/com/android/settings/slices/SlicesDatabaseAccessorTest.java
+++ b/tests/robotests/src/com/android/settings/slices/SlicesDatabaseAccessorTest.java
@@ -24,9 +24,7 @@
 import android.app.ApplicationPackageManager;
 import android.content.ComponentName;
 import android.content.ContentResolver;
-import android.content.ContentValues;
 import android.content.Context;
-import android.database.sqlite.SQLiteDatabase;
 import android.net.Uri;
 import android.provider.SettingsSlicesContract;
 import android.view.accessibility.AccessibilityManager;
@@ -40,6 +38,7 @@
 import com.android.settings.testutils.shadow.ShadowLockPatternUtils;
 import com.android.settings.testutils.shadow.ShadowUserManager;
 import com.android.settings.testutils.shadow.ShadowUtils;
+import com.android.settingslib.search.SearchIndexableData;
 
 import org.junit.After;
 import org.junit.Before;
@@ -217,7 +216,8 @@
         // Fake the indexable list.
         provider.getSearchIndexableResources().getProviderValues().clear();
         provider.getSearchIndexableResources().getProviderValues().add(
-                FakeIndexProvider.class);
+                new SearchIndexableData(FakeIndexProvider.class,
+                        FakeIndexProvider.SEARCH_INDEX_DATA_PROVIDER));
 
         final SlicesDatabaseAccessor accessor = new SlicesDatabaseAccessor(mContext);
         final List<Uri> keys = accessor.getSliceUris(SettingsSliceProvider.SLICE_AUTHORITY);
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowDeviceInfoUtils.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowDeviceInfoUtils.java
new file mode 100644
index 0000000..f51cfe3
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowDeviceInfoUtils.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2019 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.
+ */
+package com.android.settings.testutils.shadow;
+
+import android.content.Context;
+import android.telephony.SubscriptionInfo;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+
+@Implements(com.android.settingslib.DeviceInfoUtils.class)
+public class ShadowDeviceInfoUtils {
+    private static String sPhoneNumber;
+
+    @Resetter
+    public static void reset() {
+        sPhoneNumber = "";
+    }
+
+    @Implementation
+    public static String getBidiFormattedPhoneNumber(Context context,
+            SubscriptionInfo subscriptionInfo) {
+        return sPhoneNumber;
+    }
+
+    public static void setPhoneNumber(String phoneNumber) {
+        sPhoneNumber = phoneNumber;
+    }
+}
diff --git a/tests/robotests/src/com/android/settings/widget/VideoPreferenceTest.java b/tests/robotests/src/com/android/settings/widget/VideoPreferenceTest.java
index 09ee615..3439ca4 100644
--- a/tests/robotests/src/com/android/settings/widget/VideoPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/widget/VideoPreferenceTest.java
@@ -27,11 +27,13 @@
 
 import android.content.Context;
 import android.graphics.SurfaceTexture;
+import android.os.Bundle;
 import android.view.LayoutInflater;
 import android.view.TextureView;
 import android.view.View;
 import android.widget.ImageView;
 
+import androidx.preference.PreferenceFragmentCompat;
 import androidx.preference.PreferenceViewHolder;
 
 import com.android.settings.R;
@@ -45,6 +47,7 @@
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
 import org.robolectric.annotation.Config;
+import org.robolectric.shadows.androidx.fragment.FragmentController;
 
 @RunWith(RobolectricTestRunner.class)
 @Config(shadows = ShadowSettingsMediaPlayer.class)
@@ -135,4 +138,29 @@
         verify(fakePreview).setVisibility(eq(View.GONE));
         assertThat(mAnimationController.isPlaying()).isTrue();
     }
+
+    @Test
+    @Config(qualifiers = "mcc999")
+    public void onViewVisible_createAnimationController() {
+        final PreferenceFragmentCompat fragment = FragmentController.of(
+                new VideoPreferenceTest.TestFragment(),
+                new Bundle())
+                .create()
+                .start()
+                .resume()
+                .get();
+
+        final VideoPreference vp1 = fragment.findPreference("video1");
+        final VideoPreference vp2 = fragment.findPreference("video2");
+
+        assertThat(vp1.mAnimationController instanceof MediaAnimationController).isTrue();
+        assertThat(vp2.mAnimationController instanceof VectorAnimationController).isTrue();
+    }
+
+    public static class TestFragment extends PreferenceFragmentCompat {
+        @Override
+        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
+            addPreferencesFromResource(R.xml.video_preference);
+        }
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSettings2Test.java b/tests/robotests/src/com/android/settings/wifi/WifiSettings2Test.java
index a2f5daf..5e41d39 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiSettings2Test.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiSettings2Test.java
@@ -39,6 +39,8 @@
 
 import androidx.fragment.app.FragmentActivity;
 import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+import androidx.recyclerview.widget.RecyclerView;
 
 import com.android.settings.R;
 import com.android.settings.datausage.DataUsagePreference;
@@ -237,6 +239,15 @@
         verify(mDataUsagePreference).setTemplate(any(), eq(0) /*subId*/, eq(null) /*service*/);
     }
 
+    @Test
+    public void onCreateAdapter_hasStableIdsTrue() {
+        final PreferenceScreen preferenceScreen = mock(PreferenceScreen.class);
+
+        RecyclerView.Adapter adapter = mWifiSettings2.onCreateAdapter(preferenceScreen);
+
+        assertThat(adapter.hasStableIds()).isTrue();
+    }
+
 // TODO(b/70983952): Add test for context menu
 //    @Test
 //    public void onCreateContextMenu_shouldHaveForgetMenuForConnectedAccessPreference() {
diff --git a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java
index 18d3f5b..ed5edd0 100644
--- a/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/WifiSettingsTest.java
@@ -45,6 +45,8 @@
 
 import androidx.fragment.app.FragmentActivity;
 import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+import androidx.recyclerview.widget.RecyclerView;
 
 import com.android.settings.R;
 import com.android.settings.datausage.DataUsagePreference;
@@ -291,4 +293,13 @@
 
         verify(menu).add(anyInt(), eq(WifiSettings.MENU_ID_FORGET), anyInt(), anyInt());
     }
+
+    @Test
+    public void onCreateAdapter_hasStableIdsTrue() {
+        final PreferenceScreen preferenceScreen = mock(PreferenceScreen.class);
+
+        RecyclerView.Adapter adapter = mWifiSettings.onCreateAdapter(preferenceScreen);
+
+        assertThat(adapter.hasStableIds()).isTrue();
+    }
 }
diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
index 6fc2551..410c072 100644
--- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSettingsForSubTest.java
@@ -17,11 +17,12 @@
 package com.android.settings.wifi.calling;
 
 import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT;
+
 import static com.google.common.truth.Truth.assertThat;
 
 import static junit.framework.Assert.assertEquals;
+
 import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyBoolean;
 import static org.mockito.Matchers.anyInt;
 import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.doNothing;
@@ -42,6 +43,7 @@
 import android.os.PersistableBundle;
 import android.telephony.CarrierConfigManager;
 import android.telephony.TelephonyManager;
+import android.telephony.ims.ImsMmTelManager;
 import android.telephony.ims.ProvisioningManager;
 import android.view.View;
 import android.widget.TextView;
@@ -53,8 +55,6 @@
 import com.android.ims.ImsManager;
 import com.android.settings.R;
 import com.android.settings.SettingsActivity;
-import com.android.settings.testutils.FakeFeatureFactory;
-import com.android.settings.testutils.shadow.SettingsShadowResources;
 import com.android.settings.testutils.shadow.ShadowFragment;
 import com.android.settings.widget.SwitchBar;
 import com.android.settings.widget.ToggleSwitch;
@@ -67,8 +67,8 @@
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
-import org.robolectric.util.ReflectionHelpers;
 import org.robolectric.annotation.Config;
+import org.robolectric.util.ReflectionHelpers;
 
 @Config(shadows = ShadowFragment.class)
 @RunWith(RobolectricTestRunner.class)
@@ -86,6 +86,7 @@
     @Mock private static CarrierConfigManager sCarrierConfigManager;
     @Mock private CarrierConfigManager mMockConfigManager;
     @Mock private ImsManager mImsManager;
+    @Mock private ImsMmTelManager mImsMmTelManager;
     @Mock private TelephonyManager mTelephonyManager;
     @Mock private PreferenceScreen mPreferenceScreen;
     @Mock private SettingsActivity mActivity;
@@ -127,12 +128,15 @@
         doReturn(mSwitchBar).when(mView).findViewById(R.id.switch_bar);
 
         doReturn(mImsManager).when(mFragment).getImsManager();
+        doReturn(mImsMmTelManager).when(mFragment).getImsMmTelManager();
         doReturn(mImsConfig).when(mImsManager).getConfigInterface();
         doReturn(true).when(mImsManager).isWfcProvisionedOnDevice();
         doReturn(true).when(mImsManager).isWfcEnabledByUser();
         doReturn(true).when(mImsManager).isNonTtyOrTtyOnVolteEnabled();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
-                .when(mImsManager).getWfcMode(anyBoolean());
+        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+                .when(mImsMmTelManager).getVoWiFiModeSetting();
+        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+                .when(mImsMmTelManager).getVoWiFiRoamingModeSetting();
 
         doReturn(mBundle).when(sCarrierConfigManager).getConfigForSubId(anyInt());
         setDefaultCarrierConfigValues();
@@ -251,15 +255,13 @@
 
         // Set the WFC home mode.
         mFragment.onPreferenceChange(mButtonWfcMode,
-                String.valueOf(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED));
+                String.valueOf(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
 
         // Check that only WFC home mode is set.
-        verify(mImsManager, times(1)).setWfcMode(
-                eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED),
-                eq(false));
-        verify(mImsManager, never()).setWfcMode(
-                eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED),
-                eq(true));
+        verify(mImsMmTelManager, times(1)).setVoWiFiModeSetting(
+                eq(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
+        verify(mImsMmTelManager, never()).setVoWiFiRoamingModeSetting(
+                eq(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
     }
 
     @Test
@@ -272,34 +274,32 @@
 
         // Set the WFC home mode.
         mFragment.onPreferenceChange(mButtonWfcMode,
-                String.valueOf(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED));
+                String.valueOf(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
 
         // Check that both WFC home mode and roaming mode are set.
-        verify(mImsManager, times(1)).setWfcMode(
-                eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED),
-                eq(false));
-        verify(mImsManager, times(1)).setWfcMode(
-                eq(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED),
-                eq(true));
+        verify(mImsMmTelManager, times(1)).setVoWiFiModeSetting(
+                eq(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
+        verify(mImsMmTelManager, times(1)).setVoWiFiRoamingModeSetting(
+                eq(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED));
     }
 
     @Test
     public void onSwitchChanged_enableSetting_shouldLaunchWfcDisclaimerFragment() {
-        ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
+        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
 
         mFragment.onSwitchChanged(null, true);
 
         // Check the WFC disclaimer fragment is launched.
         verify(mFragment).startActivityForResult(intentCaptor.capture(),
                 eq(WifiCallingSettingsForSub.REQUEST_CHECK_WFC_DISCLAIMER));
-        Intent intent = intentCaptor.getValue();
+        final Intent intent = intentCaptor.getValue();
         assertThat(intent.getStringExtra(EXTRA_SHOW_FRAGMENT))
                 .isEqualTo(WifiCallingDisclaimerFragment.class.getName());
     }
 
     @Test
     public void onActivityResult_finishWfcDisclaimerFragment_shouldLaunchCarrierActivity() {
-        ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
+        final ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
 
         // Emulate the WfcDisclaimerActivity finish.
         mFragment.onActivityResult(WifiCallingSettingsForSub.REQUEST_CHECK_WFC_DISCLAIMER,
@@ -308,7 +308,7 @@
         // Check the WFC emergency address activity is launched.
         verify(mFragment).startActivityForResult(intentCaptor.capture(),
                 eq(WifiCallingSettingsForSub.REQUEST_CHECK_WFC_EMERGENCY_ADDRESS));
-        Intent intent = intentCaptor.getValue();
+        final Intent intent = intentCaptor.getValue();
         assertEquals(intent.getComponent(), ComponentName.unflattenFromString(
                 TEST_EMERGENCY_ADDRESS_CARRIER_APP));
     }
diff --git a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java
index 644e5e8..a22a18d 100644
--- a/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/calling/WifiCallingSliceHelperTest.java
@@ -22,7 +22,6 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
@@ -32,6 +31,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.telephony.CarrierConfigManager;
+import android.telephony.ims.ImsMmTelManager;
 
 import androidx.slice.Slice;
 import androidx.slice.SliceItem;
@@ -44,7 +44,6 @@
 import androidx.slice.widget.SliceContent;
 import androidx.slice.widget.SliceLiveData;
 
-import com.android.ims.ImsConfig;
 import com.android.ims.ImsManager;
 import com.android.settings.R;
 import com.android.settings.slices.CustomSliceRegistry;
@@ -76,6 +75,9 @@
     @Mock
     private ImsManager mMockImsManager;
 
+    @Mock
+    private ImsMmTelManager mMockImsMmTelManager;
+
     private FakeWifiCallingSliceHelper mWfcSliceHelper;
     private SettingsSliceProvider mProvider;
     private SliceBroadcastReceiver mReceiver;
@@ -189,10 +191,10 @@
                 .thenReturn(mWfcSliceHelper);
         mWfcSliceHelper.setActivationAppIntent(null);
 
-        ArgumentCaptor<Boolean> mWfcSettingCaptor = ArgumentCaptor.forClass(Boolean.class);
+        final ArgumentCaptor<Boolean> mWfcSettingCaptor = ArgumentCaptor.forClass(Boolean.class);
 
         // turn on Wifi calling setting
-        Intent intent = new Intent(WifiCallingSliceHelper.ACTION_WIFI_CALLING_CHANGED);
+        final Intent intent = new Intent(WifiCallingSliceHelper.ACTION_WIFI_CALLING_CHANGED);
         intent.putExtra(EXTRA_TOGGLE_STATE, true);
 
         // change the setting
@@ -242,8 +244,8 @@
         when(mMockImsManager.isWfcProvisionedOnDevice()).thenReturn(true);
         when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true);
         when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true);
-        when(mMockImsManager.getWfcMode(false)).thenReturn(
-                ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED);
+        when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED);
         mWfcSliceHelper.setIsWifiCallingPrefEditable(true);
 
         final Slice slice = mWfcSliceHelper.createWifiCallingPreferenceSlice(
@@ -260,8 +262,8 @@
         when(mMockImsManager.isWfcProvisionedOnDevice()).thenReturn(true);
         when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true);
         when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true);
-        when(mMockImsManager.getWfcMode(false)).thenReturn(
-                ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED);
+        when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED);
         when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext))
                 .thenReturn(mWfcSliceHelper);
         mWfcSliceHelper.setIsWifiCallingPrefEditable(true);
@@ -279,25 +281,26 @@
         when(mMockImsManager.isWfcProvisionedOnDevice()).thenReturn(true);
         when(mMockImsManager.isWfcEnabledByUser()).thenReturn(true);
         when(mMockImsManager.isNonTtyOrTtyOnVolteEnabled()).thenReturn(true);
-        when(mMockImsManager.getWfcMode(false)).thenReturn(
-                ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED);
+        when(mMockImsMmTelManager.getVoWiFiModeSetting()).thenReturn(
+                ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED);
         when(mSlicesFeatureProvider.getNewWifiCallingSliceHelper(mContext))
                 .thenReturn(mWfcSliceHelper);
         mWfcSliceHelper.setIsWifiCallingPrefEditable(true);
 
-        ArgumentCaptor<Integer> mWfcPreferenceCaptor = ArgumentCaptor.forClass(Integer.class);
+        final ArgumentCaptor<Integer> mWfcPreferenceCaptor =
+                ArgumentCaptor.forClass(Integer.class);
 
         // Change preference to Cellular pref
-        Intent intent = new Intent(
+        final Intent intent = new Intent(
                 WifiCallingSliceHelper.ACTION_WIFI_CALLING_PREFERENCE_CELLULAR_PREFERRED);
 
         mReceiver.onReceive(mContext, intent);
 
-        verify((mMockImsManager)).setWfcMode(mWfcPreferenceCaptor.capture(), eq(false));
+        verify((mMockImsMmTelManager)).setVoWiFiModeSetting(mWfcPreferenceCaptor.capture());
 
         // assert the change
         assertThat(mWfcPreferenceCaptor.getValue()).isEqualTo(
-                ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED);
+                ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED);
     }
 
     private void testWifiCallingSettingsUnavailableSlice(Slice slice,
@@ -400,7 +403,7 @@
     private void assertTitle(List<SliceItem> sliceItems, String title) {
         boolean hasTitle = false;
         for (SliceItem item : sliceItems) {
-            List<SliceItem> titleItems = SliceQuery.findAll(item, FORMAT_TEXT, HINT_TITLE,
+            final List<SliceItem> titleItems = SliceQuery.findAll(item, FORMAT_TEXT, HINT_TITLE,
                     null /* non-hints */);
             if (titleItems == null) {
                 continue;
@@ -434,6 +437,11 @@
             return mMockImsManager;
         }
 
+        @Override
+        protected ImsMmTelManager getImsMmTelManager(int subId) {
+            return mMockImsMmTelManager;
+        }
+
         protected int getDefaultVoiceSubId() {
             return mSubId;
         }
diff --git a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
index 81ac064..3ba7738 100644
--- a/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/details/WifiDetailPreferenceControllerTest.java
@@ -69,8 +69,6 @@
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.R;
 import com.android.settings.Utils;
-import com.android.settings.core.FeatureFlags;
-import com.android.settings.development.featureflags.FeatureFlagPersistent;
 import com.android.settings.testutils.shadow.ShadowDevicePolicyManager;
 import com.android.settings.testutils.shadow.ShadowEntityHeaderController;
 import com.android.settings.widget.EntityHeaderController;
@@ -1131,24 +1129,7 @@
     }
 
     @Test
-    public void forgetNetwork_v1_Passpoint() {
-        setUpForConnectedNetwork();
-        FeatureFlagPersistent.setEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2, false);
-
-        mockWifiConfig.networkId = 5;
-        when(mockAccessPoint.isPasspoint()).thenReturn(true);
-        when(mockAccessPoint.getPasspointFqdn()).thenReturn(FQDN);
-
-        mController.displayPreference(mockScreen);
-        mForgetClickListener.getValue().onClick(null);
-
-        verify(mockWifiManager).removePasspointConfiguration(FQDN);
-        verify(mockMetricsFeatureProvider)
-                .action(mockActivity, MetricsProto.MetricsEvent.ACTION_WIFI_FORGET);
-    }
-
-    @Test
-    public void forgetNetwork_PasspointV2_shouldShowDialog() {
+    public void forgetNetwork_shouldShowDialog() {
         setUpForConnectedNetwork();
         final WifiDetailPreferenceController spyController = spy(mController);
 
@@ -1156,7 +1137,6 @@
         when(mockAccessPoint.isPasspoint()).thenReturn(true);
         when(mockAccessPoint.getPasspointFqdn()).thenReturn(FQDN);
         spyController.displayPreference(mockScreen);
-        FeatureFlagPersistent.setEnabled(mContext, FeatureFlags.NETWORK_INTERNET_V2, true);
 
         mForgetClickListener.getValue().onClick(null);
 
diff --git a/tests/unit/src/com/android/settings/core/PreferenceControllerContractTest.java b/tests/unit/src/com/android/settings/core/PreferenceControllerContractTest.java
index 3fcccf6..2d083f0 100644
--- a/tests/unit/src/com/android/settings/core/PreferenceControllerContractTest.java
+++ b/tests/unit/src/com/android/settings/core/PreferenceControllerContractTest.java
@@ -29,8 +29,8 @@
 
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settings.search.DatabaseIndexingUtils;
 import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.search.SearchIndexableData;
 import com.android.settingslib.search.SearchIndexableResources;
 
 import org.junit.Before;
@@ -60,10 +60,10 @@
         final SearchIndexableResources resources =
                 FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
                         .getSearchIndexableResources();
-        for (Class<?> clazz : resources.getProviderValues()) {
+        for (SearchIndexableData bundle : resources.getProviderValues()) {
 
             final BaseSearchIndexProvider provider =
-                    (BaseSearchIndexProvider) DatabaseIndexingUtils.getSearchIndexProvider(clazz);
+                    (BaseSearchIndexProvider) bundle.getSearchIndexProvider();
             if (provider == null) {
                 continue;
             }
diff --git a/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java b/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java
index 251c512..9ed1c91 100644
--- a/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java
+++ b/tests/unit/src/com/android/settings/core/UniquePreferenceTest.java
@@ -32,8 +32,8 @@
 
 import com.android.settings.core.PreferenceXmlParserUtils.MetadataFlag;
 import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.search.DatabaseIndexingUtils;
 import com.android.settingslib.search.Indexable;
+import com.android.settingslib.search.SearchIndexableData;
 import com.android.settingslib.search.SearchIndexableRaw;
 import com.android.settingslib.search.SearchIndexableResources;
 
@@ -120,8 +120,8 @@
         final SearchIndexableResources resources =
                 FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
                         .getSearchIndexableResources();
-        for (Class<?> clazz : resources.getProviderValues()) {
-            verifyPreferenceKeys(uniqueKeys, duplicatedKeys, nullKeyClasses, clazz);
+        for (SearchIndexableData SearchIndexableData : resources.getProviderValues()) {
+            verifyPreferenceKeys(uniqueKeys, duplicatedKeys, nullKeyClasses, SearchIndexableData);
         }
 
         if (!nullKeyClasses.isEmpty()) {
@@ -145,14 +145,12 @@
     }
 
     private void verifyPreferenceKeys(Set<String> uniqueKeys, Set<String> duplicatedKeys,
-            Set<String> nullKeyClasses, Class<?> clazz)
+            Set<String> nullKeyClasses, SearchIndexableData searchIndexableData)
             throws IOException, XmlPullParserException, Resources.NotFoundException {
-        if (clazz == null) {
-            return;
-        }
-        final String className = clazz.getName();
+
+        final String className = searchIndexableData.getTargetClass().getName();
         final Indexable.SearchIndexProvider provider =
-                DatabaseIndexingUtils.getSearchIndexProvider(clazz);
+                searchIndexableData.getSearchIndexProvider();
         final List<SearchIndexableRaw> rawsToIndex = provider.getRawDataToIndex(mContext, true);
         final List<SearchIndexableResource> resourcesToIndex =
                 provider.getXmlResourcesToIndex(mContext, true);
diff --git a/tests/unit/src/com/android/settings/core/UserRestrictionTest.java b/tests/unit/src/com/android/settings/core/UserRestrictionTest.java
index 0f5260a..e8e4927 100644
--- a/tests/unit/src/com/android/settings/core/UserRestrictionTest.java
+++ b/tests/unit/src/com/android/settings/core/UserRestrictionTest.java
@@ -33,8 +33,8 @@
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.search.DatabaseIndexingUtils;
 import com.android.settingslib.search.Indexable;
+import com.android.settingslib.search.SearchIndexableData;
 import com.android.settingslib.search.SearchIndexableResources;
 
 import com.google.android.collect.Sets;
@@ -84,22 +84,21 @@
         final SearchIndexableResources resources =
                 FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
                         .getSearchIndexableResources();
-        for (Class<?> clazz : resources.getProviderValues()) {
-            verifyUserRestriction(clazz);
+        for (SearchIndexableData bundle : resources.getProviderValues()) {
+            verifyUserRestriction(bundle);
         }
     }
 
-    private void verifyUserRestriction(Class<?> clazz)
+    private void verifyUserRestriction(SearchIndexableData searchIndexableData)
             throws IOException, XmlPullParserException, Resources.NotFoundException {
-        if (clazz == null) {
-            return;
-        }
-        final String className = clazz.getName();
+
         final Indexable.SearchIndexProvider provider =
-                DatabaseIndexingUtils.getSearchIndexProvider(clazz);
+                searchIndexableData.getSearchIndexProvider();
         final List<SearchIndexableResource> resourcesToIndex =
                 provider.getXmlResourcesToIndex(mContext, true);
 
+        final String className = searchIndexableData.getTargetClass().getName();
+
         if (resourcesToIndex == null) {
             Log.d(TAG, className + "is not providing SearchIndexableResource, skipping");
             return;
diff --git a/tests/unit/src/com/android/settings/slices/SliceDataContractTest.java b/tests/unit/src/com/android/settings/slices/SliceDataContractTest.java
index 7e5a8b0..61629e9 100644
--- a/tests/unit/src/com/android/settings/slices/SliceDataContractTest.java
+++ b/tests/unit/src/com/android/settings/slices/SliceDataContractTest.java
@@ -31,8 +31,8 @@
 
 import com.android.settings.core.PreferenceXmlParserUtils;
 import com.android.settings.overlay.FeatureFactory;
-import com.android.settings.search.DatabaseIndexingUtils;
 import com.android.settingslib.search.Indexable;
+import com.android.settingslib.search.SearchIndexableData;
 import com.android.settingslib.search.SearchIndexableResources;
 
 import org.junit.Before;
@@ -67,8 +67,8 @@
                 FeatureFactory.getFactory(mContext).getSearchFeatureProvider()
                         .getSearchIndexableResources();
 
-        for (Class<?> clazz : resources.getProviderValues()) {
-            verifyPreferenceTitle(nullTitleFragments, clazz);
+        for (SearchIndexableData SearchIndexableData : resources.getProviderValues()) {
+            verifyPreferenceTitle(nullTitleFragments, SearchIndexableData);
         }
 
         if (!nullTitleFragments.isEmpty()) {
@@ -82,14 +82,13 @@
         }
     }
 
-    private void verifyPreferenceTitle(Set<String> nullTitleFragments, Class<?> clazz)
+    private void verifyPreferenceTitle(Set<String> nullTitleFragments,
+            SearchIndexableData searchIndexableData)
             throws IOException, XmlPullParserException {
-        if (clazz == null) {
-            return;
-        }
-        final String className = clazz.getName();
+
+        final String className = searchIndexableData.getTargetClass().getName();
         final Indexable.SearchIndexProvider provider =
-                DatabaseIndexingUtils.getSearchIndexProvider(clazz);
+                searchIndexableData.getSearchIndexProvider();
 
         final List<SearchIndexableResource> resourcesToIndex =
                 provider.getXmlResourcesToIndex(mContext, true);
diff --git a/tests/unit/src/com/android/settings/wifi/WifiCallingSettingUiTest.java b/tests/unit/src/com/android/settings/wifi/WifiCallingSettingUiTest.java
index 3198914..c8a38f9 100644
--- a/tests/unit/src/com/android/settings/wifi/WifiCallingSettingUiTest.java
+++ b/tests/unit/src/com/android/settings/wifi/WifiCallingSettingUiTest.java
@@ -28,7 +28,6 @@
 import static org.hamcrest.CoreMatchers.anything;
 import static org.junit.Assert.assertEquals;
 import static org.junit.matchers.JUnitMatchers.containsString;
-import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.doReturn;
 
@@ -38,13 +37,13 @@
 import android.content.Intent;
 import android.support.test.uiautomator.UiDevice;
 import android.telephony.SubscriptionInfo;
+import android.telephony.ims.ImsMmTelManager;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.espresso.NoMatchingViewException;
 import androidx.test.espresso.ViewInteraction;
 import androidx.test.runner.AndroidJUnit4;
 
-import com.android.ims.ImsConfig;
 import com.android.ims.ImsManager;
 import com.android.internal.telephony.SubscriptionController;
 import com.android.settings.testutils.MockedServiceManager;
@@ -87,6 +86,10 @@
     ImsManager mImsManager0;
     @Mock
     ImsManager mImsManager1;
+    @Mock
+    ImsMmTelManager mImsMmTelManager0;
+    @Mock
+    ImsMmTelManager mImsMmTelManager1;
 
     @Before
     public void setUp() throws Exception {
@@ -134,10 +137,10 @@
     public void testSingleSimUi() throws InterruptedException {
         configureSingleSim();
         doReturn(true).when(mImsManager0).isWfcEnabledByUser();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
-                .when(mImsManager0).getWfcMode();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
-                .when(mImsManager0).getWfcMode(anyBoolean());
+        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+                .when(mImsMmTelManager0).getVoWiFiModeSetting();
+        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+                .when(mImsMmTelManager0).getVoWiFiRoamingModeSetting();
 
         mInstrumentation.startActivitySync(createActivityIntent());
 
@@ -179,10 +182,10 @@
         doReturn(false).when(mImsManager1).isWfcEnabledByPlatform();
         doReturn(false).when(mImsManager1).isNonTtyOrTtyOnVolteEnabled();
         doReturn(false).when(mImsManager0).isWfcEnabledByUser();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
-                .when(mImsManager0).getWfcMode();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
-                .when(mImsManager0).getWfcMode(anyBoolean());
+        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+                .when(mImsMmTelManager0).getVoWiFiModeSetting();
+        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+                .when(mImsMmTelManager0).getVoWiFiRoamingModeSetting();
 
         Activity activity = mInstrumentation.startActivitySync(createActivityIntent());
 
@@ -198,10 +201,10 @@
     public void testWfcDisabled() throws InterruptedException {
         configureSingleSim();
         doReturn(false).when(mImsManager0).isWfcEnabledByUser();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
-                .when(mImsManager0).getWfcMode();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.WIFI_PREFERRED)
-                .when(mImsManager0).getWfcMode(anyBoolean());
+        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+                .when(mImsMmTelManager0).getVoWiFiModeSetting();
+        doReturn(ImsMmTelManager.WIFI_MODE_WIFI_PREFERRED)
+                .when(mImsMmTelManager0).getVoWiFiRoamingModeSetting();
 
         Activity activity = mInstrumentation.startActivitySync(createActivityIntent());
 
@@ -218,10 +221,10 @@
         configureDualSim();
         doReturn(true).when(mImsManager0).isWfcEnabledByUser();
         doReturn(false).when(mImsManager1).isWfcEnabledByUser();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED)
-                .when(mImsManager0).getWfcMode();
-        doReturn(ImsConfig.WfcModeFeatureValueConstants.CELLULAR_PREFERRED)
-                .when(mImsManager0).getWfcMode(anyBoolean());
+        doReturn(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED)
+                .when(mImsMmTelManager0).getVoWiFiModeSetting();
+        doReturn(ImsMmTelManager.WIFI_MODE_CELLULAR_PREFERRED)
+                .when(mImsMmTelManager0).getVoWiFiRoamingModeSetting();
 
         mInstrumentation.startActivitySync(createActivityIntent());
 
@@ -256,6 +259,7 @@
                 com.android.settings.Settings.WifiCallingSettingsActivity.class);
         intent.setPackage("com.android.settings");
         intent.setAction("android.intent.action.MAIN");
+        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         return intent;
     }
 
