Merge "Implement advanced device battery prediction"
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c1d6a58..0c4183d 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -422,7 +422,7 @@
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
android:value="true" />
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
- android:value="com.android.settings.network.ApnSettings" />
+ android:value="com.android.settings.network.apn.ApnSettings" />
</activity>
<!-- Keep compatibility with old shortcuts. -->
@@ -511,6 +511,11 @@
</intent-filter>
</activity>
+ <activity android:name=".network.telephony.ToggleSubscriptionDialogActivity"
+ android:exported="false"
+ android:permission="android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS"
+ android:theme="@style/Transparent" />
+
<activity
android:name="Settings$TetherSettingsActivity"
android:label="@string/tether_settings_title_all"
@@ -1998,7 +2003,7 @@
<data android:mimeType="vnd.android.cursor.dir/telephony-carrier" />
</intent-filter>
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
- android:value="com.android.settings.network.ApnEditor" />
+ android:value="com.android.settings.network.apn.ApnEditor" />
</activity>
<activity
diff --git a/OWNERS b/OWNERS
index 47961cd..cc683ce 100644
--- a/OWNERS
+++ b/OWNERS
@@ -2,6 +2,7 @@
android-settings-core-eng+gerrit@google.com
# People who can approve changes for submission
+arcwang@google.com
chiujason@google.com
edgarwang@google.com
emilychuang@google.com
diff --git a/color-check-baseline.xml b/color-check-baseline.xml
index 22b9ad4..b138082 100644
--- a/color-check-baseline.xml
+++ b/color-check-baseline.xml
@@ -265,8 +265,8 @@
priority="4"
summary="Using hardcoded color"
explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.
This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
- errorLine1=" <color name="notification_history_background">#5F6368</color>"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+ errorLine1=" <color name="notification_history_background">#202124</color>"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values-night/colors.xml"
line="30"
@@ -1325,7 +1325,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="137"
+ line="138"
column="5"/>
</issue>
@@ -1341,7 +1341,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="138"
+ line="139"
column="5"/>
</issue>
@@ -1357,7 +1357,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="139"
+ line="140"
column="5"/>
</issue>
@@ -1373,7 +1373,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="148"
+ line="149"
column="5"/>
</issue>
@@ -1389,7 +1389,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="150"
+ line="151"
column="5"/>
</issue>
@@ -1405,7 +1405,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="154"
+ line="155"
column="5"/>
</issue>
@@ -1421,7 +1421,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="155"
+ line="156"
column="5"/>
</issue>
@@ -1437,7 +1437,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="156"
+ line="157"
column="5"/>
</issue>
@@ -1453,7 +1453,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="157"
+ line="158"
column="5"/>
</issue>
@@ -1469,7 +1469,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="158"
+ line="159"
column="5"/>
</issue>
@@ -1485,7 +1485,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="159"
+ line="160"
column="5"/>
</issue>
@@ -1501,7 +1501,23 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="160"
+ line="161"
+ column="5"/>
+ </issue>
+
+ <issue
+ id="HardCodedColor"
+ severity="Error"
+ message="Avoid using hardcoded color"
+ category="Correctness"
+ priority="4"
+ summary="Using hardcoded color"
+ explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.
This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+ errorLine1=" <color name="palette_list_color_gray">#80868b</color> <!-- Material Gray 600 -->"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="res/values/colors.xml"
+ line="162"
column="5"/>
</issue>
@@ -1517,7 +1533,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="163"
+ line="165"
column="5"/>
</issue>
@@ -1533,7 +1549,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="164"
+ line="166"
column="5"/>
</issue>
@@ -1549,7 +1565,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="165"
+ line="167"
column="5"/>
</issue>
@@ -1565,7 +1581,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="166"
+ line="168"
column="5"/>
</issue>
@@ -1581,7 +1597,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="167"
+ line="169"
column="5"/>
</issue>
@@ -1597,7 +1613,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="168"
+ line="170"
column="5"/>
</issue>
@@ -1613,7 +1629,23 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="169"
+ line="171"
+ column="5"/>
+ </issue>
+
+ <issue
+ id="HardCodedColor"
+ severity="Error"
+ message="Avoid using hardcoded color"
+ category="Correctness"
+ priority="4"
+ summary="Using hardcoded color"
+ explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.
This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+ errorLine1=" <color name="palette_list_dark_mode_color_gray">#dadce0</color> <!-- Material Gray 300 -->"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="res/values/colors.xml"
+ line="172"
column="5"/>
</issue>
@@ -1629,7 +1661,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="172"
+ line="175"
column="5"/>
</issue>
@@ -1645,7 +1677,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="173"
+ line="176"
column="5"/>
</issue>
@@ -1661,7 +1693,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="174"
+ line="177"
column="5"/>
</issue>
@@ -1677,7 +1709,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="175"
+ line="178"
column="5"/>
</issue>
@@ -1693,7 +1725,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="176"
+ line="179"
column="5"/>
</issue>
@@ -1709,7 +1741,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="177"
+ line="180"
column="5"/>
</issue>
@@ -1725,7 +1757,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="180"
+ line="183"
column="5"/>
</issue>
@@ -1741,7 +1773,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="181"
+ line="184"
column="5"/>
</issue>
@@ -1757,7 +1789,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="182"
+ line="185"
column="5"/>
</issue>
@@ -1773,7 +1805,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="183"
+ line="186"
column="5"/>
</issue>
@@ -1789,7 +1821,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="184"
+ line="187"
column="5"/>
</issue>
@@ -1805,7 +1837,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/colors.xml"
- line="185"
+ line="188"
column="5"/>
</issue>
@@ -2361,6 +2393,38 @@
priority="4"
summary="Using hardcoded color"
explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.
This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+ errorLine1=" android:color="@color/homepage_generic_icon_background" />"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="res/drawable/ic_homepage_night_display.xml"
+ line="24"
+ column="13"/>
+ </issue>
+
+ <issue
+ id="HardCodedColor"
+ severity="Error"
+ message="Avoid using hardcoded color"
+ category="Correctness"
+ priority="4"
+ summary="Using hardcoded color"
+ explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.
This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+ errorLine1=" android:color="@color/homepage_generic_icon_background" />"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="res/drawable/ic_homepage_notification.xml"
+ line="24"
+ column="13"/>
+ </issue>
+
+ <issue
+ id="HardCodedColor"
+ severity="Error"
+ message="Avoid using hardcoded color"
+ category="Correctness"
+ priority="4"
+ summary="Using hardcoded color"
+ explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.
This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
errorLine1=" android:color="@color/homepage_privacy_background" />"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -2473,38 +2537,6 @@
priority="4"
summary="Using hardcoded color"
explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.
This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
- errorLine1=" android:color="@color/homepage_generic_icon_background" />"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="res/drawable/ic_homepage_night_display.xml"
- line="24"
- column="13"/>
- </issue>
-
- <issue
- id="HardCodedColor"
- severity="Error"
- message="Avoid using hardcoded color"
- category="Correctness"
- priority="4"
- summary="Using hardcoded color"
- explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.
This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
- errorLine1=" android:color="@color/homepage_generic_icon_background" />"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="res/drawable/ic_homepage_notification.xml"
- line="24"
- column="13"/>
- </issue>
-
- <issue
- id="HardCodedColor"
- severity="Error"
- message="Avoid using hardcoded color"
- category="Correctness"
- priority="4"
- summary="Using hardcoded color"
- explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.
This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
errorLine1=" android:color="@color/notification_block_color"/>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
@@ -3033,27 +3065,11 @@
priority="4"
summary="Using hardcoded color"
explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.
This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
- errorLine1=" <string name="sync_plug" msgid="7956982719077985381">""<font fgcolor="#ffffffff">"Welcome to Google sync!"</font>" \nA Google approach to syncing data to allow access to your contacts, appointments, and more from wherever you are."</string>"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~">
- <location
- file="res/values-en-rXC/strings.xml"
- line="2763"
- column="170"/>
- </issue>
-
- <issue
- id="HardCodedColor"
- severity="Error"
- message="Avoid using hardcoded color"
- category="Correctness"
- priority="4"
- summary="Using hardcoded color"
- explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.
This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
errorLine1=" <string name="sync_plug" msgid="7956982719077985381"><font fgcolor="#ffffffff">"Welcome to Google sync!"</font>" \nA Google approach to syncing data to allow access to your contacts, appointments and more from wherever you are."</string>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
<location
file="res/values-en-rAU/strings.xml"
- line="2765"
+ line="2793"
column="64"/>
</issue>
@@ -3069,7 +3085,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
<location
file="res/values-en-rCA/strings.xml"
- line="2765"
+ line="2793"
column="64"/>
</issue>
@@ -3085,7 +3101,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
<location
file="res/values-en-rGB/strings.xml"
- line="2765"
+ line="2793"
column="64"/>
</issue>
@@ -3101,7 +3117,7 @@
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
<location
file="res/values-en-rIN/strings.xml"
- line="2765"
+ line="2793"
column="64"/>
</issue>
@@ -3113,11 +3129,27 @@
priority="4"
summary="Using hardcoded color"
explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.
This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
+ errorLine1=" <string name="sync_plug" msgid="7956982719077985381">""<font fgcolor="#ffffffff">"Welcome to Google sync!"</font>" \nA Google approach to syncing data to allow access to your contacts, appointments, and more from wherever you are."</string>"
+ errorLine2=" ~~~~~~~~~~~~~~~~~~~">
+ <location
+ file="res/values-en-rXC/strings.xml"
+ line="2793"
+ column="170"/>
+ </issue>
+
+ <issue
+ id="HardCodedColor"
+ severity="Error"
+ message="Avoid using hardcoded color"
+ category="Correctness"
+ priority="4"
+ summary="Using hardcoded color"
+ explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.
This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
errorLine1=" <string name="sync_plug"><font fgcolor="#ffffffff">Welcome to Google sync!</font>"
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
<location
file="res/values/strings.xml"
- line="6408"
+ line="6463"
column="36"/>
</issue>
@@ -3133,7 +3165,7 @@
errorLine2=" ^">
<location
file="res/values/styles.xml"
- line="202"
+ line="201"
column="41"/>
</issue>
@@ -3149,7 +3181,7 @@
errorLine2=" ^">
<location
file="res/values/styles.xml"
- line="417"
+ line="428"
column="44"/>
</issue>
@@ -3165,7 +3197,7 @@
errorLine2=" ^">
<location
file="res/values/styles.xml"
- line="423"
+ line="434"
column="44"/>
</issue>
@@ -3181,7 +3213,7 @@
errorLine2=" ^">
<location
file="res/values/styles.xml"
- line="424"
+ line="435"
column="44"/>
</issue>
@@ -3197,7 +3229,7 @@
errorLine2=" ^">
<location
file="res/values/styles.xml"
- line="460"
+ line="471"
column="34"/>
</issue>
@@ -3465,22 +3497,6 @@
priority="4"
summary="Using hardcoded color"
explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.
This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
- errorLine1=" android:background="@color/divider_color" />"
- errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
- <location
- file="res/layout/user_info_header.xml"
- line="128"
- column="11"/>
- </issue>
-
- <issue
- id="HardCodedColor"
- severity="Error"
- message="Avoid using hardcoded color"
- category="Correctness"
- priority="4"
- summary="Using hardcoded color"
- explanation="Hardcoded color values are bad because theme changes cannot be uniformly applied.Instead use the theme specific colors such as `?android:attr/textColorPrimary` in attributes.
This ensures that a theme change from a light to a dark theme can be uniformlyapplied across the app."
errorLine1=" android:background="@color/gestures_setting_background_color""
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
<location
diff --git a/res/layout/edit_user_info_dialog_content.xml b/res/layout/edit_user_info_dialog_content.xml
deleted file mode 100644
index 2bd464b..0000000
--- a/res/layout/edit_user_info_dialog_content.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<!--
- Copyright (C) 2013 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"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:baselineAligned="false"
- android:padding="16dip">
-
- <ImageView
- android:id="@+id/user_photo"
- android:layout_width="56dip"
- android:layout_height="56dip"
- android:layout_gravity="bottom"
- android:contentDescription="@string/user_image_photo_selector"
- android:background="@*android:drawable/spinner_background_holo_dark"
- android:scaleType="fitCenter"/>
-
- <EditText
- android:id="@+id/user_name"
- android:layout_width="0dip"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom"
- android:layout_weight="1"
- android:layout_marginStart="6dp"
- android:minHeight="@dimen/min_tap_target_size"
- android:ellipsize="end"
- android:singleLine="true"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textAlignment="viewStart"
- android:inputType="text|textCapWords"
- android:selectAllOnFocus="true"
- android:hint="@string/user_nickname"
- android:maxLength="100"/>
-
-</LinearLayout>
diff --git a/res/layout/restricted_popup_menu_item.xml b/res/layout/restricted_popup_menu_item.xml
deleted file mode 100644
index 636e3f9..0000000
--- a/res/layout/restricted_popup_menu_item.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-** Copyright 2016, 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.
-*/
--->
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="?android:attr/listPreferredItemHeightSmall"
- android:gravity="center_vertical"
- android:paddingStart="16dip"
- android:paddingEnd="16dip">
- <TextView
- android:id="@+id/text"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textColor="?android:attr/textColorAlertDialogListItem"
- android:textAppearance="?android:attr/textAppearanceListItemSmall"
- android:ellipsize="marquee"
- android:layout_alignParentLeft="true" />
- <ImageView
- android:id="@+id/restricted_icon"
- android:layout_width="@*android:dimen/config_restrictedIconSize"
- android:layout_height="@*android:dimen/config_restrictedIconSize"
- android:scaleType="centerInside"
- android:tint="?android:attr/colorAccent"
- android:src="@*android:drawable/ic_info"
- android:layout_alignParentRight="true"
- android:visibility="gone" />
-</RelativeLayout>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 7f256df..f36cef9 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Voer \'n geldige deurgangadres in."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Voer \'n geldige DNS-adres in."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Voer \'n netwerkvoorvoegsel in met lengte tussen 0 en 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Deurgang"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Lengte van netwerkvoorvoegsel"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Onbeskikbaar wanneer gekoppel aan <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Sien meer"</string>
<string name="see_less" msgid="2642392725363552793">"Sien minder"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Skakel <xliff:g id="CARRIER_NAME">%1$s</xliff:g> af?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Skakel SIM af?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Skakel tans SIM af <xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Kan nie diensverskaffer deaktiveer nie"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Iets was fout en jou diensverskaffer kon nie gedeaktiveer word nie."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Koppel aan toestel"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g>-program wil \'n tydelike Wi‑Fi-netwerk gebruik om aan jou toestel te koppel"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Geen toestelle gekry nie. Maak seker dat toestelle aangeskakel is en beskikbaar is om te koppel."</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index ed2d3ca..05a7c9e 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"እባክህ ትክክለኛ ኣግባቢ ፍኖት አድራሻ ተይብ።"</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"እባክህ ትክክለኛ dns አድራሻ ተይብ።"</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"እባክህ በ0 እና 32 መካከል የአውታረ መረብ ቅድመ ቅጥያ ርዝመት ተይብ።"</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"መውጫ"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"የአውታረ መረብ ቅድመ ቅጥያ ርዝመት"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"ከ<xliff:g id="CARRIER">%1$s</xliff:g> ጋር ሲገናኝ የማይገኝ"</string>
<string name="see_more" msgid="7499355691042812723">"ተጨማሪ ይመልከቱ"</string>
<string name="see_less" msgid="2642392725363552793">"ያነሰ ይመልከቱ"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> ይጥፋ?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"ሲም ይጥፋ?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"ሲምን በማጥፋት ላይ<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"አገልግሎት አቅራቢን ማሰናከል አልተቻለም"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"የሆነ ችግር ተፈጥሯል፣ እና የእርስዎ አገልግሎት አቅራቢ ሊሰናከል አልቻለም።"</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"ከመሣሪያ ጋር ያገናኙ"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"የ<xliff:g id="APPNAME">%1$s</xliff:g> መተግበሪያ ከመሣሪያዎ ጋር ለመገናኘት ጊዜያዊ የWi‑Fi አውታረ መረብን መጠቀም ይፈልጋል"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"ምንም መሣሪያዎች አልተገኙም መሣሪያዎች እንደበሩ እና ለመገናኘት የሚገኝ መሆኑን ያረጋግጡ።"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 7003f0d..6b32af7 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -1110,8 +1110,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"اكتب عنوان بوابة صالحًا."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"اكتب عنوان نظام أسماء نطاقات صالحًا."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"اكتب بادئة شبكة يترواح طولها بين 0 و32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"نظام أسماء النطاقات 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"نظام أسماء النطاقات 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"البوابة"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"طول بادئة الشبكة"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"اتصال Wi-Fi مباشر"</string>
@@ -4001,7 +4003,7 @@
<string name="zen_mode_media_list_first" msgid="7824427062528618442">"الوسائط"</string>
<string name="zen_mode_system" msgid="7301665021634204942">"أصوات اللمس"</string>
<string name="zen_mode_system_summary" msgid="7225581762792177522">"الأصوات من لوحة المفاتيح والأزرار الأخرى"</string>
- <string name="zen_mode_system_list" msgid="2256218792042306434">"أصوات اللمس"</string>
+ <string name="zen_mode_system_list" msgid="2256218792042306434">"اللمس"</string>
<string name="zen_mode_system_list_first" msgid="8590078626001067855">"اللمس"</string>
<string name="zen_mode_reminders" msgid="1970224691551417906">"التذكيرات"</string>
<string name="zen_mode_reminders_summary" msgid="3961627037429412382">"من المهام والتنبيهات"</string>
@@ -5157,6 +5159,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"عدم التوفُّر عند الربط بمشغّل شبكة الجوّال <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"عرض المزيد"</string>
<string name="see_less" msgid="2642392725363552793">"عرض عناصر أقل"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"هل تريد إيقاف <xliff:g id="CARRIER_NAME">%1$s</xliff:g>؟"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"هل تريد إيقاف شريحة SIM؟"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"جارٍ إيقاف شريحة SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"يتعذّر إيقاف مشغِّل شبكة الجوّال"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"حدث خطأ ما أدى إلى تعذُّر إيقاف مشغِّل شبكة الجوّال."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"الاتصال بالجهاز"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"يريد تطبيق <xliff:g id="APPNAME">%1$s</xliff:g> استخدام شبكة Wi‑Fi مؤقتة للاتصال بجهازك."</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"لم يتمّ العثور على أيّ أجهزة. تأكَّد من تشغيل الأجهزة وتوفّرها للاتصال."</string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index bfc050f..95874b3 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -1030,8 +1030,8 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"এটা মান্য গেইটৱে\' ঠিকনা টাইপ কৰক"</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"এটা মান্য ডিএনএছ ঠিকনা লিখক।"</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"০ আৰু ৩২ ৰ মাজৰ দৈৰ্ঘ্যৰ এটা নেটৱৰ্ক প্ৰিফিক্স টাইপ কৰক।"</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"ডিএনএছ ১"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"ডিএনএছ ২"</string>
+ <string name="wifi_dns1" msgid="6764769531843748514">"DNS ১ (যদিহে ব্যক্তিগত DNSএ অ’ভাৰৰাইড কৰা নাই)"</string>
+ <string name="wifi_dns2" msgid="7273133202625326148">"DNS ২ (যদিহে ব্যক্তিগত DNSএ অ’ভাৰৰাইড কৰা নাই)"</string>
<string name="wifi_gateway" msgid="3699227808616416759">"গেইটৱে\'"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"নেটৱৰ্ক প্ৰিফিক্সৰ দীঘ"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"ৱাই-ফাই ডাইৰেক্ট"</string>
@@ -1970,7 +1970,7 @@
<string name="app_disable_dlg_positive" msgid="1414218905322009505">"এপ্ অক্ষম কৰক"</string>
<string name="app_disable_dlg_text" msgid="2449382902751908916">"আপুনি যদি এই এপ্টো অক্ষম কৰে, তেন্তে Android আৰু অন্য এপ্সমূহে বিচৰাৰ দৰে কাম নকৰিব পাৰে। মনত ৰাখিব, আপুনি এই এপ্টো মচিব নোৱাৰে কাৰণ এইটো আপোনাৰ ডিভাইচত আগৰেপৰা ইনষ্টল কৰি থোৱা আছে। অক্ষম কৰি আপুনি এই এপ্টো অফ কৰে আৰু ইয়াক আপোনাৰ ডিভাইচৰপৰা লুকুৱায়।"</string>
<string name="app_disable_notifications_dlg_title" msgid="6686569904059411780">"জাননীসমুহ অফ কৰিবনে?"</string>
- <string name="app_install_details_group_title" msgid="1172114479073704677">"ষ্ট’ৰ"</string>
+ <string name="app_install_details_group_title" msgid="1172114479073704677">"Store"</string>
<string name="app_install_details_title" msgid="7783556181897142187">"এপ্ৰ সবিশেষ"</string>
<string name="app_install_details_summary" msgid="2013043219249992373">"<xliff:g id="APP_STORE">%1$s</xliff:g>ৰ পৰা এপ্ ইনষ্টল কৰা হৈছে"</string>
<string name="instant_app_details_summary" msgid="417197491598208216">"<xliff:g id="APP_STORE">%1$s</xliff:g>ত আৰু অধিক তথ্য"</string>
@@ -4833,6 +4833,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g>ৰ সৈতে সংযোগ কৰিলে উপলব্ধ নহয়"</string>
<string name="see_more" msgid="7499355691042812723">"অধিক চাওক"</string>
<string name="see_less" msgid="2642392725363552793">"কমকৈ চাওক"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> অফ কৰিবনে?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"ছিম অফ কৰিবনে?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"ছিম অফ কৰি থকা হৈছে<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"বাহকক অক্ষম কৰিব নোৱাৰি"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"কিবা ভুল হ’ল আৰু সেয়ে আপোনাৰ বাহকক অক্ষম কৰিব পৰা নগ’ল।"</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"ডিভাইচৰ সৈতে সংযোগ কৰক"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> এপ্টোৱে আপোনাৰ ডিভাইচটোৰ সৈতে সংযোগ কৰিবলৈ এটা অস্থায়ী ৱাই-ফাই নেটৱৰ্ক ব্যৱহাৰ কৰিব বিচাৰিছে"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"কোনো ডিভাইচ বিচাৰি পোৱা নগ’ল। ডিভাইচ যাতে অন হৈ থাকে আৰু সংযোগ কৰিব পৰাকৈ উপলব্ধ থাকে সেইয়া নিশ্চিত কৰক।"</string>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 07bc0cb..a6a812e 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Düzgün Şlüz ünvanı yazın."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Düzgün DNS ünvanı yazın."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 və 32 uzunluqlu şəbəkə prefiks daxil edin"</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Keçid"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Şəbəkə prefiks uzunluğu"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g> ünvanına qoşulduqda əlçatan deyil"</string>
<string name="see_more" msgid="7499355691042812723">"Ətraflı"</string>
<string name="see_less" msgid="2642392725363552793">"Baxışı kiçildin"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> deaktiv edilsin?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"SIM deaktiv edilsin?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM deaktiv edilir<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Operatoru deaktiv etmək mümkün deyil"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Xəta baş verdi və operatoru deaktiv etmək mümkün olmadı."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Cihaza qoşulun"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> cihazınıza qoşulmaq üçün müvəqqəti Wi‑Fi şəbəkəsindən istifadə etmək istəyir"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Cihaz tapılmadı. Cihazların aktiv olması və qoşulmaq üçün əlçatan olmasından əmin olun."</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index de9834a..282ade1 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -1050,8 +1050,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Unesite važeću adresu mrežnog prolaza."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Unesite važeću DNS adresu."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Unesite prefiks mreže dužine između 0 i 32 znaka."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Mrežni prolaz"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Dužina prefiksa mreže"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -1823,10 +1825,10 @@
<string name="lockpassword_forgot_password" msgid="5730587692489737223">"Zaboravili ste lozinku?"</string>
<string name="lockpassword_forgot_pattern" msgid="1196116549051927516">"Zaboravili ste šablon?"</string>
<string name="lockpassword_forgot_pin" msgid="7164232234705747672">"Zaboravili ste PIN?"</string>
- <string name="lockpassword_confirm_your_pattern_generic" msgid="7692794426682501482">"Upotrebite šablon za uređaj da biste nastavili"</string>
+ <string name="lockpassword_confirm_your_pattern_generic" msgid="7692794426682501482">"Koristite šablon za uređaj da biste nastavili"</string>
<string name="lockpassword_confirm_your_pin_generic" msgid="9206928587904701094">"Unesite PIN uređaja da biste nastavili"</string>
<string name="lockpassword_confirm_your_password_generic" msgid="2616127423884477152">"Unesite lozinku uređaja da biste nastavili"</string>
- <string name="lockpassword_confirm_your_pattern_generic_profile" msgid="9110305410672321714">"Upotrebite šablon za poslovni profil da biste nastavili"</string>
+ <string name="lockpassword_confirm_your_pattern_generic_profile" msgid="9110305410672321714">"Koristite šablon za poslovni profil da biste nastavili"</string>
<string name="lockpassword_confirm_your_pin_generic_profile" msgid="6524208128570235127">"Unesite PIN za poslovni profil da biste nastavili"</string>
<string name="lockpassword_confirm_your_password_generic_profile" msgid="5918738487760814147">"Unesite lozinku za poslovni profil da biste nastavili"</string>
<string name="lockpassword_strong_auth_required_device_pattern" msgid="113817518413715557">"Radi veće bezbednosti koristite šablon za uređaj"</string>
@@ -4914,6 +4916,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Nedostupno kada je uspostavljena veza sa operaterom <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Prikaži još"</string>
<string name="see_less" msgid="2642392725363552793">"Prikaži manje"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Želite li da isključite uslugu <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Želite li da isključite SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM se isključuje<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Onemogućavanje mobilnog operatera nije uspelo"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Došlo je do greške i onemogućavanje mobilnog operatera nije uspelo."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Povežite se sa uređajem"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Aplikacija <xliff:g id="APPNAME">%1$s</xliff:g> želi da koristi privremenu Wi‑Fi mrežu da bi se povezala sa uređajem"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Nije pronađen nijedan uređaj Proverite da li je uređaj uključen i dostupan za povezivanje."</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index a7adb00..a0840d2 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -1070,8 +1070,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Увядзіце сапраўдны адрас шлюза."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Увядзіце сапраўдны адрас DNS."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Увядзіце даўжыню сеткавага прэфікса ад 0 і 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Шлюз"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Даўжыня прэфікса сеткі"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4995,6 +4997,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Недаступна праз аператара \"<xliff:g id="CARRIER">%1$s</xliff:g>\""</string>
<string name="see_more" msgid="7499355691042812723">"Яшчэ"</string>
<string name="see_less" msgid="2642392725363552793">"Паказаць менш"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Адключыць аператара \"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>\"?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Адключыць SIM-карту?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Адключаецца SIM-карта<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Не ўдалося адключыць аператара"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Нешта пайшло не так. Не ўдалося адключыць вашага аператара."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Падключыць да прылады"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Праграма \"<xliff:g id="APPNAME">%1$s</xliff:g>\" запытвае дазвол на часовае выкарыстанне сеткі Wi‑Fi для падключэння да вашай прылады"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Прылады не знойдзены. Пераканайцеся, што прылады ўключаны і даступныя для падключэння."</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index a58ff92..e41b8d1 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Въведете валиден адрес за шлюз."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Въведете валиден адрес за DNS."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Въведете дължина на мреж. префикс между 0 и 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Шлюз"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Дължина на мрежов префикс"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Не е налице, когато е установена връзка с(ъс) <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Вижте още"</string>
<string name="see_less" msgid="2642392725363552793">"Преглед на по-малко"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Да се изключи ли <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Да се изключи ли SIM картата?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM картата се изключва<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Операторът не може да бъде деактивиран"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Нещо се обърка и операторът ви не бе деактивиран."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Свързване с устройство"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Приложението <xliff:g id="APPNAME">%1$s</xliff:g> иска да използва временна Wi-Fi мрежа, за да се свърже с устройството ви"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Няма намерени устройства. Уверете се, че устройствата са включени и налице за свързване."</string>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 1eda730..16681c1 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"একটি বৈধ গেটওয়ে ঠিকানা টাইপ করুন।"</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"একটি বৈধ DNS ঠিকানা টাইপ করুন।"</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"০ এবং ৩২ এর মধ্যে একটি নেটওয়ার্ক প্রিফিক্স দৈর্ঘ্য টাইপ করুন।"</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"গেটওয়ে"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"নেটওয়ার্ক প্রিফিক্স দৈর্ঘ্য"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"ওয়াই-ফাই ডাইরেক্ট"</string>
@@ -1970,7 +1972,7 @@
<string name="app_disable_dlg_positive" msgid="1414218905322009505">"অ্যাপ্লিকেশান অক্ষম করুন"</string>
<string name="app_disable_dlg_text" msgid="2449382902751908916">"আপনি এই অ্যাপ বন্ধ করে দিলে, Android এবং অন্যান্য অ্যাপ যেভাবে কাজ করার কথা সেইভাবে আর নাও কাজ করতে পারে। মনে রাখবেন যে এই অ্যাপ আপনার ডিভাইসে আগে থেকেই ইনস্টল করা আছে বলে এটি আপনি মুছে ফেলতে পারবেন না। বন্ধ করার মাধ্যমে, আপনি অ্যাপটিকে বন্ধ করে লুকিয়ে রাখতে পারেন।"</string>
<string name="app_disable_notifications_dlg_title" msgid="6686569904059411780">"বিজ্ঞপ্তিগুলি বন্ধ করবেন?"</string>
- <string name="app_install_details_group_title" msgid="1172114479073704677">"স্টোর"</string>
+ <string name="app_install_details_group_title" msgid="1172114479073704677">"Store"</string>
<string name="app_install_details_title" msgid="7783556181897142187">"অ্যাপের বিশদ বিবরণ"</string>
<string name="app_install_details_summary" msgid="2013043219249992373">"অ্যাপটিকে <xliff:g id="APP_STORE">%1$s</xliff:g> থেকে ইনস্টল করা হয়েছে"</string>
<string name="instant_app_details_summary" msgid="417197491598208216">"<xliff:g id="APP_STORE">%1$s</xliff:g> সম্পর্কে আরও তথ্য"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g>-এ কনেক্ট থাকলে উপলভ্য থাকে না"</string>
<string name="see_more" msgid="7499355691042812723">"আরও দেখুন"</string>
<string name="see_less" msgid="2642392725363552793">"কম দেখুন"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> পরিষেবা বন্ধ করতে চান?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"সিম বন্ধ করতে চান?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"সিম বন্ধ করা হচ্ছে<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"পরিষেবা প্রদানকারীকে বন্ধ করা যাবে না"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"কোনও সমস্যা হয়েছে এবং আপনার পরিষেবা প্রদানকারীর পরিষেবা বন্ধ করা যায়নি।"</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"ডিভাইসে কানেক্ট করুন"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"আপনার ডিভাইসে কানেক্ট করার জন্য <xliff:g id="APPNAME">%1$s</xliff:g> অ্যাপ সাময়িকভাবে একটি ওয়াই-ফাই নেটওয়ার্ক ব্যবহার করতে চায়"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"কোনও ডিভাইস খুঁজে পাওয়া যায়নি। ডিভাইস চালু আছে এবং কানেক্ট করার জন্য তৈরি কিনা তা ভাল করে দেখে নিন।"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 48d8e36..8dd4703 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -420,9 +420,9 @@
<string name="lock_screen_intro_skip_dialog_text_frp" product="tablet" msgid="1570832293693405757">"Funkcije za zaštitu uređaja neće se uključiti. Nećete moći spriječiti druge osobe da koriste ovaj tablet ako ga izgubite, ako vam ga ukradu ili ga vratite na početne postavke."</string>
<string name="lock_screen_intro_skip_dialog_text_frp" product="device" msgid="4618501606519351904">"Funkcije za zaštitu uređaja neće se uključiti. Nećete moći spriječiti druge osobe da koriste ovaj uređaj ako ga izgubite, ako vam ga ukradu ili ga vratite na početne postavke."</string>
<string name="lock_screen_intro_skip_dialog_text_frp" product="default" msgid="2412426429887900241">"Funkcije za zaštitu uređaja neće se uključiti. Nećete moći spriječiti druge osobe da koriste ovaj telefon ako ga izgubite, ako vam ga ukradu ili ga vratite na početne postavke."</string>
- <string name="lock_screen_intro_skip_dialog_text" product="tablet" msgid="7119039592587429936">"Funkcije za zaštitu uređaja neće se uključiti. Nećete moći spriječiti druge osobe da koriste ovaj tablet ako ga izgubite ili vam ga ukradu."</string>
- <string name="lock_screen_intro_skip_dialog_text" product="device" msgid="3365990364131398523">"Funkcije za zaštitu uređaja neće se uključiti. Nećete moći spriječiti druge osobe da koriste ovaj uređaj ako ga izgubite ili vam ga ukradu."</string>
- <string name="lock_screen_intro_skip_dialog_text" product="default" msgid="4908278819257287536">"Funkcije za zaštitu uređaja neće se uključiti. Nećete moći spriječiti druge osobe da koriste ovaj telefon ako ga izgubite ili vam ga ukradu."</string>
+ <string name="lock_screen_intro_skip_dialog_text" product="tablet" msgid="7119039592587429936">"Funkcije za zaštitu uređaja neće se uključiti. Nećete moći spriječiti druge osobe da koriste ovaj tablet ako ga izgubite ili ga neko ukrade."</string>
+ <string name="lock_screen_intro_skip_dialog_text" product="device" msgid="3365990364131398523">"Funkcije za zaštitu uređaja neće se uključiti. Nećete moći spriječiti druge osobe da koriste ovaj uređaj ako ga izgubite ili ga neko ukrade."</string>
+ <string name="lock_screen_intro_skip_dialog_text" product="default" msgid="4908278819257287536">"Funkcije za zaštitu uređaja neće se uključiti. Nećete moći spriječiti druge osobe da koriste ovaj telefon ako ga izgubite ili ga neko ukrade."</string>
<string name="skip_anyway_button_label" msgid="3442274117023270068">"Ipak preskoči"</string>
<string name="go_back_button_label" msgid="6139455414099035594">"Nazad"</string>
<string name="skip_lock_screen_dialog_button_label" msgid="641984698150020591">"Preskoči"</string>
@@ -442,15 +442,15 @@
<string name="security_settings_fingerprint_enroll_enrolling_skip" msgid="3004786457919122854">"Uradit ću to kasnije"</string>
<string name="setup_fingerprint_enroll_enrolling_skip_title" msgid="352947044008973812">"Preskočiti postavljanje otiska prsta?"</string>
<string name="setup_fingerprint_enroll_enrolling_skip_message" msgid="4876965433600560365">"Odabrali ste da koristite otisak prsta kao jedan od načina za otključavanja telefona. Ukoliko sada preskočite ovaj korak, morat ćete ga postaviti kasnije. Postavka traje otprilike samo jednu minutu."</string>
- <string name="fingerprint_lock_screen_setup_skip_dialog_text" product="tablet" msgid="6901147203720764421">"Zaštitite tablet zaključavanjem ekrana da ga niko ne može koristiti ako ga izgubite ili vam ga ukradu. Zaključavanje ekrana vam je potrebno i za postavljanje otiska prsta. Dodirnite Otkaži, a zatim postavite PIN, uzorak ili lozinku."</string>
- <string name="fingerprint_lock_screen_setup_skip_dialog_text" product="device" msgid="1286244133923093528">"Zaštitite uređaj zaključavanjem ekrana da ga niko ne može koristiti ako ga izgubite ili vam ga ukradu. Zaključavanje ekrana vam je potrebno i za postavljanje otiska prsta. Dodirnite Otkaži, a zatim postavite PIN, uzorak ili lozinku."</string>
- <string name="fingerprint_lock_screen_setup_skip_dialog_text" product="default" msgid="4810191157587317521">"Zaštitite telefon zaključavanjem ekrana da ga niko ne može koristiti ako ga izgubite ili vam ga ukradu. Zaključavanje ekrana vam je potrebno i za postavljanje otiska prsta. Dodirnite Otkaži, a zatim postavite PIN, uzorak ili lozinku."</string>
- <string name="face_lock_screen_setup_skip_dialog_text" product="tablet" msgid="7387535629289108475">"Kada zaštitite tablet opcijom zaključavanja ekrana, niko ga neće moći koristiti u slučaju da ga izgubite ili ako vam ga neko ukrade. Zaključavanje ekrana vam je potrebno i za postavljanje otključavanja licem. Da se vratite, dodirnite Otkaži."</string>
- <string name="face_lock_screen_setup_skip_dialog_text" product="device" msgid="4995287019957131123">"Kada zaštitite uređaj opcijom zaključavanja ekrana, niko ga neće moći koristiti u slučaju da ga izgubite ili ako vam ga neko ukrade. Zaključavanje ekrana vam je potrebno i za postavljanje otključavanja licem. Da se vratite, dodirnite Otkaži."</string>
- <string name="face_lock_screen_setup_skip_dialog_text" product="default" msgid="7086796722966738156">"Kada zaštitite telefon opcijom zaključavanja ekrana, niko ga neće moći koristiti u slučaju da ga izgubite ili ako vam ga neko ukrade. Zaključavanje ekrana vam je potrebno i da postavite otključavanja licem. Da se vratite, dodirnite Otkaži."</string>
- <string name="biometrics_lock_screen_setup_skip_dialog_text" product="tablet" msgid="3943278149639587227">"Kada zaštitite tablet opcijom zaključavanja ekrana, niko ga neće moći koristiti u slučaju da ga izgubite ili ga neko ukrade. Opcija zaključavanja ekrana vam treba i da postavite biometriku. Da se vratite, dodirnite Otkaži."</string>
- <string name="biometrics_lock_screen_setup_skip_dialog_text" product="device" msgid="5424064454068220988">"Kada zaštitite uređaj opcijom zaključavanja ekrana, niko ga neće moći koristiti u slučaju da ga izgubite ili ga neko ukrade. Opcija zaključavanja ekrana vam treba i da postavite biometriku. Da se vratite, dodirnite Otkaži."</string>
- <string name="biometrics_lock_screen_setup_skip_dialog_text" product="default" msgid="5668256546179188638">"Kada zaštitite telefon opcijom zaključavanja ekrana, niko ga neće moći koristiti u slučaju da ga izgubite ili ga neko ukrade. Opcija zaključavanja ekrana vam treba i da postavite biometriku. Da se vratite, dodirnite Otkaži."</string>
+ <string name="fingerprint_lock_screen_setup_skip_dialog_text" product="tablet" msgid="6901147203720764421">"Zaštitite tablet zaključavanjem ekrana da ga niko ne može koristiti ako ga izgubite ili ga neko ukrade. Zaključavanje ekrana vam je potrebno i za postavljanje otiska prsta. Dodirnite Otkaži, a zatim postavite PIN, uzorak ili lozinku."</string>
+ <string name="fingerprint_lock_screen_setup_skip_dialog_text" product="device" msgid="1286244133923093528">"Zaštitite uređaj zaključavanjem ekrana da ga niko ne može koristiti ako ga izgubite ili ga neko ukrade. Zaključavanje ekrana vam je potrebno i za postavljanje otiska prsta. Dodirnite Otkaži, a zatim postavite PIN, uzorak ili lozinku."</string>
+ <string name="fingerprint_lock_screen_setup_skip_dialog_text" product="default" msgid="4810191157587317521">"Zaštitite telefon zaključavanjem ekrana da ga niko ne može koristiti ako ga izgubite ili ga neko ukrade. Zaključavanje ekrana vam je potrebno i za postavljanje otiska prsta. Dodirnite Otkaži, a zatim postavite PIN, uzorak ili lozinku."</string>
+ <string name="face_lock_screen_setup_skip_dialog_text" product="tablet" msgid="7387535629289108475">"Kada zaštitite tablet opcijom zaključavanja ekrana, niko ga neće moći koristiti u slučaju da ga izgubite ili ga neko ukrade. Zaključavanje ekrana vam je potrebno i za postavljanje otključavanja licem. Da se vratite, dodirnite Otkaži."</string>
+ <string name="face_lock_screen_setup_skip_dialog_text" product="device" msgid="4995287019957131123">"Kada zaštitite uređaj opcijom zaključavanja ekrana, niko ga neće moći koristiti u slučaju da ga izgubite ili ga neko ukrade. Zaključavanje ekrana vam je potrebno i za postavljanje otključavanja licem. Da se vratite, dodirnite Otkaži."</string>
+ <string name="face_lock_screen_setup_skip_dialog_text" product="default" msgid="7086796722966738156">"Kada zaštitite telefon opcijom zaključavanja ekrana, niko ga neće moći koristiti u slučaju da ga izgubite ili ga neko ukrade. Zaključavanje ekrana vam je potrebno i da postavite otključavanja licem. Da se vratite, dodirnite Otkaži."</string>
+ <string name="biometrics_lock_screen_setup_skip_dialog_text" product="tablet" msgid="3943278149639587227">"Kada zaštitite tablet opcijom zaključavanja ekrana, niko ga neće moći koristiti u slučaju da ga izgubite ili ga neko ukrade. Opcija zaključavanja ekrana vam treba i da postavite biometriju. Da se vratite, dodirnite Otkaži."</string>
+ <string name="biometrics_lock_screen_setup_skip_dialog_text" product="device" msgid="5424064454068220988">"Kada zaštitite uređaj opcijom zaključavanja ekrana, niko ga neće moći koristiti u slučaju da ga izgubite ili ga neko ukrade. Opcija zaključavanja ekrana vam treba i da postavite biometriju. Da se vratite, dodirnite Otkaži."</string>
+ <string name="biometrics_lock_screen_setup_skip_dialog_text" product="default" msgid="5668256546179188638">"Kada zaštitite telefon opcijom zaključavanja ekrana, niko ga neće moći koristiti u slučaju da ga izgubite ili ga neko ukrade. Opcija zaključavanja ekrana vam treba i da postavite biometriju. Da se vratite, dodirnite Otkaži."</string>
<string name="lock_screen_pin_skip_title" msgid="6853866579893458111">"Preskočiti postavljanje PIN-a?"</string>
<string name="lock_screen_password_skip_title" msgid="8891463713793185768">"Preskočiti postavljanje lozinke?"</string>
<string name="lock_screen_pattern_skip_title" msgid="7214938393640060932">"Preskočiti postavljanje uzorka?"</string>
@@ -1050,8 +1050,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Unesite važeću adresu pristupnika."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Unesite važeću DNS adresu."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Unesite dužinu mrežnog prefiksa između 0 i 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Pristupnik"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Dužina prefiksa mreže"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"WiFi Direct"</string>
@@ -4914,6 +4916,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Nedostupno kada ste povezani s operaterom <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Pogledajte više"</string>
<string name="see_less" msgid="2642392725363552793">"Prikaži manje"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Isključiti operatera <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Isključiti SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Isključivanje SIM-a<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Nismo mogli onemogućiti operatera"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Nešto nije uredu i nismo mogli onemogućiti vašeg operatera."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Povezivanje s uređajem"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Aplikacija <xliff:g id="APPNAME">%1$s</xliff:g> želi koristiti privremenu WiFi mrežu da se poveže s vašim uređajem"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Nije pronađen nijedan uređaj Provjerite jesu li uređaji uključeni i dostupni za povezivanje."</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index b155a06..7f54dcf 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Escriu una adreça de passarel·la vàlida."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Escriu una adreça DNS vàlida."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Escriu una longitud de prefix de xarxa entre 0 i 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Passarel·la"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Longitud de prefix de xarxa"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -2129,7 +2131,7 @@
<string name="experimental_category_title" msgid="898904396646344152">"Experimental"</string>
<string name="feature_flags_dashboard_title" msgid="348990373716658289">"Marques de funcions"</string>
<string name="talkback_title" msgid="8756080454514251327">"Talkback"</string>
- <string name="talkback_summary" msgid="5820927220378864281">"Lector de pantalla destinat principalment a persones invidents i amb problemes de visió"</string>
+ <string name="talkback_summary" msgid="5820927220378864281">"Lector de pantalla destinat principalment a persones invidents i amb poca visió"</string>
<string name="select_to_speak_summary" msgid="1995285446766920925">"Toca els elements de la pantalla per sentir-los en veu alta"</string>
<string name="accessibility_captioning_title" msgid="4561871958958925225">"Preferències dels subtítols"</string>
<string name="accessibility_screen_magnification_title" msgid="1211169976144629087">"Ampliació"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"No està disponible quan està connectat a <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Mostra\'n més"</string>
<string name="see_less" msgid="2642392725363552793">"Mostra\'n menys"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Vols desactivar <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Vols desactivar la SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"S\'està desactivant la SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"No es pot desactivar l\'operador"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"S\'ha produït un error i no s\'ha pogut desactivar l\'operador."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Connexió al dispositiu"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"L\'aplicació <xliff:g id="APPNAME">%1$s</xliff:g> vol fer servir una xarxa Wi‑Fi temporal per connectar-se al teu dispositiu"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"No s\'ha trobat cap dispositiu. Comprova que els dispositius estiguin activats i disponibles per connectar-s\'hi."</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index d7147da..71da1b9 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -1070,8 +1070,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Zadejte prosím platnou adresu brány."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Zadejte prosím platnou adresu DNS."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Zadejte prosím délku síťové předpony v rozsahu 0 až 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"Server DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"Server DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Brána"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Délka síťové předpony"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4995,6 +4997,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Při připojení k operátorovi <xliff:g id="CARRIER">%1$s</xliff:g> nedostupné"</string>
<string name="see_more" msgid="7499355691042812723">"Zobrazit další"</string>
<string name="see_less" msgid="2642392725363552793">"Zobrazit méně"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Vypnout operátora <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Vypnout SIM kartu?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Vypínání SIM karty<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Operátora nelze deaktivovat"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Něco se pokazilo a deaktivace operátora se nezdařila."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Připojení k zařízení"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Aplikace <xliff:g id="APPNAME">%1$s</xliff:g> chce za účelem připojení k zařízení použít dočasnou síť Wi-Fi"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Nebyla nalezena žádná zařízení. Zajistěte, aby zařízení byla zapnutá a dostupná k připojení."</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 6eac90f..07dbd9d 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Angiv en gyldig gatewayadresse."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Angiv en gyldig DNS-adresse."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Angiv gyldigt netværkspræfiks på 0-32 tegn."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Længde på netværkspræfiks"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Utilgængelig ved forbindelse til <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Se mere"</string>
<string name="see_less" msgid="2642392725363552793">"Se mindre"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Vil du deaktivere <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Vil du deaktivere SIM-kortet?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Deaktiverer SIM-kort<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Mobilselskabet kan ikke deaktiveres"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Noget gik galt, og dit mobilselskab kunne ikke deaktiveres."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Opret forbindelse til enheden"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Appen <xliff:g id="APPNAME">%1$s</xliff:g> vil gerne have midlertidig adgang til dit Wi-Fi-netværk for at oprette forbindelse til din enhed"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Der blev ikke fundet nogen enheder. Sørg for, at enhederne er tændt, og at der kan oprettes forbindelse til dem."</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index d15e52c..daefa65 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -1031,8 +1031,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Gib eine gültige Gateway-Adresse ein."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Gib eine gültige DNS-Adresse ein."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Netzwerkpräfix darf maximal 32 Zeichen enthalten."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Länge d. Netzwerkpräfixes"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4834,6 +4836,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Bei Verbindung mit <xliff:g id="CARRIER">%1$s</xliff:g> nicht verfügbar"</string>
<string name="see_more" msgid="7499355691042812723">"Mehr anzeigen"</string>
<string name="see_less" msgid="2642392725363552793">"Weniger anzeigen"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> deaktivieren?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"SIM deaktivieren?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM wird deaktiviert<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Mobilfunkanbieter kann nicht deaktiviert werden"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Ein Problem ist aufgetreten. Dein Mobilfunkanbieter konnte nicht deaktiviert werden."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Mit Gerät verbinden"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Die App \"<xliff:g id="APPNAME">%1$s</xliff:g>\" möchte sich über ein temporäres WLAN mit deinem Gerät verbinden"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Keine Geräte gefunden. Achte darauf, dass die Geräte eingeschaltet und zur Verbindung bereit sind."</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 77f3f08..4bc47fa 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Πληκτρολογήστε μια έγκυρη διεύθυνση πύλης."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Πληκτρολογήστε μια έγκυρη διεύθυνση DNS."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Εισαγάγετε το μήκος προθέματος δικτύου από 0 έως 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Πύλη"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Μήκος προθέματος δικτύου"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Δεν διατίθεται κατά τη σύνδεση σε <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Δείτε περισσότερα"</string>
<string name="see_less" msgid="2642392725363552793">"Εμφάνιση λιγότερων"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Απενεργοποίηση <xliff:g id="CARRIER_NAME">%1$s</xliff:g>;"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Απενεργοποίηση SIM;"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Απενεργοποίηση SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Δεν είναι δυνατή η απενεργοποίηση της εταιρείας κινητής τηλεφωνίας"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Παρουσιάστηκε κάποιο πρόβλημα και δεν ήταν δυνατή η απενεργοποίηση της εταιρείας κινητής τηλεφωνίας σας."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Σύνδεση με τη συσκευή"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Η εφαρμογή <xliff:g id="APPNAME">%1$s</xliff:g> θέλει να χρησιμοποιήσει ένα προσωρινό δίκτυο Wi‑Fi για να συνδεθεί στη συσκευή σας."</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Δεν βρέθηκαν συσκευές. Βεβαιωθείτε ότι οι συσκευές είναι ενεργοποιημένες και διαθέσιμες για σύνδεση."</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 1fe807d..1c99341 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -1030,8 +1030,8 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Please type a valid gateway address."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Type a valid DNS address."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Type a network prefix length between 0 and 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (unless overridden by private DNS)"</string>
+ <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (unless overridden by private DNS)"</string>
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Network prefix length"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4833,6 +4833,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Unavailable when connected to <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"See more"</string>
<string name="see_less" msgid="2642392725363552793">"See less"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Turn off <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Turn off SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Turning off SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Can\'t disable operator"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Something went wrong and your operator could not be disabled."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Connect to device"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> app wants to use a temporary Wi‑Fi network to connect to your device"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"No devices found. Make sure that devices are turned on and available to connect."</string>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index d34fd5a..72c830e 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -237,7 +237,7 @@
<string name="settings_shortcut" msgid="8548239727871847171">"Settings shortcut"</string>
<string name="airplane_mode" msgid="3196085857882526817">"Airplane mode"</string>
<string name="wireless_networks_settings_title" msgid="8557542379234105369">"Wireless & networks"</string>
- <string name="radio_controls_summary" msgid="9028430178697624501">"Manage Wi‑Fi, Bluetooth, airplane mode, mobile networks, & VPNs"</string>
+ <string name="radio_controls_summary" msgid="9028430178697624501">"Manage Wi‑Fi, Bluetooth, Airplane mode, mobile networks and VPNs"</string>
<string name="cellular_data_summary" msgid="6551434804367912367">"Allow data usage over mobile network"</string>
<string name="allow_data_usage_title" msgid="2645963379925196671">"Allow data usage when roaming"</string>
<string name="roaming" msgid="3055365654530847985">"Roaming"</string>
@@ -1030,8 +1030,8 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Please type a valid gateway address."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Type a valid DNS address."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Type a network prefix length between 0 and 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (unless overridden by private DNS)"</string>
+ <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (unless overridden by private DNS)"</string>
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Network prefix length"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -1739,8 +1739,8 @@
<string name="location_street_level" product="tablet" msgid="865953107414742784">"Let apps use GPS on your tablet to pinpoint your location"</string>
<string name="location_street_level" product="default" msgid="3813836654645896185">"Let apps use GPS on your phone to pinpoint your location"</string>
<string name="assisted_gps" msgid="1714546606018821498">"Use assisted GPS"</string>
- <string name="assisted_gps_enabled" msgid="6220188450779319248">"Use server to assist GPS (un-tick to reduce network usage)"</string>
- <string name="assisted_gps_disabled" msgid="1062496503892849">"Use server to assist GPS (un-tick to improve GPS performance)"</string>
+ <string name="assisted_gps_enabled" msgid="6220188450779319248">"Use server to assist GPS (uncheck to reduce network usage)"</string>
+ <string name="assisted_gps_disabled" msgid="1062496503892849">"Use server to assist GPS (uncheck to improve GPS performance)"</string>
<string name="use_location_title" msgid="1345594777162897654">"Location & Google search"</string>
<string name="use_location_summary" msgid="377322574549729921">"Let Google use your location to improve search results and other services"</string>
<string name="location_access_title" msgid="4052667453826272040">"Access to my location"</string>
@@ -4833,6 +4833,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Unavailable when connected to <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"See more"</string>
<string name="see_less" msgid="2642392725363552793">"See less"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Turn off <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Turn off SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Turning off SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Can\'t disable operator"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Something went wrong and your operator could not be disabled."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Connect to device"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> app wants to use a temporary Wi‑Fi network to connect to your device"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"No devices found. Make sure that devices are turned on and available to connect."</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 153f0d0..5d257b5 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -1030,8 +1030,8 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Please type a valid gateway address."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Type a valid DNS address."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Type a network prefix length between 0 and 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (unless overridden by private DNS)"</string>
+ <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (unless overridden by private DNS)"</string>
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Network prefix length"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4833,6 +4833,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Unavailable when connected to <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"See more"</string>
<string name="see_less" msgid="2642392725363552793">"See less"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Turn off <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Turn off SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Turning off SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Can\'t disable operator"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Something went wrong and your operator could not be disabled."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Connect to device"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> app wants to use a temporary Wi‑Fi network to connect to your device"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"No devices found. Make sure that devices are turned on and available to connect."</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 311af7c..26f4c8f 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -1030,8 +1030,8 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Please type a valid gateway address."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Type a valid DNS address."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Type a network prefix length between 0 and 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (unless overridden by private DNS)"</string>
+ <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (unless overridden by private DNS)"</string>
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Network prefix length"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4833,6 +4833,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Unavailable when connected to <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"See more"</string>
<string name="see_less" msgid="2642392725363552793">"See less"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Turn off <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Turn off SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Turning off SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Can\'t disable operator"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Something went wrong and your operator could not be disabled."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Connect to device"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> app wants to use a temporary Wi‑Fi network to connect to your device"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"No devices found. Make sure that devices are turned on and available to connect."</string>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index be8a42c..5462a8c 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -1030,8 +1030,8 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Type a valid gateway address."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Type a valid DNS address."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Type a network prefix length between 0 and 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (unless overridden by Private DNS)"</string>
+ <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (unless overridden by Private DNS)"</string>
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Network prefix length"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4833,6 +4833,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Unavailable when connected to <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"See more"</string>
<string name="see_less" msgid="2642392725363552793">"See less"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Turn off <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Turn off SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Turning off SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Can\'t disable carrier"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Something went wrong and your carrier could not be disabled."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Connect to device"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> app wants to use a temporary Wi‑Fi network to connect to your device"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"No devices found. Make sure devices are turned on and available to connect."</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index f20ce64..d92ed2e 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Escribe una dirección de puerta de enlace válida."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Escribe una dirección DNS válida."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Escribe una longitud de prefijo de red entre 0 y 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Puerta de enlace"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Longitud de prefijo de red"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi directo"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"No está disponible cuando estás conectado a <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Ver más"</string>
<string name="see_less" msgid="2642392725363552793">"Ver menos"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"¿Quieres desactivar <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"¿Quieres desactivar la tarjeta SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Desactivando SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"No se puede inhabilitar el proveedor"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Se produjo un error y no se pudo inhabilitar tu proveedor."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Conectar al dispositivo"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"La app de <xliff:g id="APPNAME">%1$s</xliff:g> quiere usar una red Wi-Fi temporal para conectarse a tu dispositivo"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"No se encontraron dispositivos. Asegúrate de que los dispositivos estén encendidos y puedan conectarse."</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 98c1803..c9519a7 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Introduce una dirección de puerta de enlace válida."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Introduce una dirección DNS válida."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Introduce un prefijo de red que tenga entre 0 y 32 caracteres."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Puerta de enlace"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Longitud del prefijo de red"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -2712,7 +2714,7 @@
<string name="privacy_settings_title" msgid="6437057228255974577">"Copia de seguridad"</string>
<string name="backup_summary_state_on" msgid="9018954639693085240">"Activada"</string>
<string name="backup_summary_state_off" msgid="5341339397224835909">"Desactivada"</string>
- <string name="backup_section_title" msgid="6539706829848457794">"Copia de seguridad"</string>
+ <string name="backup_section_title" msgid="6539706829848457794">"Copia de seguridad y restauración"</string>
<string name="personal_data_section_title" msgid="6368610168625722682">"Datos personales"</string>
<string name="backup_data_title" msgid="507663517227498525">"Copia de seguridad de mis datos"</string>
<string name="backup_data_summary" msgid="8054551085241427531">"Crear copia de seguridad de los datos de las aplicaciones, las contraseñas de redes Wi-Fi y otros ajustes en los servidores de Google"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"No está disponible cuando se está conectado a <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Ver más"</string>
<string name="see_less" msgid="2642392725363552793">"Ver menos"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"¿Desactivar <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"¿Desactivar tarjeta SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Desactivando tarjeta SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"No se ha podido inhabilitar el operador"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Se ha producido un error y no se ha podido inhabilitar tu operador."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Conectar a dispositivo"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"La aplicación <xliff:g id="APPNAME">%1$s</xliff:g> quiere usar una red Wi-Fi temporal para conectarse a tu dispositivo"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"No se ha encontrado ningún dispositivo. Comprueba que estén encendidos y listos para conectarse."</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 056eccb..e8afea6 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Sisestage kehtiv lüüsi aadress."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Sisestage kehtiv DNS-aadress."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Sisestage võrgu eesliide pikkusega 0 kuni 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Lüüs"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Võrgu prefiksi pikkus"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"WiFi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Pole saadaval, kui on ühendus on loodud operaatoriga <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Kuva rohkem"</string>
<string name="see_less" msgid="2642392725363552793">"Kuva vähem"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Kas lülitada <xliff:g id="CARRIER_NAME">%1$s</xliff:g> välja?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Kas lülitada SIM-kaart välja?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM-kaardi väljalülitamine <xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Operaatorit ei saa keelata"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Midagi läks valesti ja teie operaatorit ei saanud keelata."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Seadmega ühendamine"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Rakendus <xliff:g id="APPNAME">%1$s</xliff:g> soovib kasutada ajutist WiFi-võrku, et teie seadmega ühendus luua"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Seadmeid ei leitud. Veenduge, et seadmed oleksid sisse lülitatud ja ühendamiseks saadaval."</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 4425917..3a3d050 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Idatzi baliozko atebide-helbidea."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Idatzi baliozko DNS helbidea."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Idatzi 0 eta 32 karaktere arteko sare-aurrizkia."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Atebidea"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Sare-aurrizkiaren luzera"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Ez dago erabilgarri <xliff:g id="CARRIER">%1$s</xliff:g> operadorera konektatuta egoteagatik"</string>
<string name="see_more" msgid="7499355691042812723">"Ikusi gehiago"</string>
<string name="see_less" msgid="2642392725363552793">"Ikusi gutxiago"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> desaktibatu nahi duzu?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"SIM txartela desaktibatu nahi duzu?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM txartela desaktibatzen<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Ezin da desgaitu operadorea"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Arazoren bat izan da, eta ezin izan da desgaitu operadorea."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Konektatu gailura"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> aplikazioak aldi baterako wifi-sare bat erabili nahi du zure gailura konektatzeko"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Ez da aurkitu gailurik. Ziurtatu gailuak piztuta daudela eta konekta daitezkeela."</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index c9cdd04..0515836 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"یک آدرس دروازه معتبر را تایپ کنید."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"یک آدرس DNS معتبر را تایپ کنید."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"یک پیشوند شبکه با طول بین 0 تا 32 نویسه تایپ کنید."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"دروازه"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"طول پیشوند شبکه"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"اتصال مستقیم Wi-Fi"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"هنگام اتصال به <xliff:g id="CARRIER">%1$s</xliff:g>، دردسترس نیست"</string>
<string name="see_more" msgid="7499355691042812723">"موارد بیشتر"</string>
<string name="see_less" msgid="2642392725363552793">"مشاهده موارد کمتر"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> خاموش شود؟"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"سیمکارت خاموش شود؟"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"خاموش کردن سیمکارت<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"شرکت مخابراتی غیرفعال نشد"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"مشکلی پیش آمد و شرکت مخابراتیتان غیرفعال نشد."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"اتصال به دستگاه"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"برنامه <xliff:g id="APPNAME">%1$s</xliff:g> برای اتصال به دستگاهتان میخواهد از شبکه Wi-Fi موقت استفاده کند"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"دستگاهی پیدا نشد. مطمئن شوید دستگاهها روشن و برای اتصال دردسترس هستند."</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 77643c7..844a3a8 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Anna kelvollinen yhdyskäytävän osoite."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Anna kelvollinen nimipalvelun osoite."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Anna verkon etuliite, jonka pituus on välillä 0–32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Yhdyskäytävä"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Verkon etuliitteen pituus"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Ei käytettävissä <xliff:g id="CARRIER">%1$s</xliff:g> ‑käytön aikana"</string>
<string name="see_more" msgid="7499355691042812723">"Lisää"</string>
<string name="see_less" msgid="2642392725363552793">"Näytä vähemmän"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Laitetaanko <xliff:g id="CARRIER_NAME">%1$s</xliff:g> pois päältä?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Laitetaanko SIM-kortti pois päältä?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Laitetaan SIM-korttia pois päältä<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Operaattoria ei voi poistaa käytöstä"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Jotain meni pieleen. Operaattoria ei voitu poistaa käytöstä."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Laitteeseen yhdistäminen"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> haluaa käyttää väliaikaista Wi-Fi-verkkoa laitteeseen yhdistämiseksi"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Laitteita ei löytynyt. Varmista, että laitteet ovat päällä ja voivat muodostaa yhteyden."</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 52aa7fb..37b4370 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -1030,8 +1030,8 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Saisissez une adresse de passerelle valide."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Saisissez une adresse DNS correcte."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Le préfixe réseau doit être compris entre 0 et 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (sauf si un DNS privé ignore ce paramètre)"</string>
+ <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (sauf si un DNS privé ignore ce paramètre)"</string>
<string name="wifi_gateway" msgid="3699227808616416759">"Passerelle"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Longueur préfixe réseau"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4833,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Indisponible lorsque vous êtes connectés au réseau de <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"En voir plus"</string>
<string name="see_less" msgid="2642392725363552793">"En voir moins"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Désactiver <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Désactiver la carte SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Désactivation de la carte SIM en cours<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Impossible de désactiver le fournisseur de services"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Une erreur s\'est produite et le fournisseur de services n\'a pas pu être désactivé."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Se connecter à l’appareil"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"L\'application <xliff:g id="APPNAME">%1$s</xliff:g> souhaite utiliser un réseau Wi‑Fi temporaire pour se connecter à votre appareil"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Aucun appareil trouvé. Assurez-vous que l\'appareil est allumé et prêt à se connecter."</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 1b1c00c..843331c 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Saisissez une adresse de passerelle valide."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Saisissez une adresse DNS correcte."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Le préfixe réseau doit être compris entre 0 et 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Passerelle"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Longueur du préfixe réseau"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Indisponible lorsque connecté à <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Voir plus"</string>
<string name="see_less" msgid="2642392725363552793">"Moins de détails"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Désactiver <xliff:g id="CARRIER_NAME">%1$s</xliff:g> ?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Désactiver la carte SIM ?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Désactivation de la carte SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Impossible de désactiver l\'opérateur"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Un problème a empêché l\'appareil de désactiver votre opérateur."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Connexion à l\'appareil"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"L\'application <xliff:g id="APPNAME">%1$s</xliff:g> souhaite utiliser un réseau Wi‑Fi temporaire pour établir la connexion à votre appareil"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Aucun appareil trouvé. Assurez-vous que des appareils soient activés et prêts à être connectés."</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 8ee73e1..81d85b0 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Escribe un enderezo de pasarela válido."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Escribe un enderezo DNS válido."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Escribe un prefixo de rede con lonxitude de 0-32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Pasarela"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Lonxitude prefixo de rede"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Non dispoñible cando o dispositivo está conectado a <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Ver máis"</string>
<string name="see_less" msgid="2642392725363552793">"Ver menos"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Queres desactivar <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Queres desactivar a SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Desactivando SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Non se puido desactivar o operador"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Produciuse un erro e non se puido desactivar o operador."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Conectar co dispositivo"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"A aplicación <xliff:g id="APPNAME">%1$s</xliff:g> quere utilizar unha rede wifi temporal para conectar co teu dispositivo"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Non se atoparon dispositivos. Asegúrate de que estean activados e dispoñibles para a conexión."</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 8ce1e73..edfc3ad 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"એક માન્ય ગેટવે સરનામું લખો."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"એક માન્ય DNS સરનામું લખો."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 અને 32 વચ્ચે એક નેટવર્ક પ્રીફિક્સ લંબાઈ લખો."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"ગેટવે"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"નેટવર્ક પ્રીફિક્સ લંબાઈ"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"વાઇ-ફાઇ ડાઇરેક્ટ"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"જ્યારે <xliff:g id="CARRIER">%1$s</xliff:g> સાથે કનેક્ટ થયેલ હોય, ત્યારે ઉપલબ્ધ નથી"</string>
<string name="see_more" msgid="7499355691042812723">"વધુ જુઓ"</string>
<string name="see_less" msgid="2642392725363552793">"ઓછું જુઓ"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>ને બંધ કરીએ?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"સિમ કાર્ડ બંધ કરીએ?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"સિમ કાર્ડ બંધ કરી રહ્યાં છીએ<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"મોબાઇલ ઑપરેટરને બંધ કરી શકાતા નથી"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"કંઈક ખોટું થયું હતું અને તમારા મોબાઇલ ઑપરેટરને બંધ કરી શક્યાં નથી."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"ડિવાઇસ સાથે કનેક્ટ કરો"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> ઍપ તમારા ડિવાઇસ સાથે કનેક્ટ થવા માટે હંગામી વાઇ-ફાઇ નેટવર્કનો ઉપયોગ કરવા માગે છે"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"કોઈ ડિવાઇસ મળ્યું નથી. ખાતરી કરો કે ડિવાઇસ ચાલુ છે અને કનેક્ટ કરવા માટે ઉપલબ્ધ છે."</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index c9fd6ef..faa2b85 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -982,7 +982,7 @@
<string name="lost_internet_access_switch" msgid="7935665847081706202">"मोबाइल पर स्विच करें"</string>
<string name="lost_internet_access_cancel" msgid="1981171269794585284">"वाई-फ़ाई पर रहें"</string>
<string name="lost_internet_access_persist" msgid="6813604557672782197">"फिर कभी ना दिखाएं"</string>
- <string name="wifi_connect" msgid="2481467560349907397">"जोड़ दें"</string>
+ <string name="wifi_connect" msgid="2481467560349907397">"कनेक्ट करें"</string>
<string name="wifi_turned_on_message" msgid="8069855406962662881">"वाई-फ़ाई चालू किया गया"</string>
<string name="wifi_connected_to_message" msgid="8976048616505112896">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> से कनेक्ट किया गया"</string>
<string name="wifi_connecting_to_message" msgid="3153205024060064551">"<xliff:g id="NETWORK_NAME">%1$s</xliff:g> से कनेक्ट हो रहा है"</string>
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"कोई मान्य गेटवे पता लिखें."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"कोई मान्य DNS पता लिखें."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 और 32 के बीच की लंबाई का नेटवर्क उपसर्ग लिखें."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"गेटवे"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"नेटवर्क उपसर्ग लंबाई"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"वाई-फ़ाई डायरेक्ट"</string>
@@ -3597,12 +3599,12 @@
<string name="notification_app_switch_label" msgid="4422902423925084193">"<xliff:g id="APP_NAME">%1$s</xliff:g> की सभी सूचनाएं"</string>
<string name="default_notification_assistant" msgid="243718059890346442">"ज़रूरत के हिसाब से सूचनाएं"</string>
<plurals name="notifications_sent_daily" formatted="false" msgid="1479283620504341566">
- <item quantity="one">रोज़ ~<xliff:g id="NUMBER_1">%d</xliff:g> सूचनाएं</item>
+ <item quantity="one">रोज़~<xliff:g id="NUMBER_1">%d</xliff:g> सूचनाएं</item>
<item quantity="other">रोज़ ~<xliff:g id="NUMBER_1">%d</xliff:g> सूचनाएं</item>
</plurals>
<plurals name="notifications_sent_weekly" formatted="false" msgid="4913443431857170519">
- <item quantity="one">हर हफ़्ते ~<xliff:g id="NUMBER_1">%d</xliff:g>सूचनाएं</item>
- <item quantity="other">हर हफ़्ते ~<xliff:g id="NUMBER_1">%d</xliff:g>सूचनाएं</item>
+ <item quantity="one">हर हफ़्ते~<xliff:g id="NUMBER_1">%d</xliff:g> सूचना</item>
+ <item quantity="other">हर हफ़्ते~<xliff:g id="NUMBER_1">%d</xliff:g> सूचनाएं</item>
</plurals>
<string name="notifications_sent_never" msgid="9081278709126812062">"कभी नहीं"</string>
<string name="manage_notification_access_title" msgid="4714320299084782521">"सूचना का ऐक्सेस"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g> से कनेक्ट होने पर उपलब्ध नहीं है"</string>
<string name="see_more" msgid="7499355691042812723">"ज़्यादा देखें"</string>
<string name="see_less" msgid="2642392725363552793">"कम देखें"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> को बंद करना चाहते हैं?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"क्या आप सिम बंद करना चाहते हैं?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"सिम बंद किया जा रहा है<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"मोबाइल और इंटरनेट सेवा देने वाली कंपनी का नेटवर्क बंद नहीं किया जा सकता"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"कोई गड़बड़ी हुई, जिसकी वजह से आपकी मोबाइल और इंटरनेट सेवा देने वाली कंपनी का नेटवर्क बंद नहीं किया जा सका."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"डिवाइस से कनेक्ट करें"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"आपके डिवाइस से कनेक्ट होने के लिए, <xliff:g id="APPNAME">%1$s</xliff:g> ऐप्लिकेशन को किसी वाई-फ़ाई नेटवर्क से कुछ समय के लिए जुड़ना होगा"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"कोई डिवाइस नहीं मिला देख लें कि डिवाइस चालू हों और कनेक्ट किए जा सकते हों."</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index b2cbfae..0d596dc 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -1050,8 +1050,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Upišite važeću adresu pristupnika."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Upišite važeću DNS adresu."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Upišite prefiks mreže duljine između 0 i 32 znaka."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Pristupnik"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Duljina mrežnog prefiksa"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4914,6 +4916,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Nedostupno kada je povezano s mobilnim operaterom <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Prikaži više"</string>
<string name="see_less" msgid="2642392725363552793">"Prikaži manje"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Isključiti uslugu <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Isključiti SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Isključivanje SIM-a<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Onemogućivanje mobilnog operatera nije uspjelo"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Nešto je pošlo po zlu i onemogućivanje mobilnog operatera nije uspjelo."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Povezivanje s uređajem"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Aplikacija <xliff:g id="APPNAME">%1$s</xliff:g> želi koristiti privremenu Wi‑Fi mrežu za povezivanje s vašim uređajem"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Nije pronađen nijedan uređaj. Provjerite je li uređaj uključen i dostupan za povezivanje."</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 153292b..f57b930 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Írjon be érvényes átjárócímet."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Írjon be érvényes DNS-címet."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 és 32 közti hosszt adjon meg a hálózati előtagnál."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"1. DNS"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"2. DNS"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Átjáró"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Hálózati előtag hossza"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -1607,7 +1609,7 @@
<string name="reset_dashboard_title" msgid="7423200250697886918">"Beállítások visszaállítása"</string>
<string name="reset_dashboard_summary" msgid="4390780188264852956">"Visszaállítható a hálózat, az alkalmazások és az eszköz"</string>
<string name="reset_dashboard_summary_onlyApps" msgid="3304252260039419584">"Az Alkalmazások alaphelyzetbe állítható"</string>
- <string name="reset_network_title" msgid="1395494440355807616">"Wi-Fi, mobiladatok Bluetooth visszaállítása"</string>
+ <string name="reset_network_title" msgid="1395494440355807616">"A Wi-Fi, a mobiladatok és a Bluetooth beállításainak visszaállítása"</string>
<string name="reset_network_desc" msgid="1112523764899788246">"Az összes hálózati beállítást visszaállítja, például a következőket:\n\n"<li>"Wi‑Fi"</li>\n<li>"Mobiladat"</li>\n<li>"Bluetooth"</li></string>
<string name="reset_esim_title" msgid="6152167073280852849">"Letöltött SIM-ek törlése"</string>
<string name="reset_esim_desc" msgid="4256518544336245086">"Csere SIM letöltése érdekében forduljon szolgáltatójához. Ezzel nem szűnik meg egyetlen mobil-előfizetési csomag sem."</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Nem hozzáférhető, amikor a következőhöz csatlakozik: <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Továbbiak"</string>
<string name="see_less" msgid="2642392725363552793">"Kevesebb megjelenítése"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Kikapcsolja a következőt: <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Kikapcsolja a SIM-et?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM kikapcsolása<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Nem sikerült a szolgáltató letiltása"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Hiba történt, ezért nem sikerült a szolgáltató letiltása."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Csatlakozás adott eszközhöz"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"A(z) <xliff:g id="APPNAME">%1$s</xliff:g> alkalmazás ideiglenes Wi-Fi-hálózatot szeretne használni az eszközhöz való csatlakozáshoz."</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Nem találhatók eszközök. Ellenőrizze, hogy be vannak-e kapcsolva az eszközök, és lehetséges-e a hozzájuk való csatlakozás."</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 60fe100..8439fac 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -1030,8 +1030,8 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Մուտքագրեք վավեր անցախցի հասցե"</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Մուքագրեք վավեր DNS հասցե:"</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Մուտքագրեք ցանցի նախածանցի երկարությունը` 0-ից 32-ի սահմանում:"</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (եթե չի վրագրվել մասնավոր DNS-ի կողմից)"</string>
+ <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (եթե չի վրագրվել մասնավոր DNS-ի կողմից)"</string>
<string name="wifi_gateway" msgid="3699227808616416759">"Անցախուց"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Ցանցի նախածանցի երկարություն"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4833,6 +4833,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Հասանելի չէ <xliff:g id="CARRIER">%1$s</xliff:g>-ին միանալու դեպքում"</string>
<string name="see_more" msgid="7499355691042812723">"Տեսնել ավելին"</string>
<string name="see_less" msgid="2642392725363552793">"Տեսնել ավելի քիչ"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Անջատե՞լ <xliff:g id="CARRIER_NAME">%1$s</xliff:g> օպերատորին"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Անջատե՞լ SIM քարտը"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM քարտն անջատվում է<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Չհաջողվեց անջատել օպերատորին"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Սխալի պատճառով հնարավոր չէ անջատել ձեր օպերատորին։"</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Միացում սարքին"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> հավելվածը ցանկանում է օգտագործել ժամանակավոր Wi‑Fi ցանց՝ ձեր սարքին միանալու համար։"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Սարքեր չեն գտնվել։ Համոզվեք, որ սարքերը միացված են և հասանելի են կապակցման համար։"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index fdc85f0..1b1ce01 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Ketikkan alamat gerbang yang valid."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Ketik alamat DNS yang valid."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Ketikkan panjang awalan jaringan antara 0 dan 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Panjang awalan jaringan"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Langsung"</string>
@@ -3867,7 +3869,7 @@
<string name="screen_pinning_title" msgid="6927227272780208966">"Pemasangan pin aplikasi"</string>
<string name="screen_pinning_description" msgid="6927147836599784578">"Pemasangan pin aplikasi memungkinkan Anda terus menampilkan aplikasi saat ini hingga pinnya dilepas. Fitur ini dapat digunakan, misalnya, untuk mengizinkan teman tepercaya memainkan game tertentu. \n\nSaat sebuah aplikasi dipasangi pin, aplikasi itu dapat membuka aplikasi lain dan data pribadi dapat diakses. \n\nUntuk menggunakan pemasangan pin aplikasi: \n1. Aktifkan pemasangan pin aplikasi \n2. Buka Ringkasan \n3. Ketuk ikon aplikasi di bagian atas layar, lalu ketuk Pasang pin"</string>
<string name="screen_pinning_guest_user_description" msgid="4772752097527490014">"Pemasangan pin aplikasi memungkinkan Anda terus menampilkan aplikasi saat ini hingga pinnya dilepas. Fitur ini dapat digunakan, misalnya, untuk mengizinkan teman tepercaya memainkan game tertentu. \n\nSaat sebuah aplikasi dipasangi pin, aplikasi itu dapat membuka aplikasi lain dan data pribadi dapat diakses. \n\nJika Anda ingin membagikan perangkat secara aman ke seseorang, coba gunakan pengguna tamu. \n\nUntuk menggunakan pemasangan pin aplikasi: \n1. Aktifkan pemasangan pin aplikasi \n2. Buka Ringkasan \n3. Ketuk ikon aplikasi di bagian atas layar, lalu ketuk Pasang pin"</string>
- <string name="screen_pinning_dialog_message" msgid="8144925258679476654">"Saat aplikasi dipasangi pin: \n\n• Data pribadi dapat diakses \n (seperti kontak dan konten email) \n• Aplikasi yang dipasangi pin dapat membuka aplikasi lain \n\nGunakan pemasangan pin aplikasi hanya untuk orang yang Anda percayai."</string>
+ <string name="screen_pinning_dialog_message" msgid="8144925258679476654">"Saat aplikasi disematkan: \n\n• Data pribadi dapat diakses \n (seperti kontak dan konten email) \n• Aplikasi yang disematkan dapat membuka aplikasi lain \n\nGunakan penyematan aplikasi hanya untuk orang yang Anda percayai."</string>
<string name="screen_pinning_unlock_pattern" msgid="1345877794180829153">"Minta pola pembuka kunci sebelum melepas pin"</string>
<string name="screen_pinning_unlock_pin" msgid="8716638956097417023">"Minta PIN sebelum lepas pin"</string>
<string name="screen_pinning_unlock_password" msgid="4957969621904790573">"Minta sandi sebelum melepas pin"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Tidak tersedia saat terhubung ke <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Lihat lainnya"</string>
<string name="see_less" msgid="2642392725363552793">"Lihat lebih sedikit"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Nonaktifkan <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Nonaktifkan SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Menonaktifkan SIM <xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Tidak dapat menonaktifkan operator"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Terjadi error dan operator Anda tidak dapat dinonaktifkan."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Hubungkan ke perangkat"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Aplikasi <xliff:g id="APPNAME">%1$s</xliff:g> ingin menggunakan jaringan Wi-Fi sementara untuk terhubung ke perangkat"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Perangkat tidak ditemukan. Pastikan perangkat dihidupkan dan dapat tersambung ke jaringan."</string>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 75860fa..3fc74f9 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Sláðu inn gilt vistfang gáttar."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Sláðu inn gilt DNS-vistfang."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Sláðu inn lengd netforskeytis á bilinu 0–32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Gátt"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Lengd netforskeytis"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Ekki í boði þegar tenging við <xliff:g id="CARRIER">%1$s</xliff:g> er til staðar"</string>
<string name="see_more" msgid="7499355691042812723">"Sjá meira"</string>
<string name="see_less" msgid="2642392725363552793">"Sjá minna"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Viltu slökkva á <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Slökkva á SIM-korti?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Slekkur á SIM-korti<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Ekki er hægt að gera símafyrirtæki óvirkt"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Eitthvað fór úrskeiðis og ekki var hægt að gera símafyrirtækið óvirkt."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Tengjast tæki"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Forritið <xliff:g id="APPNAME">%1$s</xliff:g> vill nota tímabundið Wi‑Fi net til að tengjast við tækið þitt"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Engin tæki fundust. Gakktu úr skugga um að kveikt sé á tækjunum og að hægt sé að tengjast við þau."</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index c03093f..cac54e8 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Digita l\'indirizzo di un gateway valido."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Digita un indirizzo DNS valido."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Digita un prefisso di rete di 0-32 caratteri."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Lunghezza prefisso rete"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Non disponibile se è attiva la connessione a <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Altro"</string>
<string name="see_less" msgid="2642392725363552793">"Comprimi"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Vuoi disattivare <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Vuoi disattivare la SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Disattivazione SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Impossibile disattivare l\'operatore"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Si è verificato un problema; impossibile disattivare l\'operatore."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Connessione al dispositivo"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"L\'app <xliff:g id="APPNAME">%1$s</xliff:g> vorrebbe usare una rete Wi-Fi temporanea per connettersi al tuo dispositivo"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Nessun dispositivo trovato. Assicurati che i dispositivi siano accesi e disponibili per la connessione."</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 032c2f9a..1698aed 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -1070,8 +1070,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"הקלד כתובת שער חוקית."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"הקלד כתובת DNS חוקית."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"הקלד אורך לקידומת רשת בין 0 ו-32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"שער"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"אורך קידומת של רשת"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi ישיר"</string>
@@ -4067,7 +4069,7 @@
<string name="runtime_permissions_summary_control_app_access" msgid="3744591396348990500">"שליטה בגישת האפליקציה לנתונים שלך"</string>
<string name="filter_all_apps" msgid="6645539744080251371">"כל האפליקציות"</string>
<string name="filter_enabled_apps" msgid="8868356616126759124">"אפליקציות מותקנות"</string>
- <string name="filter_instant_apps" msgid="2292108467020380068">"אפליקציות אינסטנט"</string>
+ <string name="filter_instant_apps" msgid="2292108467020380068">"אפליקציות ללא התקנה"</string>
<string name="filter_notif_all_apps" msgid="2764590815789208306">"אפליקציות: הכל"</string>
<string name="filter_notif_blocked_apps" msgid="1065653868850012325">"ההתראות הושבתו"</string>
<string name="filter_notif_urgent_channels" msgid="875381675739324318">"קטגוריות: חשיבות דחופה"</string>
@@ -4651,10 +4653,10 @@
<string name="oem_unlock_enable_disabled_summary_sim_locked_device" msgid="168124660162907358">"לא זמין במכשירים הנעולים לספק"</string>
<string name="oem_lock_info_message" msgid="8843145669619429197">"יש להפעיל מחדש את המכשיר כדי להפעיל את התכונה של הגנת המכשיר."</string>
<string name="automatic_storage_manager_freed_bytes" msgid="706230592123831676">"סה\"כ <xliff:g id="SIZE">%1$s</xliff:g> הפכו לזמינים\n\nהורץ לאחרונה בתאריך <xliff:g id="DATE">%2$s</xliff:g>"</string>
- <string name="web_action_enable_title" msgid="6654581786741216382">"אפליקציות אינסטנט"</string>
+ <string name="web_action_enable_title" msgid="6654581786741216382">"אפליקציות ללא התקנה"</string>
<string name="web_action_enable_summary" msgid="2658930257777545990">"פתיחת קישורים באפליקציות, גם אם הן לא מותקנות"</string>
- <string name="web_action_section_title" msgid="994717569424234098">"אפליקציות אינסטנט"</string>
- <string name="instant_apps_settings" msgid="4280942494969957858">"העדפות של אפליקציות אינסטנט"</string>
+ <string name="web_action_section_title" msgid="994717569424234098">"אפליקציות ללא התקנה"</string>
+ <string name="instant_apps_settings" msgid="4280942494969957858">"העדפות של אפליקציות ללא התקנה"</string>
<string name="domain_url_section_title" msgid="9028890472923474958">"אפליקציות מותקנות"</string>
<string name="automatic_storage_manager_activation_warning" msgid="170508173207142665">"האחסון שלך מנוהל כעת על ידי מנהל האחסון"</string>
<string name="account_for_section_header" msgid="7466759342105251096">"חשבונות עבור <xliff:g id="USER_NAME">%1$s</xliff:g>"</string>
@@ -4783,7 +4785,7 @@
<string name="storage_manager_indicator" msgid="6187509172735927297">"מנהל אחסון: <xliff:g id="STATUS">^1</xliff:g>"</string>
<string name="storage_manager_indicator_off" msgid="2705959642617709265">"כבוי"</string>
<string name="storage_manager_indicator_on" msgid="8380330763647785309">"פועל"</string>
- <string name="install_type_instant" msgid="7685381859060486009">"אפליקציה אינסטנט"</string>
+ <string name="install_type_instant" msgid="7685381859060486009">"אפליקציה ללא התקנה"</string>
<string name="automatic_storage_manager_deactivation_warning" msgid="4905106133215702099">"האם לכבות את מנהל האחסון?"</string>
<string name="storage_movies_tv" msgid="7897612625450668593">"אפליקציות סרטים וטלוויזיה"</string>
<string name="carrier_provisioning" msgid="7217868336140325816">"פרטי ניהול תצורה של ספק סלולרי"</string>
@@ -4995,6 +4997,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"לא זמין כשהמכשיר מחובר ל-<xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"הצגת פריטים נוספים"</string>
<string name="see_less" msgid="2642392725363552793">"הצג פחות"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"לכבות את <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"לכבות את כרטיס ה-SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"מתבצע כיבוי של כרטיס ה-SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"לא ניתן להשבית את הספק"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"משהו השתבש ולא ניתן היה להשבית את הספק."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"התחברות למכשיר"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"האפליקציה <xliff:g id="APPNAME">%1$s</xliff:g> מבקשת להשתמש ברשת Wi-Fi זמנית כדי להתחבר למכשיר שלך"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"לא נמצאו מכשירים. יש לוודא שהמכשירים פועלים וזמינים לחיבור."</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 4482411..6b3722b 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"有効なゲートウェイアドレスを入力してください。"</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"有効なDNSアドレスを入力してください。"</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"ネットワークプレフィックス長は0~32で指定します。"</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"ゲートウェイ"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"ネットワークプレフィックス長"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g> への接続時は利用できません"</string>
<string name="see_more" msgid="7499355691042812723">"詳細"</string>
<string name="see_less" msgid="2642392725363552793">"一部を表示"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> を OFF にしますか?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"SIM を OFF にしますか?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM を OFF にしています<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"携帯通信会社の無効化エラー"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"エラーが発生したため、携帯通信会社を無効にできませんでした。"</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"デバイスに接続"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> アプリがデバイスに接続するために、Wi-Fi ネットワークを一時的に使用します"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"デバイスが見つかりません。デバイスの電源が入っており、接続が可能であることを確認してください。"</string>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 027ad15..073d256 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"შეიყვანეთ გეითვეის სწორი მისამართი."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"შეიყვანეთ სწორი DNS მისამართი."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"შეიყვანეთ ქსელის პრეფიქსი, რომლის სიგრძეა 0-დან 32-მდე."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"გეითვეი"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"ქსელის პრეფიქსის სიგრძე"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"მიუწვდომელია, როცა დაკავშირებულია <xliff:g id="CARRIER">%1$s</xliff:g>-თან"</string>
<string name="see_more" msgid="7499355691042812723">"მეტის ნახვა"</string>
<string name="see_less" msgid="2642392725363552793">"ნაკლების ნახვა"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"გამოირთოს <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"გამოირთოს SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"მიმდინარეობს SIM-ის გამორთვა<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"ოპერატორი ვერ გაითიშა"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"ოპერატორი ვერ გაითიშა წარმოქმნილი შეფერხების გამო."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"მოწყობილობასთან დაკავშირება"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> აპს სურს დროებითი Wi-Fi ქსელის გამოყენება თქვენს მოწყობილობასთან დასაკავშირებლად"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"მოწყობილობები ვერ მოიძებნა. დარწმუნდით, რომ მოწყობილობები ჩართულია და ხელმისაწვდომია დასაკავშირებლად."</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 8f1be65..84c15a5 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Жарамды торап мекенжайын теріңіз."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Жарамды DNS мекенжайын теріңіз."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Желі префиксінің ұзындығын 0 және 32 аралығында теріңіз"</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Торап"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Желі префиксінің ұзындығы"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g> операторына қосылып тұрғанда қолжетімді емес"</string>
<string name="see_more" msgid="7499355691042812723">"Басқаларын көру"</string>
<string name="see_less" msgid="2642392725363552793">"Азырақ көру"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> өшірілсін бе?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"SIM картасы өшірілсін бе?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM картасы өшірілуде<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Оператор өшірілмеді"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Бірдеңеден қате кетті де, оператор өшірілмеді."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Құрылғыға қосылу"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> қолданбасы құрылғыңызға қосылу үшін уақытша Wi‑Fi желісін пайдаланғысы келеді."</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Ешбір құрылғы табылмады. Құрылғылардың қосулы екенін, оларды жалғауға болатынын тексеріңіз."</string>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index c8eccb0..d058d45 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"បញ្ចូលអាសយដ្ឋានច្រកចេញចូលដែលត្រឹមត្រូវ"</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"បញ្ចូលអាសយដ្ឋាន DNS ដែលត្រឹមត្រូវ។"</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"បញ្ចូលប្រវែងបុព្វបទបណ្ដាញចន្លោះ ០ និង ៣២។"</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"ច្រក"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"ប្រវែងបុព្វបទបណ្ដាញ"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi ផ្ទាល់"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"មិនអាចប្រើបានទេ នៅពេលភ្ជាប់ <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"មើលច្រើនទៀត"</string>
<string name="see_less" msgid="2642392725363552793">"មើលតិចជាង"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"បិទ <xliff:g id="CARRIER_NAME">%1$s</xliff:g> ឬ?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"បិទស៊ីមឬ?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"កំពុងបិទស៊ីម<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"មិនអាចបិទក្រុមហ៊ុនសេវាទូរសព្ទបានទេ"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"មានអ្វីមួយខុសប្រក្រតី ទើបមិនអាចបិទក្រុមហ៊ុនសេវាទូរសព្ទរបស់អ្នកបាន។"</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"ភ្ជាប់ឧបករណ៍"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"កម្មវិធី <xliff:g id="APPNAME">%1$s</xliff:g> ចង់ប្រើបណ្ដាញ Wi‑Fi បណ្ដោះអាសន្ន ដើម្បីភ្ជាប់ជាមួយឧបករណ៍របស់អ្នក"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"រកមិនឃើញឧបករណ៍ទេ។ សូមប្រាកដថាឧបករណ៍បានបើក និងអាចភ្ជាប់បាន។"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index d393402..e58fa17 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"ಮಾನ್ಯವಾದ ಗೇಟ್ವೇ ವಿಳಾಸವನ್ನು ಟೈಪ್ ಮಾಡಿ."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"ಮಾನ್ಯವಾದ DNS ವಿಳಾಸವನ್ನು ಟೈಪ್ ಮಾಡಿ."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 ಮತ್ತು 32 ನಡುವಿನ ಉದ್ದದ ನೆಟ್ವರ್ಕ್ ಪೂರ್ವಪ್ರತ್ಯಯವನ್ನು ಟೈಪ್ ಮಾಡಿ."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"ಗೇಟ್ವೇ"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"ನೆಟ್ವರ್ಕ್ ಪೂರ್ವಪ್ರತ್ಯಯದ ಅಳತೆ"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi ಡೈರೆಕ್ಟ್"</string>
@@ -1970,7 +1972,7 @@
<string name="app_disable_dlg_positive" msgid="1414218905322009505">"ಅಪ್ಲಿಕೇಶನ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="app_disable_dlg_text" msgid="2449382902751908916">"ನೀವು ಈ ಆ್ಯಪ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದರೆ, Android ಮತ್ತು ಇತರ ಆ್ಯಪ್ಗಳು ಇನ್ನು ಮುಂದೆ ಉದ್ದೇಶಿಸಿದ ಹಾಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸದಿರಬಹುದು. ಈ ಆ್ಯಪ್ ಅನ್ನು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಪೂರ್ವ-ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿರುವುದರಿಂದ, ನೀವು ಅದನ್ನು ಅಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ ಎಂಬುದನ್ನು ನೆನಪಿನಲ್ಲಿಡಿ. ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವ ಮೂಲಕ, ಈ ಆ್ಯಪ್ ಅನ್ನು ನೀವು ಆಫ್ ಮಾಡಬಹುದು ಮತ್ತು ಅದನ್ನು ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಮರೆ ಮಾಡಬಹುದು."</string>
<string name="app_disable_notifications_dlg_title" msgid="6686569904059411780">"ಅಧಿಸೂಚನೆಗಳನ್ನು ಆಫ್ ಮಾಡುವುದೇ?"</string>
- <string name="app_install_details_group_title" msgid="1172114479073704677">"ಅಂಗಡಿ"</string>
+ <string name="app_install_details_group_title" msgid="1172114479073704677">"ಸ್ಟೋರ್"</string>
<string name="app_install_details_title" msgid="7783556181897142187">"ಅಪ್ಲಿಕೇಶನ್ ವಿವರಗಳು"</string>
<string name="app_install_details_summary" msgid="2013043219249992373">"<xliff:g id="APP_STORE">%1$s</xliff:g> ನಿಂದ ಅಪ್ಲಿಕೇಶನ್ ಸ್ಥಾಪಿಸಲಾಗಿದೆ"</string>
<string name="instant_app_details_summary" msgid="417197491598208216">"<xliff:g id="APP_STORE">%1$s</xliff:g> ನಲ್ಲಿ ಹೆಚ್ಚಿನ ಮಾಹಿತಿ"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g> ಗೆ ಸಂಪರ್ಕಿಸಿದಾಗ ಲಭ್ಯವಿರುವುದಿಲ್ಲ"</string>
<string name="see_more" msgid="7499355691042812723">"ಇನ್ನಷ್ಟು ನೋಡಿ"</string>
<string name="see_less" msgid="2642392725363552793">"ಕಡಿಮೆ ನೋಡಿ"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> ಅನ್ನು ಆಫ್ ಮಾಡುವುದೇ?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"ಸಿಮ್ ಅನ್ನು ಆಫ್ ಮಾಡುವುದೇ?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"ಸಿಮ್ ಅನ್ನು ಆಫ್ ಮಾಡಲಾಗುತ್ತಿದೆ<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"ವಾಹಕ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"ಏನೋ ತಪ್ಪಾಗಿದೆ ಮತ್ತು ನಿಮ್ಮ ವಾಹಕವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"ಸಾಧನಕ್ಕೆ ಸಂಪರ್ಕಿಸಿ"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"ನಿಮ್ಮ ಸಾಧನಕ್ಕೆ ಕನೆಕ್ಟ್ ಮಾಡಲು ತಾತ್ಕಾಲಿಕ ವೈ-ಫೈ ನೆಟ್ವರ್ಕ್ ಅನ್ನು ಬಳಸಲು <xliff:g id="APPNAME">%1$s</xliff:g> ಆ್ಯಪ್ ಬಯಸುತ್ತದೆ"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"ಯಾವುದೇ ಸಾಧನಗಳು ಕಂಡುಬಂದಿಲ್ಲ. ಸಾಧನಗಳನ್ನು ಆನ್ ಮಾಡಲಾಗಿದೆ ಮತ್ತು ಸಂಪರ್ಕಿಸಲು ಲಭ್ಯವಿದೆ ಎಂಬುದನ್ನು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ."</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 7b17a8a..3b194e6 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"올바른 게이트웨이 주소를 입력하세요."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"올바른 DNS 주소를 입력하세요."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0에서 32 사이의 네트워크 접두어 길이를 입력해 주세요."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"게이트웨이"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"네트워크 접두어 길이"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g>에 연결된 경우 사용할 수 없음"</string>
<string name="see_more" msgid="7499355691042812723">"더보기"</string>
<string name="see_less" msgid="2642392725363552793">"간략히 보기"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>을(를) 사용 중지하시겠습니까?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"SIM을 사용 중지하시겠습니까?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM을 사용 중지하는 중<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"이동통신사를 사용 중지할 수 없음"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"문제가 발생하여 이동통신사를 사용 중지하지 못했습니다."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"기기에 연결"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> 앱에서 임시 Wi‑Fi 네트워크를 사용하여 기기에 연결하려고 합니다."</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"기기가 없습니다. 기기가 켜져 있으며 연결 가능한지 확인하세요."</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index d94a6a2..8090f50 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Жарактуу шлюз дарегин териңиз."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Жарактуу DNS дарегин териңиз."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Тармактын префикси 0дөн 32ге чейин болушу керек."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Шлюз"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Тармак префиксинин узуну"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -1833,7 +1835,7 @@
<string name="lockpattern_need_to_confirm" msgid="6489499109451714360">"Ырастоо үчүн графикалык ачкычты дагы бир жолу тартыңыз"</string>
<string name="lockpattern_pattern_confirmed_header" msgid="2969990617475456153">"Жаңы графикалык ачкычыңыз"</string>
<string name="lockpattern_confirm_button_text" msgid="6122815520373044089">"Ырастоо"</string>
- <string name="lockpattern_restart_button_text" msgid="255339375151895998">"Кайра тартуу"</string>
+ <string name="lockpattern_restart_button_text" msgid="255339375151895998">"Кайра тартам"</string>
<string name="lockpattern_retry_button_text" msgid="4229668933251849760">"Тазалоо"</string>
<string name="lockpattern_continue_button_text" msgid="5253269556259503537">"Улантуу"</string>
<string name="lockpattern_settings_title" msgid="9223165804553269083">"Кулпуну ачуу үлгүсү"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g> операторуна туташып турганда жеткиликсиз"</string>
<string name="see_more" msgid="7499355691042812723">"Дагы көрүү"</string>
<string name="see_less" msgid="2642392725363552793">"Азыраак көрүү"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> өчүрүлсүнбү?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"SIM-карта өчүрүлсүнбү?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM-карта өчүрүлүүдө<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Байланыш оператору өчүрүлгөн жок"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Бир жерден ката кетти, байланыш операторуңуз өчүрүлгөн жок."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Түзмөккө туташуу"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> түзмөгүңүзгө убактылуу Wi‑Fi тармагы аркылуу туташканы жатат"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Түзмөктөр табылган жок. Түзмөктөр күйгүзүлүп, байланышууга даяр экенин текшериңиз."</string>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 300b9d8..e5c2e6a 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -1030,8 +1030,8 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"ພິມທີ່ຢູ່ gateway ທີ່ຖືກຕ້ອງ."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"ພິມທີ່ຢູ່ DNS ທີ່ຖືກຕ້ອງ."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"ພິມຄວາມຍາວ network prefix ລະຫວ່າງ 0 ຫາ 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (ເວັ້ນເສຍແຕ່ຈະຖືກຍົກເລີກໂດຍ DNS ສ່ວນຕົວ)"</string>
+ <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (ເວັ້ນເສຍແຕ່ຈະຖືກຍົກເລີກໂດຍ DNS ສ່ວນຕົວ)"</string>
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"ຄວາມຍາວ Network prefix"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4833,6 +4833,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"ບໍ່ສາມາດໃຊ້ໄດ້ເມື່ອເຊື່ອມຕໍ່ກັບ <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"ເບິ່ງເພີ່ມເຕີມ"</string>
<string name="see_less" msgid="2642392725363552793">"ເບິ່ງໜ້ອຍລົງ"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"ປິດ <xliff:g id="CARRIER_NAME">%1$s</xliff:g> ໄວ້ບໍ?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"ປິດ SIM ບໍ?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"ກຳລັງປິດ SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"ບໍ່ສາມາດປິດການຳໃຊ້ຜູ້ໃຫ້ບໍລິການ"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"ມີບາງຢ່າງຜິດພາດເກີດຂຶ້ນ ແລະ ບໍ່ສາມາດປິດການນຳໃຊ້ຜູ້ໃຫ້ບໍລິການຂອງທ່ານໄດ້."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"ເຊື່ອມຕໍ່ຫາອຸປະກອນ"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"ແອັບ <xliff:g id="APPNAME">%1$s</xliff:g> ຕ້ອງການໃຊ້ເຄືອຂ່າຍ Wi‑Fi ຊົ່ວຄາວເພື່ອເຊື່ອມຕໍ່ຫາອຸປະກອນຂອງທ່ານ"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"ບໍ່ພົບອຸປະກອນ. ກະລຸນາກວດສອບວ່າເປີດອຸປະກອນແລ້ວ ແລະ ສາມາດເຊື່ອມຕໍ່ໄດ້."</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index f3eb32b..571dac6 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -1070,8 +1070,8 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Įveskite galiojantį tinklų sietuvo adresą."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Įveskite galiojantį DNS adresą."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Įveskite 0–32 simbolių tinklo kodą."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (nebent nepaisoma taikant privačią DNS)"</string>
+ <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (nebent nepaisoma taikant privačią DNS)"</string>
<string name="wifi_gateway" msgid="3699227808616416759">"Tinklų sietuvas"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Tinklo kodo ilgis"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Tiesiog. „Wi-Fi“ r."</string>
@@ -4995,6 +4995,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Nepasiekiama, kai prisijungta prie „<xliff:g id="CARRIER">%1$s</xliff:g>“"</string>
<string name="see_more" msgid="7499355691042812723">"Žr. daugiau"</string>
<string name="see_less" msgid="2642392725363552793">"Žr. mažiau"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Išjungti „<xliff:g id="CARRIER_NAME">%1$s</xliff:g>“?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Išjungti SIM kortelę?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Išjungiama SIM kortelė<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Nepavyksta išjungti operatoriaus"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Kažkas nepavyko, todėl operatorius nebuvo išjungtas."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Prijungimas prie įrenginio"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Programa „<xliff:g id="APPNAME">%1$s</xliff:g>“ nori naudoti laikiną „Wi‑Fi“ tinklą, kad galėtų prisijungti prie jūsų įrenginio"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Nerasta jokių įrenginių. Įsitikinkite, kad įrenginiai įjungti ir prie jų galima prisijungti."</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 9dcc447..7560115 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -1050,8 +1050,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Ierakstiet derīgu vārtejas adresi."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Ierakstiet derīgu sistēmas DNS adresi."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Ierakstiet tīkla prefiksa garumu diapazonā 0–32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Vārteja"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Tīkla prefiksa garums"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4914,6 +4916,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Nav pieejams, ja izveidots savienojums ar operatoru <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Skatīt vairāk"</string>
<string name="see_less" msgid="2642392725363552793">"Skatīt mazāk"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Vai izslēgt pakalpojumu <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Vai izslēgt SIM karti?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Notiek SIM kartes izslēgšana<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Mobilo sakaru operatoru nevar atspējot"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Radās kļūda, un mobilo sakaru operatoru nevarēja atspējot."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Savienojuma izveide ar ierīci"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Lietotne <xliff:g id="APPNAME">%1$s</xliff:g> vēlas izmantot pagaidu Wi‑Fi tīklu, lai izveidotu savienojumu ar jūsu ierīci."</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Nav atrasta neviena ierīce. Ierīcēm ir jābūt ieslēgtām un pieejamām savienojuma izveidei."</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 00b6863..5c5252f2 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Внеси важечка адреса на капија."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Внеси важечка адреса на DNS."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Внесете мрежен префикс со должина од 0 до 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Портал"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Должина на мрежен префикс"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Недостапно кога сте поврзани на <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Видете повеќе"</string>
<string name="see_less" msgid="2642392725363552793">"Види помалку"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Да се исклучи <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Да се исклучи SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Се исклучува SIM-картичката<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Не може да се оневозможи операторот"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Нешто тргна наопаку и не можеше да се оневозможи операторот."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Поврзување со уредот"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Апликацијата <xliff:g id="APPNAME">%1$s</xliff:g> сака да користи привремена Wi‑Fi мрежа за да се поврзе со уредот"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Не се најдени уреди. Уверете се дека уредите се вклучени и достапни за поврзување."</string>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 97ee59b..206344c 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"സാധുവായ ഗേറ്റ്വേ വിലാസം ടൈപ്പുചെയ്യുക."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"സാധുവായ DNS വിലാസം ടൈപ്പുചെയ്യുക."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0, 30 എന്നിവയ്ക്കിടയിലുള്ള ഒരു നെറ്റ്വർക്ക് പ്രിഫിക്സ് ദൈർഘ്യം ടൈപ്പുചെയ്യുക."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"ഗേറ്റ്വേ"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"നെറ്റ്വർക്ക് പ്രിഫിക്സ് ദൈർഘ്യം"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi ഡയറക്ട്"</string>
@@ -1970,7 +1972,7 @@
<string name="app_disable_dlg_positive" msgid="1414218905322009505">"ആപ്പ് പ്രവർത്തനരഹിതമാക്കുക"</string>
<string name="app_disable_dlg_text" msgid="2449382902751908916">"നിങ്ങൾ ഈ ആപ്പ് പ്രവർത്തനരഹിതമാക്കിയാൽ, Android-ഉം മറ്റ് ആപ്പുകളും ഇനി ഉദ്ദേശിച്ചത് പോലെ പ്രവർത്തിച്ചേക്കില്ല. ശ്രദ്ധിക്കുക, നിങ്ങളുടെ ഉപകരണത്തിൽ മുമ്പേ ഇൻസ്റ്റാൾ ചെയ്തതായതിനാൽ ഈ ആപ്പ് നിങ്ങൾക്ക് ഇല്ലാതാക്കാനാവില്ല. പ്രവർത്തനരഹിതമാക്കുന്നത് വഴി, ഈ ആപ്പ് ഓഫാക്കി നിങ്ങൾക്കിത് ഉപകരണത്തിൽ മറച്ചു വയ്ക്കാം."</string>
<string name="app_disable_notifications_dlg_title" msgid="6686569904059411780">"അറിയിപ്പുകൾ ഓഫാക്കണോ?"</string>
- <string name="app_install_details_group_title" msgid="1172114479073704677">"സ്റ്റോർ"</string>
+ <string name="app_install_details_group_title" msgid="1172114479073704677">"Store"</string>
<string name="app_install_details_title" msgid="7783556181897142187">"ആപ്പ് വിശദാംശങ്ങൾ"</string>
<string name="app_install_details_summary" msgid="2013043219249992373">"<xliff:g id="APP_STORE">%1$s</xliff:g> എന്നതിൽ നിന്ന് ആപ്പ് ഇൻസ്റ്റാൾ ചെയ്തു"</string>
<string name="instant_app_details_summary" msgid="417197491598208216">"<xliff:g id="APP_STORE">%1$s</xliff:g> സംബന്ധിച്ച കൂടുതൽ വിവരങ്ങൾ"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g> എന്നതിലേക്ക് കണക്റ്റ് ചെയ്തിരിക്കുമ്പോൾ ലഭ്യമല്ല"</string>
<string name="see_more" msgid="7499355691042812723">"കൂടുതൽ കാണുക"</string>
<string name="see_less" msgid="2642392725363552793">"കുറച്ച് കാണുക"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>ഓഫാക്കണോ?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"SIM ഓഫാക്കണോ?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"സിം ഓഫാക്കുന്നു<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"സേവനദാതാവിനെ പ്രവർത്തനരഹിതമാക്കാനാകുന്നില്ല"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"എന്തോ കുഴപ്പം സംഭവിച്ചതിനാൽ നിങ്ങളുടെ സേവനദാതാവിനെ പ്രവർത്തനരഹിതമാക്കാനായില്ല."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"ഉപകരണത്തിലേക്ക് കണക്റ്റ് ചെയ്യുക"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"നിങ്ങളുടെ ഉപകരണത്തിലേക്ക് കണക്റ്റ് ചെയ്യുന്നതിന് താൽക്കാലിക വെെഫെെ നെറ്റ്വർക്ക് ഉപയോഗിക്കാൻ <xliff:g id="APPNAME">%1$s</xliff:g> ആപ്പ് താൽപ്പര്യപ്പെടുന്നു"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"ഉപകരണങ്ങളൊന്നും കണ്ടെത്തിയില്ല. ഉപകരണം ഓണാണെന്നും കണക്റ്റ് ചെയ്യാൻ ലഭ്യമാണെന്നും ഉറപ്പാക്കുക."</string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 4163ba7..a50ec63 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Зөв гарцын хаяг оруулна уу."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Зөв DNS хаяг оруулна уу."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 болон 32 хооронд урттай сүлжээний угтварыг бичнэ үү."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Гарц"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Сүлжээний угтварын урт"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Шууд"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g>-д холбогдсон үед боломжгүй"</string>
<string name="see_more" msgid="7499355691042812723">"Дэлгэрэнгүй үзэх"</string>
<string name="see_less" msgid="2642392725363552793">"Цөөнийг харах"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>-г унтраах уу?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"SIM-г унтраах уу?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM-г унтрааж байна<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Оператор компанийг идэвхгүй болгох боломжгүй"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Алдаа гарсан тул таны оператор компанийг идэвхгүй болгож чадсангүй."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Төхөөрөмжид холбох"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> апп таны төхөөрөмжид холбогдохын тулд түр зуурын Wi-Fi сүлжээ ашиглах хүсэлтэй байна"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Төхөөрөмж олдсонгүй. Төхөөрөмжүүдийг асаалттай бөгөөд холбогдох боломжтой эсэхийг нь шалгана уу."</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 3510a52..1f37cd8 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"वैध गेटवे पत्ता टाइप करा."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"वैध DNS पत्ता टाइप करा."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 आणि 32 दरम्यान नेटवर्क उपसर्ग लांबी टाइप करा."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"गेटवे"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"नेटवर्क उपसर्ग लांबी"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"वाय-फाय डिरेक्ट"</string>
@@ -1971,7 +1973,7 @@
<string name="app_disable_dlg_positive" msgid="1414218905322009505">"अॅप अक्षम करा"</string>
<string name="app_disable_dlg_text" msgid="2449382902751908916">"तुम्ही हे अॅप बंद केल्यास, Android आणि इतर अॅप्स कदाचित अपेक्षेप्रमाणे काम करणार नाहीत. लक्षात ठेवा, हे अॅप तुमच्या डिव्हाइसवर आधीच इंस्टॉल करून आलेले असल्यामुळे तुम्ही ते हटवू शकत नाही. बंद करून, तुम्ही हे अॅप बंद करता आणि ते तुमच्या डिव्हाइसवर लपवता."</string>
<string name="app_disable_notifications_dlg_title" msgid="6686569904059411780">"सूचना बंद करायच्या?"</string>
- <string name="app_install_details_group_title" msgid="1172114479073704677">"स्टोअर"</string>
+ <string name="app_install_details_group_title" msgid="1172114479073704677">"Store"</string>
<string name="app_install_details_title" msgid="7783556181897142187">"अॅप तपशील"</string>
<string name="app_install_details_summary" msgid="2013043219249992373">"अॅप <xliff:g id="APP_STORE">%1$s</xliff:g> मधून इंस्टॉल केला"</string>
<string name="instant_app_details_summary" msgid="417197491598208216">"<xliff:g id="APP_STORE">%1$s</xliff:g> ची अधिक माहिती"</string>
@@ -4834,6 +4836,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g>शी कनेक्ट केले असल्यास उपलब्ध नाही"</string>
<string name="see_more" msgid="7499355691042812723">"आणखी पाहा"</string>
<string name="see_less" msgid="2642392725363552793">"कमी पहा"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> बंद करायचे आहे का?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"सिम बंद करायचे आहे का?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"सिम बंद करत आहे<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"वाहक बंद करू शकत नाही"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"काहीतरी गडबड झाली आणि तुमचा वाहक बंद करता आला नाही."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"डिव्हाइसशी कनेक्ट करा"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"तुमच्या डिव्हाइसशी कनेक्ट करण्यासाठी <xliff:g id="APPNAME">%1$s</xliff:g> ॲपला तात्पुरते वाय-फाय नेटवर्क वापरायचे आहे"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"डिव्हाइस सापडले नाही. डिव्हाइस सुरू केली आहेत आणि ती कनेक्ट करण्यासाठी उपलब्ध आहेत याची खात्री करा."</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index e608333..1d83369 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Taipkan alamat gerbang yang sah."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Taipkan alamat DNS yang sah."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Sila taip awalan rgkaian yg pjgnya antara 0 & 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Get laluan"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Panjang awalan rangkaian"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Tidak tersedia apabila disambungkan ke <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Lihat lagi"</string>
<string name="see_less" msgid="2642392725363552793">"Lihat kurang"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Matikan <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Matikan SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Mematikan SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Tidak dapat melumpuhkan pembawa"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Kesilapan telah berlaku dan pembawa anda tidak dapat dilumpuhkan."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Sambung ke peranti"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Apl <xliff:g id="APPNAME">%1$s</xliff:g> mahu menggunakan rangkaian Wi-Fi sementara untuk menyambung ke peranti anda"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Tiada peranti ditemui. Pastikan peranti dihidupkan dan tersedia untuk menyambung."</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index dbc337f..ebcf951 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"ခိုင်လုံသောဝင်ပေါက် (gateway)လိပ်စာကို ရိုက်ထည့်ပါ"</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"ခိုင်လုံသော DNS လိပ်စာကို ရိုက်ထည့်ပါ"</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"၀နှင့်၃၂အရှည်ရှိသော ကွန်ယက်အစပြုနံပတ်ကိုထည့်ပါ"</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"ဝင်ပေါက် (gateway)"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"ကွန်ရက် အစပြုဂဏန်း၏အရှည်"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"တိုက်ရိုက် Wi-Fi"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g> တွင် ချိတ်ဆက်ထားသည့်အခါ မရနိုင်ပါ"</string>
<string name="see_more" msgid="7499355691042812723">"ပိုပြရန်"</string>
<string name="see_less" msgid="2642392725363552793">"လျှော့ ကြည့်ရန်"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> ပိတ်မလား။"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"\'ဆင်းမ်ကဒ်\' ပိတ်မလား။"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"\'ဆင်းမ်ကဒ်\' ပိတ်နေသည်<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"ဝန်ဆောင်မှုပေးသူကို ပိတ်မရပါ"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"တစ်ခုခုမှားယွင်းသွားပါ၍ သင့်ဝန်ဆောင်မှုပေးသူကို ပိတ်မရခဲ့ပါ။"</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"စက်နှင့် ချိတ်ဆက်ခြင်း"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"သင့်စက်နှင့် ချိတ်ဆက်ရန် <xliff:g id="APPNAME">%1$s</xliff:g> အက်ပ်က ယာယီ Wi‑Fi ကွန်ရက်ကို အသုံးပြုလိုသည်"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"မည်သည့်စက်မျှ မတွေ့ပါ။ စက်များဖွင့်ထားပြီး ချိတ်ဆက်နိုင်ခြင်း ရှိမရှိ စစ်ဆေးပါ။"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 2fe6f4b..9c0e5ca 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Angi en gyldig gateway-adresse."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Angi en gyldig DNS-adresse."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Angi lengde for nettverksprefiks mellom 0 og 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Nettverksprefiks-lengde"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Utilgjengelig når du er koblet til <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Se flere"</string>
<string name="see_less" msgid="2642392725363552793">"Se mindre"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Vil du slå av <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Vil du slå av SIM-kortet?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Slår av SIM-kort <xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Kan ikke slå av operatøren"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Noe gikk galt, og enheten kunne ikke slå av operatøren."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Koble til enheten"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Appen <xliff:g id="APPNAME">%1$s</xliff:g> vil bruke et midlertidig Wi-Fi-nettverk for å koble til enheten din"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Fant ingen enheter. Sørg for at enhetene er slått på og tilgjengelige for tilkobling."</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index d686995..c39d799 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"एउटा मान्य गेटवे ठेगाना टाइप गर्नुहोस्।"</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"एउटा मान्य DNS ठेगाना टाइप गर्नुहोस्।"</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"नेटवर्क प्रेफिक्सको लम्बाइ ० देखि ३२का बीच टाइप गर्नुहोस्।"</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"गेटवे"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"नेटवर्क उपसर्ग लम्बाइ"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g> मा जडान हुँदा उपलब्ध छैन"</string>
<string name="see_more" msgid="7499355691042812723">"थप हेर्नुहोस्"</string>
<string name="see_less" msgid="2642392725363552793">"कम हेर्नुहोस्"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> अफ गर्ने हो?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"SIM अफ गर्ने हो?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM अफ गरिँदै<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"मोबाइल सेवा प्रदायक असक्षम पार्न सकिएन"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"केही चिज गडबड भयो र तपाईंको मोबाइल सेवा प्रदायक असक्षम पार्न सकिएन।"</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"यन्त्रमा कनेक्ट गरियोस्"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> एप तपाईंको यन्त्रमा कनेक्ट हुन कुनै अस्थायी Wi‑Fi नेटवर्क प्रयोग गर्न चाहन्छ"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"कुनै पनि यन्त्र फेला परेन। यन्त्रहरू सक्रिय हुनुका साथै जडान गर्नका लागि उपलब्ध भएको कुरा सुनिश्चित गर्नुहोस्।"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 5c46293..e65e280 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Voer een geldig gateway-adres in."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Voer een geldig DNS-adres in."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Typ een netwerkprefix van 0-32 tekens."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Lengte van netwerkprefix"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wifi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Niet beschikbaar wanneer verbonden met <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Meer bekijken"</string>
<string name="see_less" msgid="2642392725363552793">"Minder weergeven"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> uitschakelen?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Simkaart uitschakelen?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Simkaart uitschakelen<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Kan provider niet uitschakelen"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Er is iets misgegaan. Je provider kan niet worden uitgeschakeld."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Verbinding maken met apparaat"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"De app <xliff:g id="APPNAME">%1$s</xliff:g> wil een tijdelijk wifi-netwerk gebruiken om verbinding te maken met je apparaat."</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Geen apparaten gevonden. Zorg dat apparaten zijn ingeschakeld en beschikbaar zijn voor verbinding."</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 50bcc99..aaf49d7 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"ଏକ ମାନ୍ୟ ଗେଟ୍ୱେ ଠିକଣା ଟାଇପ୍ କରନ୍ତୁ"</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"ଏକ ବୈଧ DNS ଠିକଣା ଟାଇପ୍ କରନ୍ତୁ।"</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 ଓ 32 ମଧ୍ୟରେ ଏକ ନେଟୱାର୍କ ପ୍ରିଫିକ୍ସ ଦୌର୍ଘ୍ୟ ଟାଇପ୍ କରନ୍ତୁ।"</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"ଗେଟ୍ୱେ"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"ନେଟୱାର୍କ ପ୍ରିଫିକ୍ସ ଦୈର୍ଘ୍ୟ"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"ୱାଇ-ଫାଇ ଡାଇରେକ୍ଟ"</string>
@@ -1970,7 +1972,7 @@
<string name="app_disable_dlg_positive" msgid="1414218905322009505">"ଆପ୍ ଅକ୍ଷମ କରନ୍ତୁ"</string>
<string name="app_disable_dlg_text" msgid="2449382902751908916">"ଯଦି ଆପଣ ଏହି ଆପ୍କୁ ନିଷ୍କ୍ରିୟ କରନ୍ତି, ତେବେ Android ଓ ଅନ୍ୟାନ୍ୟ ଆପ୍ସ ଆଉ କାମ ନକରିପାରେ। ମନେ ରଖନ୍ତୁ, ଯେହେତୁ ଏହା ଆପଣଙ୍କ ଡିଭାଇସ୍ରେ ପୂର୍ବରୁ-ଇନ୍ଷ୍ଟଲ୍ ଅଛି, ତେଣୁ ଆପଣ ଏହି ଆପ୍କୁ ଡିଲିଟ୍ କରିପାରିବେ ନାହିଁ। ଏହାକୁ ଅକ୍ଷମ କରି, ଏହି ଆପ୍କୁ ଆପଣ ବନ୍ଦ କରିବେ ଏବଂ ଆପଣଙ୍କର ଡିଭାଇସ୍ରେ ଲୁଚାଇବେ।"</string>
<string name="app_disable_notifications_dlg_title" msgid="6686569904059411780">"ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ବନ୍ଦ କରିବେ?"</string>
- <string name="app_install_details_group_title" msgid="1172114479073704677">"ଷ୍ଟୋର୍"</string>
+ <string name="app_install_details_group_title" msgid="1172114479073704677">"Store"</string>
<string name="app_install_details_title" msgid="7783556181897142187">"ଆପ୍ ବିବରଣୀ"</string>
<string name="app_install_details_summary" msgid="2013043219249992373">"<xliff:g id="APP_STORE">%1$s</xliff:g> ରୁ ଇନ୍ଷ୍ଟଲ୍ ହୋଇଥିବା ଆପ୍"</string>
<string name="instant_app_details_summary" msgid="417197491598208216">"<xliff:g id="APP_STORE">%1$s</xliff:g> ଉପରେ ଅଧିକ ସୂଚନା"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g>କୁ ସଂଯୁକ୍ତ ହୋଇଥିବା ସମୟରେ ଉପଲବ୍ଧ ନଥାଏ"</string>
<string name="see_more" msgid="7499355691042812723">"ଅଧିକ ଦେଖନ୍ତୁ"</string>
<string name="see_less" msgid="2642392725363552793">"କମ୍ ଦେଖନ୍ତୁ"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> ବନ୍ଦ କରିବେ?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"SIM ବନ୍ଦ କରିବେ?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM ବନ୍ଦ କରାଯାଉଛି<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"ମୋବାଇଲ କମ୍ପାନୀକୁ ଅକ୍ଷମ କରାଯାଇପାରିବ ନାହିଁ"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"କିଛି ତ୍ରୁଟି ହୋଇଥିବାରୁ ଆପଣଙ୍କ ମୋବାଇଲ କମ୍ପାନୀକୁ ଅକ୍ଷମ କରାଯାଇପାରିଲା ନାହିଁ।"</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"ଡିଭାଇସକୁୁ ସଂଯୋଗ କରନ୍ତୁ"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"ଆପଣଙ୍କ ଡିଭାଇସକୁ ସଂଯୋଗ କରିବା ପାଇଁ <xliff:g id="APPNAME">%1$s</xliff:g> ଆପ୍ ଏକ ଅସ୍ଥାୟୀ ୱାଇ-ଫାଇ ନେଟୱାର୍କ ବ୍ୟବହାର କରିବାକୁ ଚାହୁଁଛି"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"କୌଣସି ଡିଭାଇସ୍ ମିଳିଲା ନାହିଁ। ସୁନିଶ୍ଚିତ ହୁଅନ୍ତୁ ଯେ ଡିଭାଇସ୍ ଚାଲୁ ହୋଇଛି ଏବଂ ସଂଯୋଗ କରିବା ପାଇଁ ଉପଲବ୍ଧ ଅଛି।"</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 8bf0aa2..284e768 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"ਇੱਕ ਪ੍ਰਮਾਣਿਕ ਗੇਟਵੇ ਪਤਾ ਟਾਈਪ ਕਰੋ।"</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"ਇੱਕ ਪ੍ਰਮਾਣਿਕ DNS ਪਤਾ ਟਾਈਪ ਕਰੋ।"</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 ਅਤੇ 32 ਦੇ ਵਿਚਕਾਰ ਇੱਕ ਨੈੱਟਵਰਕ ਅਗੇਤਰ ਲੰਮਾਈ ਟਾਈਪ ਕਰੋ।"</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"ਗੇਟਵੇ"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"ਨੈੱਟਵਰਕ ਅਗੇਤਰ ਲੰਮਾਈ"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"ਵਾਈ‑ਫਾਈ ਡਾਇਰੈਕਟ"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g> ਨਾਲ ਕਨੈਕਟ ਹੋਣ \'ਤੇ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
<string name="see_more" msgid="7499355691042812723">"ਹੋਰ ਦੇਖੋ"</string>
<string name="see_less" msgid="2642392725363552793">"ਘੱਟ ਵੇਖੋ"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"ਕੀ <xliff:g id="CARRIER_NAME">%1$s</xliff:g> ਨੂੰ ਬੰਦ ਕਰਨਾ ਹੈ?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"ਕੀ ਸਿਮ ਨੂੰ ਬੰਦ ਕਰਨਾ ਹੈ?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"ਸਿਮ ਨੂੰ ਬੰਦ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"ਕੈਰੀਅਰ ਨੂੰ ਬੰਦ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"ਕੋਈ ਗੜਬੜ ਹੋ ਗਈ ਅਤੇ ਤੁਹਾਡੇ ਕੈਰੀਅਰ ਨੂੰ ਬੰਦ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।"</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"ਡੀਵਾਈਸ ਨਾਲ ਕਨੈਕਟ ਕਰੋ"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> ਐਪ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਨਾਲ ਕਨੈਕਟ ਹੋਣ ਲਈ ਕਿਸੇ ਅਸਥਾਈ ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ ਨੂੰ ਵਰਤਣਾ ਚਾਹੁੰਦੀ ਹੈ"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"ਕੋਈ ਡੀਵਾਈਸ ਨਹੀਂ ਮਿਲੇ। ਪੱਕਾ ਕਰੋ ਕਿ ਡੀਵਾਈਸ ਚਾਲੂ ਹਨ ਅਤੇ ਕਨੈਕਟ ਹੋਣ ਲਈ ਉਪਲਬਧ ਹਨ।"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 5192b98..2a9d9b4 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -1070,8 +1070,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Wpisz prawidłowy adres bramy."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Wpisz prawidłowy adres DNS."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Wpisz długość przedrostka sieci z zakresu 0-32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Brama"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Długość przedrostka sieci"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4995,6 +4997,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Niedostępne po połączeniu z siecią <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Pokaż więcej"</string>
<string name="see_less" msgid="2642392725363552793">"Pokaż mniej"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Wyłączyć usługę <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Wyłączyć kartę SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Wyłączam kartę SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Nie można wyłączyć operatora"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Coś poszło nie tak i nie udało się wyłączyć operatora."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Połącz z urządzeniem"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Aplikacja <xliff:g id="APPNAME">%1$s</xliff:g> chce użyć tymczasowej sieci Wi‑Fi, by połączyć się z Twoim urządzeniem"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Nie znaleziono urządzeń. Upewnij się, że urządzenia są włączone i mogą się połączyć."</string>
diff --git a/res/values-pt-rBR/strings.xml b/res/values-pt-rBR/strings.xml
index bb574d7..d67de1e 100644
--- a/res/values-pt-rBR/strings.xml
+++ b/res/values-pt-rBR/strings.xml
@@ -1030,8 +1030,8 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Digite um endereço de gateway válido."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Digite um endereço de DNS válido."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Digite um tamanho do prefixo de rede entre 0 e 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (a menos que substituído por um DNS particular)"</string>
+ <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (a menos que substituído por um DNS particular)"</string>
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Tamanho do pref. de rede"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4833,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Indisponível quando conectado à <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Ver mais"</string>
<string name="see_less" msgid="2642392725363552793">"Ver menos"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Desativar <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Desativar chip?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Desativando o chip<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Não é possível desativar a operadora"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Algo deu errado, e não foi possível desativar sua operadora."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Conectar ao dispositivo"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"O app <xliff:g id="APPNAME">%1$s</xliff:g> quer usar uma rede Wi-Fi temporária para se conectar ao seu dispositivo"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Nenhum dispositivo foi encontrado. Os dispositivos precisam estar ligados e disponíveis para conexão."</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 7ef1837..3b98612 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Introduza um endereço de gateway válido."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Introduza um endereço DNS válido."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Introduza um prefixo de rede com 0-32 caracteres."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Compr. do prefixo de rede"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Indisponível quando ligado a <xliff:g id="CARRIER">%1$s</xliff:g>."</string>
<string name="see_more" msgid="7499355691042812723">"Ver mais"</string>
<string name="see_less" msgid="2642392725363552793">"Ver menos"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Pretende desativar o operador <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Pretende desativar o SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"A desativar o SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Não é possível desativar o operador"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Ocorreu um erro e não foi possível desativar o operador."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Estabeleça ligação ao dispositivo"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"A app <xliff:g id="APPNAME">%1$s</xliff:g> pretende utilizar uma rede Wi-Fi temporária para estabelecer ligação ao seu dispositivo."</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Nenhum dispositivo encontrado. Certifique-se de que os dispositivos estão ativados e disponíveis para ligação."</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index bb574d7..d67de1e 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -1030,8 +1030,8 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Digite um endereço de gateway válido."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Digite um endereço de DNS válido."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Digite um tamanho do prefixo de rede entre 0 e 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <string name="wifi_dns1" msgid="6764769531843748514">"DNS 1 (a menos que substituído por um DNS particular)"</string>
+ <string name="wifi_dns2" msgid="7273133202625326148">"DNS 2 (a menos que substituído por um DNS particular)"</string>
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Tamanho do pref. de rede"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4833,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Indisponível quando conectado à <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Ver mais"</string>
<string name="see_less" msgid="2642392725363552793">"Ver menos"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Desativar <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Desativar chip?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Desativando o chip<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Não é possível desativar a operadora"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Algo deu errado, e não foi possível desativar sua operadora."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Conectar ao dispositivo"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"O app <xliff:g id="APPNAME">%1$s</xliff:g> quer usar uma rede Wi-Fi temporária para se conectar ao seu dispositivo"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Nenhum dispositivo foi encontrado. Os dispositivos precisam estar ligados e disponíveis para conexão."</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 992e4f1..47d01a1 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -1050,8 +1050,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Introduceți o adresă gateway validă."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Introduceți o adresă DNS validă."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Introduceți prefix rețea din 0 – 32 caractere."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Lungime prefix rețea"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4914,6 +4916,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Indisponibil când este conectat la <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Vedeți mai multe"</string>
<string name="see_less" msgid="2642392725363552793">"Afișați mai puține"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Dezactivați <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Dezactivați SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Se dezactivează cardul SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Nu se poate dezactiva operatorul"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"A apărut o eroare și operatorul dvs. nu a putut fi dezactivat."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Conectați la dispozitiv"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Aplicația <xliff:g id="APPNAME">%1$s</xliff:g> vrea să folosească o rețea Wi-Fi temporară pentru a se conecta la dispozitiv"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Nu s-au găsit dispozitive. Asigurați-vă că dispozitivele sunt pornite și gata de conectare."</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 34ff579..7b35b62 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -1070,8 +1070,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Введите действительный адрес шлюза."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Введите действительный DNS-адрес."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Укажите длину префикса сети (от 0 до 32)."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Шлюз"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Длина префикса сети"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4995,6 +4997,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Недоступны при подключении к <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Ещё"</string>
<string name="see_less" msgid="2642392725363552793">"Скрыть"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Отключить оператора \"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>\"?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Отключить SIM-карту?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Отключение SIM-карты<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Произошла ошибка"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Не удалось отключить оператора."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Подключение к устройству"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Приложение \"<xliff:g id="APPNAME">%1$s</xliff:g>\" хочет использовать временную сеть Wi‑Fi для подключения к устройству."</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Устройства не найдены. Убедитесь, что они включены и доступны для подключения."</string>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 18ce700..14d7c1a 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"වලංගු වාහල ලිපිනයක් ටයිප් කරන්න."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"වලංගු DNS ලිපිනයක් ටයිප් කරන්න."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 ත් 32 අතර දිගින් යුත් ජාල උපසර්ගයක් ටයිප් කරන්න."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"වාහල"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"ජාල උපසර්ගයේ දිග"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g> වෙත සම්බන්ධ වූ විට නොමැත"</string>
<string name="see_more" msgid="7499355691042812723">"තව බලන්න"</string>
<string name="see_less" msgid="2642392725363552793">"අඩුවෙන් බලන්න"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> ක්රියාවිරහිත කරන්නද?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"SIM ක්රියාවිරහිත කරන්නද?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM ක්රියාවිරහිත කරමින්<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"වාහකය අබල කළ නොහැකිය"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"යම් දෙයක් වැරදී ගිය අතර ඔබේ වාහකය අබල කළ නොහැකි විය."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"උපාංගයට සම්බන්ධ වන්න"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> යෙදුමට ඔබේ උපාංගයට සම්බන්ධ වීමට තාවකාලික Wi‑Fi ජාලයක් භාවිත කිරීමට අවශ්යය"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"උපාංග කිසිවක් හමු නොවිය. උපාංග සක්රීය කර තිබෙන අතර සම්බන්ධ කිරීමට ලද හැකි බව තහවුරු කර ගන්න."</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index e699673..0d77bb6 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -1070,8 +1070,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Zadajte platnú adresu brány."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Zadajte platnú adresu DNS."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Zadajte dĺžku sieťovej predpony v rozsahu 0 až 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"Server DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"Server DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Brána"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Dĺžka sieťovej predpony"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4995,6 +4997,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Nie je k dispozícii pri pripojení k operátorovi <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Zobraziť viac"</string>
<string name="see_less" msgid="2642392725363552793">"Zobraziť menej"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Chcete vypnúť operátora <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Chcete vypnúť SIM kartu?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Vypína sa SIM karta<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Operátor sa nedá deaktivovať"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Vyskytol sa problém a operátora sa nepodarilo deaktivovať."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Pripojenie k zariadeniu"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> chce použiť dočasnú sieť Wi‑Fi na pripojenie k vášmu zariadeniu"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Nenašli sa žiadne zariadenia. Skontrolujte, či sú zariadenia zapnuté a dostupné na pripojenie."</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index a360526..3d6da40 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -1070,8 +1070,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Vnesite veljaven naslov prehoda."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Vnesite veljaven naslov DNS."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Vnesite predpono omrežja, dolgo med 0 in 32 znaki."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Prehod"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Dolžina predpone omrežja"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4995,6 +4997,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Ni na voljo ob vzpostavljeni povezavi z operaterjem <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Pokaži več"</string>
<string name="see_less" msgid="2642392725363552793">"Pokaži manj"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Želite izklopiti storitev operaterja <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Želite izklopiti kartico SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Izklapljanje kartice SIM <xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Operaterja ni mogoče onemogočiti"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Prišlo je do napake, operaterja ni bilo mogoče onemogočiti."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Vzpostavitev povezave z napravo"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Aplikacija <xliff:g id="APPNAME">%1$s</xliff:g> želi uporabiti začasno omrežje Wi-Fi za vzpostavitev povezave z napravo"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Ni naprav. Preverite, ali so naprave vklopljene in na voljo za vzpostavitev povezave."</string>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 860da15..d919858 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Shkruaj një adresë të vlefshme porte kalimi."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Shkruaj një adresë të vlefshme DNS-je."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Shkruaj një gjatësi prefiksi rrjeti mes 0 dhe 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Porta e kalimit"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Gjatësia e prefiksit të rrjetit"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Nuk ofrohet kur është e lidhur me <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Shiko më shumë"</string>
<string name="see_less" msgid="2642392725363552793">"Shiko më pak"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Të çaktivizohet <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Të çaktivizohet karta SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Po çaktivizohet karta SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Operatori celular nuk mund të çaktivizohet"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Ndodhi një gabim dhe operatori celular nuk mund të çaktivizohet."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Lidhu me pajisjen"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Aplikacioni <xliff:g id="APPNAME">%1$s</xliff:g> dëshiron të përdorë një rrjet të përkohshëm Wi-Fi për t\'u lidhur me pajisjen tënde"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Nuk u gjet asnjë pajisje. Sigurohu që pajisjet të jenë të ndezura dhe të gatshme për t\'u lidhur."</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 6c160cb..68871c2 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -1050,8 +1050,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Унесите важећу адресу мрежног пролаза."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Унесите важећу DNS адресу."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Унесите префикс мреже дужине између 0 и 32 знака."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Мрежни пролаз"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Дужина префикса мреже"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -1823,10 +1825,10 @@
<string name="lockpassword_forgot_password" msgid="5730587692489737223">"Заборавили сте лозинку?"</string>
<string name="lockpassword_forgot_pattern" msgid="1196116549051927516">"Заборавили сте шаблон?"</string>
<string name="lockpassword_forgot_pin" msgid="7164232234705747672">"Заборавили сте PIN?"</string>
- <string name="lockpassword_confirm_your_pattern_generic" msgid="7692794426682501482">"Употребите шаблон за уређај да бисте наставили"</string>
+ <string name="lockpassword_confirm_your_pattern_generic" msgid="7692794426682501482">"Користите шаблон за уређај да бисте наставили"</string>
<string name="lockpassword_confirm_your_pin_generic" msgid="9206928587904701094">"Унесите PIN уређаја да бисте наставили"</string>
<string name="lockpassword_confirm_your_password_generic" msgid="2616127423884477152">"Унесите лозинку уређаја да бисте наставили"</string>
- <string name="lockpassword_confirm_your_pattern_generic_profile" msgid="9110305410672321714">"Употребите шаблон за пословни профил да бисте наставили"</string>
+ <string name="lockpassword_confirm_your_pattern_generic_profile" msgid="9110305410672321714">"Користите шаблон за пословни профил да бисте наставили"</string>
<string name="lockpassword_confirm_your_pin_generic_profile" msgid="6524208128570235127">"Унесите PIN за пословни профил да бисте наставили"</string>
<string name="lockpassword_confirm_your_password_generic_profile" msgid="5918738487760814147">"Унесите лозинку за пословни профил да бисте наставили"</string>
<string name="lockpassword_strong_auth_required_device_pattern" msgid="113817518413715557">"Ради веће безбедности користите шаблон за уређај"</string>
@@ -4914,6 +4916,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Недоступно када је успостављена веза са оператером <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Прикажи још"</string>
<string name="see_less" msgid="2642392725363552793">"Прикажи мање"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Желите ли да искључите услугу <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Желите ли да искључите SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM се искључује<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Онемогућавање мобилног оператера није успело"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Дошло је до грешке и онемогућавање мобилног оператера није успело."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Повежите се са уређајем"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Апликација <xliff:g id="APPNAME">%1$s</xliff:g> жели да користи привремену Wi‑Fi мрежу да би се повезала са уређајем"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Није пронађен ниједан уређај Проверите да ли је уређај укључен и доступан за повезивање."</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 9a073b7..888b62f 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Ange en giltig gateway-adress."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Ange en giltig DNS-adress."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Ange en nätverksprefixlängd mellan 0 och 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Nätverksprefixets längd"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Inte tillgänglig vid anslutning till <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Visa mer"</string>
<string name="see_less" msgid="2642392725363552793">"Visa färre"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Vill du inaktivera <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Vill du inaktivera SIM-kortet?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM-kortet inaktiveras <xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Det gick inte att inaktivera operatören"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Något gick fel och operatören gick inte att inaktivera."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Anslut till enhet"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Appen <xliff:g id="APPNAME">%1$s</xliff:g> vill ansluta till enheten via ett tillfälligt Wi-Fi-nätverk"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Inga enheter hittades. Kontrollera att enheterna är på och går att ansluta till."</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index eba55e2..63f5f93 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Tafadhali charaza anwani halali ya lango."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Tafadhali charaza anwani halali ya DNS."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Andika urefu wa kiambishi awali cha mtandao kati ya 0 na 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Lango"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Urefu wa kiambishi awali cha mtandao"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Moja kwa moja"</string>
@@ -4834,6 +4836,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Haipatikani inapounganishwa kwenye <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Angalia zaidi"</string>
<string name="see_less" msgid="2642392725363552793">"Angalia chache"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Ungependa kuzima <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Ungependa kuzima SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Inazima SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Imeshindwa kuzima mtandao wa mtoa huduma"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Hitilafu imetokea na mtandao wa mtoa huduma wako haukuweza kuzimwa."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Unganisha kwenye kifaa"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> yako inataka kutumia mtandao wa muda wa Wi‑Fi kuunganisha kwenye kifaa chako"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Hakuna vifaa vilivyopatikana. Hakikisha kuwa umewasha vifaa na vinaweza kuunganishwa."</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 6b33207..f94f133 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"சரியான கேட்வே முகவரியை உள்ளிடவும்."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"சரியான DNS முகவரியை உள்ளிடவும்."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 மற்றும் 32 க்கு இடையிலான நெட்வொர்க் முன் நீளத்தை உள்ளிடவும்."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"கேட்வே"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"நெட்வொர்க் முன்னொட்டு நீளம்"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"வைஃபை டைரக்ட்"</string>
@@ -1795,9 +1797,9 @@
<string name="lockpassword_choose_your_password_header_for_face" msgid="5359649947642749079">"முகம் காட்டித் திறக்க பின்னை அமைக்கவும்"</string>
<string name="lockpassword_choose_your_pattern_header_for_face" msgid="9220480399170764760">"முகம் காட்டி திறக்க பேட்டர்னை அமைக்கவும்"</string>
<string name="lockpassword_choose_your_pin_header_for_face" msgid="2285401208117502869">"முகம் காட்டித் திறக்க பின்னை அமைக்கவும்"</string>
- <string name="lockpassword_choose_your_password_header_for_biometrics" msgid="9091792721166354172">"பயோமெட்ரிக்ஸுக்கான மாற்றுத் திறப்புமுறை"</string>
- <string name="lockpassword_choose_your_pattern_header_for_biometrics" msgid="4949972592985176347">"பயோமெட்ரிக்ஸுக்கான மாற்றுத் திறப்புமுறை"</string>
- <string name="lockpassword_choose_your_pin_header_for_biometrics" msgid="4215367936503271941">"பயோமெட்ரிக்ஸுக்கான மாற்றுத் திறப்புமுறை"</string>
+ <string name="lockpassword_choose_your_password_header_for_biometrics" msgid="9091792721166354172">"பயோமெட்ரிக்ஸுக்கான கடவுச்சொல்லை அமை"</string>
+ <string name="lockpassword_choose_your_pattern_header_for_biometrics" msgid="4949972592985176347">"பயோமெட்ரிக்ஸுக்கான பேட்டர்னை அமை"</string>
+ <string name="lockpassword_choose_your_pin_header_for_biometrics" msgid="4215367936503271941">"பயோமெட்ரிக்ஸுக்கான பின் குறியீட்டை அமை"</string>
<string name="lockpassword_forgot_password" msgid="5730587692489737223">"கடவுச்சொல்லை மறந்துவிட்டீர்களா?"</string>
<string name="lockpassword_forgot_pattern" msgid="1196116549051927516">"பேட்டர்னை மறந்துவிட்டீர்களா?"</string>
<string name="lockpassword_forgot_pin" msgid="7164232234705747672">"பின்னை மறந்துவிட்டீர்களா?"</string>
@@ -1970,7 +1972,7 @@
<string name="app_disable_dlg_positive" msgid="1414218905322009505">"ஆப்ஸை முடக்கு"</string>
<string name="app_disable_dlg_text" msgid="2449382902751908916">"இந்த ஆப்ஸை முடக்கினால் Androidம் பிற ஆப்ஸும் எதிர்பார்த்தவாறு செயல்படாமல் போகக்கூடும். கவனத்திற்கு: சாதனத்தை வாங்கும்போதே ஆப்ஸ் நிறுவப்பட்டுள்ளதால் இதை நீக்க இயலாது. இதை முடக்குவதன் மூலம் ஆஃப் செய்யப்பட்ட நிலையில் ஆப்ஸ் சாதனத்திலேயே இருக்கும்"</string>
<string name="app_disable_notifications_dlg_title" msgid="6686569904059411780">"அறிவிப்புகளை முடக்கவா?"</string>
- <string name="app_install_details_group_title" msgid="1172114479073704677">"ஸ்டோர்"</string>
+ <string name="app_install_details_group_title" msgid="1172114479073704677">"Store"</string>
<string name="app_install_details_title" msgid="7783556181897142187">"ஆப்ஸின் விவரங்கள்"</string>
<string name="app_install_details_summary" msgid="2013043219249992373">"ஆப்ஸ் <xliff:g id="APP_STORE">%1$s</xliff:g> இலிருந்து நிறுவப்பட்டது"</string>
<string name="instant_app_details_summary" msgid="417197491598208216">"<xliff:g id="APP_STORE">%1$s</xliff:g> பற்றிய கூடுதல் தகவல்"</string>
@@ -3888,9 +3890,9 @@
<string name="encryption_interstitial_message_pin_for_face" msgid="8577135499926738241">"சாதனத்தைத் திறப்பதற்கு உங்கள் முகத்தைப் பயன்படுத்துவது மட்டுமல்லாமல், சாதனம் தொடங்கும் முன்பாக, பின்னை உள்ளிடும்படி அமைத்து, கூடுதல் பாதுகாப்பை வழங்கலாம். சாதனம் தொடங்கும்வரை, அழைப்புகள், மெசேஜ்கள், அலாரங்கள் உள்ளிட்ட எவற்றையும் சாதனத்தால் பெற இயலாது.\n\nசாதனம் தொலைந்துவிட்டாலோ திருடப்பட்டாலோ, அதிலுள்ள தரவைப் பாதுகாக்க இது உதவும். சாதனத்தைத் தொடங்கும்போது கடவுச்சொல்லைக் கேட்குமாறு அமைக்கவா?"</string>
<string name="encryption_interstitial_message_pattern_for_face" msgid="5851725964283239644">"சாதனத்தைத் திறப்பதற்கு உங்கள் முகத்தைப் பயன்படுத்துவது மட்டுமல்லாமல், சாதனம் தொடங்கும் முன்பாக, பேட்டர்னை உள்ளிடும்படி அமைத்து, கூடுதல் பாதுகாப்பை வழங்கலாம். சாதனம் தொடங்கும்வரை, அழைப்புகள், மெசேஜ்கள், அலாரங்கள் உள்ளிட்ட எவற்றையும் சாதனத்தால் பெற இயலாது. \n\nசாதனம் தொலைந்துவிட்டாலோ திருடப்பட்டாலோ, அதிலுள்ள தரவைப் பாதுகாக்க இது உதவும். சாதனத்தைத் தொடங்கும்போது கடவுச்சொல்லைக் கேட்குமாறு அமைக்கவா?"</string>
<string name="encryption_interstitial_message_password_for_face" msgid="3553329272456428461">"சாதனத்தைத் திறப்பதற்கு உங்கள் முகத்தைப் பயன்படுத்துவது மட்டுமல்லாமல், சாதனம் தொடங்கும் முன்பாக, கடவுச்சொல்லை உள்ளிடும்படி அமைத்து, கூடுதல் பாதுகாப்பை வழங்கலாம். சாதனம் தொடங்கும்வரை, அழைப்புகள், மெசேஜ்கள், அலாரங்கள் உள்ளிட்ட எவற்றையும் சாதனத்தால் பெற இயலாது. \n\nசாதனம் தொலைந்துவிட்டாலோ திருடப்பட்டாலோ, அதிலுள்ள தரவைப் பாதுகாக்க இது உதவும். சாதனத்தைத் தொடங்கும்போது கடவுச்சொல்லைக் கேட்குமாறு அமைக்கவா?"</string>
- <string name="encryption_interstitial_message_pin_for_biometrics" msgid="4590004045791674901">"உங்கள் சாதனத்தைத் திறக்க பயோமெட்ரிக்ஸைப் பயன்படுத்துவதுடன் பின் குறியீடு (PIN) தேவைப்படுமாறும் அமைத்து இந்தச் சாதனத்திற்குக் கூடுதல் பாதுகாப்பை வழங்கலாம். சாதனம் தொடங்கும் வரை அழைப்புகள், மெசேஜ்கள் அல்லது அலாரங்கள் உள்ளிட்ட அறிவிப்புகளை இதில் பெற முடியாது.\n\nஉங்கள் சாதனம் தொலைந்து போனாலோ திருடு போனாலோ அதில் உள்ள டேட்டாவைப் பாதுகாக்க இதைக் கடைப்பிடிக்கலாம். உங்கள் சாதனத்தைத் தொடங்க, பின் குறியீடு (PIN) தேவைப்படுமாறு அமைக்கவா?"</string>
- <string name="encryption_interstitial_message_pattern_for_biometrics" msgid="2697768285995352576">"உங்கள் சாதனத்தைத் திறக்க பயோமெட்ரிக்ஸைப் பயன்படுத்துவதுடன் பேட்டர்ன் தேவைப்படுமாறும் அமைத்து இந்தச் சாதனத்திற்குக் கூடுதல் பாதுகாப்பை வழங்கலாம். சாதனம் தொடங்கும் வரை அழைப்புகள், மெசேஜ்கள் அல்லது அலாரங்கள் உள்ளிட்ட அறிவிப்புகளை இதில் பெற முடியாது.\n\nஉங்கள் சாதனம் தொலைந்து போனாலோ திருடு போனாலோ அதில் உள்ள டேட்டாவைப் பாதுகாக்க இதைக் கடைப்பிடிக்கலாம். உங்கள் சாதனத்தைத் தொடங்க, பேட்டர்ன் தேவைப்படுமாறு அமைக்கவா?"</string>
- <string name="encryption_interstitial_message_password_for_biometrics" msgid="1895561539964730123">"உங்கள் சாதனத்தைத் திறக்க பயோமெட்ரிக்ஸைப் பயன்படுத்துவதுடன் கடவுச்சொல் தேவைப்படுமாறும் அமைத்து இந்தச் சாதனத்திற்குக் கூடுதல் பாதுகாப்பை வழங்கலாம். சாதனம் தொடங்கும் வரை அழைப்புகள், மெசேஜ்கள் அல்லது அலாரங்கள் உள்ளிட்ட அறிவிப்புகளை இதில் பெற முடியாது.\n\nஉங்கள் சாதனம் தொலைந்து போனாலோ திருடு போனாலோ அதில் உள்ள டேட்டாவைப் பாதுகாக்க இதைக் கடைப்பிடிக்கலாம். உங்கள் சாதனத்தைத் தொடங்க, கடவுச்சொல் தேவைப்படுமாறு அமைக்கவா?"</string>
+ <string name="encryption_interstitial_message_pin_for_biometrics" msgid="4590004045791674901">"உங்கள் சாதனத்தைத் திறக்க பயோமெட்ரிக்ஸைப் பயன்படுத்துவதுடன் பின் குறியீடு (PIN) தேவைப்படுமாறும் அமைத்து இந்தச் சாதனத்திற்குக் கூடுதல் பாதுகாப்பை வழங்கலாம். சாதனம் தொடங்கும் வரை அழைப்புகள், மெசேஜ்கள் அல்லது அலாரங்கள் உள்ளிட்ட அறிவிப்புகளை இதில் பெற முடியாது.\n\nஉங்கள் சாதனம் தொலைந்து போனாலோ திருடு போனாலோ அதில் உள்ள தரவைப் பாதுகாக்க இதைக் கடைப்பிடிக்கலாம். உங்கள் சாதனத்தைத் தொடங்க, பின் குறியீடு (PIN) தேவைப்படுமாறு அமைக்கவா?"</string>
+ <string name="encryption_interstitial_message_pattern_for_biometrics" msgid="2697768285995352576">"உங்கள் சாதனத்தைத் திறக்க பயோமெட்ரிக்ஸைப் பயன்படுத்துவதுடன் பேட்டர்ன் தேவைப்படுமாறும் அமைத்து இந்தச் சாதனத்திற்குக் கூடுதல் பாதுகாப்பை வழங்கலாம். சாதனம் தொடங்கும் வரை அழைப்புகள், மெசேஜ்கள் அல்லது அலாரங்கள் உள்ளிட்ட அறிவிப்புகளை இதில் பெற முடியாது.\n\nஉங்கள் சாதனம் தொலைந்து போனாலோ திருடு போனாலோ அதில் உள்ள தரவைப் பாதுகாக்க இதைக் கடைப்பிடிக்கலாம். உங்கள் சாதனத்தைத் தொடங்க, பேட்டர்ன் தேவைப்படுமாறு அமைக்கவா?"</string>
+ <string name="encryption_interstitial_message_password_for_biometrics" msgid="1895561539964730123">"உங்கள் சாதனத்தைத் திறக்க பயோமெட்ரிக்ஸைப் பயன்படுத்துவதுடன் கடவுச்சொல் தேவைப்படுமாறும் அமைத்து இந்தச் சாதனத்திற்குக் கூடுதல் பாதுகாப்பை வழங்கலாம். சாதனம் தொடங்கும் வரை அழைப்புகள், மெசேஜ்கள் அல்லது அலாரங்கள் உள்ளிட்ட அறிவிப்புகளை இதில் பெற முடியாது.\n\nஉங்கள் சாதனம் தொலைந்து போனாலோ திருடு போனாலோ அதில் உள்ள தரவைப் பாதுகாக்க இதைக் கடைப்பிடிக்கலாம். உங்கள் சாதனத்தைத் தொடங்க, கடவுச்சொல் தேவைப்படுமாறு அமைக்கவா?"</string>
<string name="encryption_interstitial_yes" msgid="1948016725089728181">"ஆம்"</string>
<string name="encryption_interstitial_no" msgid="3352331535473118487">"வேண்டாம்"</string>
<string name="restricted_true_label" msgid="612852292488747564">"கட்டுப்படுத்தியது"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g> உடன் இணைந்திருக்கும்போது கிடைக்காது"</string>
<string name="see_more" msgid="7499355691042812723">"மேலும் காட்டு"</string>
<string name="see_less" msgid="2642392725363552793">"குறைவாகக் காட்டு"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> ஐ ஆஃப் செய்யவா?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"சிம்மை ஆஃப் செய்யவா?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"சிம்மை ஆஃப் செய்கிறது<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"தொலைத்தொடர்பு நிறுவனத்தை முடக்க முடியவில்லை"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"ஏதோ தவறாகிவிட்டதால் தொலைத்தொடர்பு நிறுவனத்தை முடக்க முடியவில்லை."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"சாதனத்துடன் இணைத்தல்"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"உங்கள் சாதனத்துடன் இணைக்க <xliff:g id="APPNAME">%1$s</xliff:g> ஆப்ஸ் தற்காலிகமான வைஃபை நெட்வொர்க்கைப் பயன்படுத்த விரும்புகிறது"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"சாதனங்கள் எதுவும் இல்லை. சாதனங்கள் ஆன் செய்யப்பட்டு இணைப்பதற்குத் தயாராக உள்ளனவா என்பதை உறுதிப்படுத்தவும்."</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index a68378e..b0553b1 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"చెల్లుబాటు అయ్యే గేట్వే చిరునామాను టైప్ చేయండి."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"చెల్లుబాటు అయ్యే DNS చిరునామాను టైప్ చేయండి."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"నెట్వర్క్ ఆదిప్రత్యయ పొడవు 0 మరియు 32 మధ్య ఉండేలా టైప్ చేయండి."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"గేట్వే"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"నెట్వర్క్ ప్రిఫిక్స్ పొడవు"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4835,6 +4837,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g>కి కనెక్ట్ చేసినప్పుడు అందుబాటులో ఉండదు"</string>
<string name="see_more" msgid="7499355691042812723">"మరిన్నింటిని చూడండి"</string>
<string name="see_less" msgid="2642392725363552793">"తక్కువ చూడండి"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>ను ఆఫ్ చేయాలా?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"సిమ్ను ఆఫ్ చేయాలా?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"సిమ్ను ఆఫ్ చేస్తోంది<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"క్యారియర్ను డిజేబుల్ చేయడం సాధ్యం కాదు"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"ఏదో తప్పు జరిగింది, మీ క్యారియర్ను డిజేబుల్ చేయడం సాధ్యం కాలేదు."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"పరికరానికి కనెక్ట్ చేయండి"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"మీ పరికరానికి కనెక్ట్ కావడానికి <xliff:g id="APPNAME">%1$s</xliff:g> యాప్ తాత్కాలిక Wi‑Fi నెట్వర్క్ను ఉపయోగించాలనుకుంటుంది"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"పరికరాలు ఏవీ కనుగొనబడలేదు. పరికరాలు ఆన్లో ఉన్నాయని మరియు కనెక్ట్ చేయడానికి అందుబాటులో ఉన్నాయని నిర్ధారించుకోండి."</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 9d7a99c..9956acd 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"พิมพ์ที่อยู่เกตเวย์ที่ถูกต้อง"</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"พิมพ์ที่อยู่ DNS ที่ถูกต้อง"</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"พิมพ์รหัสนำหน้าเครือข่ายซึ่งยาว 0 ถึง 32 อักขระ"</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"เกตเวย์"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"ความยาวรหัสนำเครือข่าย"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"ใช้ไม่ได้เมื่อเชื่อมต่อกับ <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"ดูเพิ่ม"</string>
<string name="see_less" msgid="2642392725363552793">"ดูน้อยลง"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"ต้องการปิด <xliff:g id="CARRIER_NAME">%1$s</xliff:g> ใช่ไหม"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"ปิดซิมใช่ไหม"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"กำลังปิดซิม<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"ปิดใช้ผู้ให้บริการไม่ได้"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"เกิดข้อผิดพลาดที่ทำให้ปิดใช้ผู้ให้บริการไม่ได้"</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"เชื่อมต่อกับอุปกรณ์"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"แอป <xliff:g id="APPNAME">%1$s</xliff:g> ต้องการใช้เครือข่าย Wi‑Fi ชั่วคราวเพื่อเชื่อมต่อไปยังอุปกรณ์"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"ไม่พบอุปกรณ์ ตรวจสอบว่าอุปกรณ์เปิดอยู่และพร้อมเชื่อมต่อ"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index a00617d..c9fa4d6 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Mag-type ng isang wastong gateway address."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Mag-type ng wastong DNS address."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Mag-type haba ng network prefix pagitan 0 at 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Gateway"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Haba ng prefix ng network"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Hindi available kapag nakakonekta sa <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Tumingin pa"</string>
<string name="see_less" msgid="2642392725363552793">"Tumingin nang kaunti"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"I-off ang <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"I-off ang SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Ino-off ang SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Hindi ma-disable ang carrier"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Nagkaproblema at hindi ma-disable ang iyong carrier."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Kumonekta sa device"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Gustong gumamit ng <xliff:g id="APPNAME">%1$s</xliff:g> app ng pansamantalang Wi‑Fi network para kumonekta sa iyong device"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Walang nahanap na device. Tiyaking naka-on ang mga device at available para kumonekta."</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index b4d3a6d..145d92c 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Geçerli bir ağ geçidi adresi yazın."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Geçerli bir DNS adresi yazın."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 ile 32 arasında bir ağ önek uzunluğu yazın."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Ağ geçidi"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Ağ önek uzunluğu"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Kablosuz Doğrudan Bağlantı"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g> operatörüne bağlıyken kullanılamaz"</string>
<string name="see_more" msgid="7499355691042812723">"Daha fazla"</string>
<string name="see_less" msgid="2642392725363552793">"Daha az göster"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> kapatılsın mı?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"SIM kapatılsın mı?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM kapatılıyor<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Operatör devre dışı bırakılamıyor"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Bir hata oluştu ve operatörünüz devre dışı bırakılamadı."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Cihaza bağlanın"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> uygulaması cihazınıza bağlanmak için geçici bir kablosuz ağ kullanmak istiyor"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Hiçbir cihaz bulunamadı. Cihazların açık ve bağlanmaya hazır olduğundan emin olun."</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 1e03fc7..04b9b7c 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -1070,8 +1070,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Введіть дійсну адресу шлюзу."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Введіть дійсну DNS-адресу."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Введіть довжину префікса мережі від 0 до 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Шлюз"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Довжина префіксу мережі"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4023,7 +4025,7 @@
<string name="storage_type_internal" msgid="979243131665635278">"внутрішня пам\'ять"</string>
<string name="storage_type_external" msgid="125078274000280821">"зовнішня пам\'ять"</string>
<string name="data_summary_format" msgid="8802057788950096650">"З <xliff:g id="DATE">%2$s</xliff:g> використано <xliff:g id="SIZE">%1$s</xliff:g>"</string>
- <string name="storage_used" msgid="2591194906751432725">"Використано пам’яті"</string>
+ <string name="storage_used" msgid="2591194906751432725">"Використане сховище"</string>
<string name="change" msgid="273206077375322595">"Змінити"</string>
<string name="change_storage" msgid="8773820275624113401">"Змінити пам’ять"</string>
<string name="notifications_label" msgid="8471624476040164538">"Сповіщення"</string>
@@ -4995,6 +4997,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Недоступно, коли підключено до оператора <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Докладніше"</string>
<string name="see_less" msgid="2642392725363552793">"Показати менше"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Вимкнути оператора \"<xliff:g id="CARRIER_NAME">%1$s</xliff:g>\"?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Вимкнути SIM-карту?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Вимкнення SIM-карти<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Не вдається вимкнути оператора"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Сталася помилка. Не вдалося вимкнути оператора."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Підключитися до пристрою"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Додаток <xliff:g id="APPNAME">%1$s</xliff:g> запитує дозвіл підключитися до пристрою через тимчасову мережу Wi‑Fi"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Немає пристроїв. Переконайтеся, що пристрої ввімкнені й готові до з’єднання."</string>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 6293450..94d2362 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"ایک درست گیٹ وے پتہ ٹائپ کریں۔"</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"ایک درست DNS پتہ ٹائپ کریں۔"</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"0 اور 32 کے طوالت کے درمیان ایک نیٹ ورک سابقہ ٹائپ کریں۔"</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"گیٹ وے"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"نیٹ ورک کے سابقہ کی لمبائی"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi ڈائریکٹ"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g> سے منسلک ہونے پر دستیاب نہیں ہے"</string>
<string name="see_more" msgid="7499355691042812723">"مزید دیکھیں"</string>
<string name="see_less" msgid="2642392725363552793">"کم دیکھیں"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> آف کریں؟"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"SIM آف کریں؟"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"<xliff:g id="ELLIPSIS">…</xliff:g>SIM کو آف کیا جا رہا ہے"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"کیریئر کو غیر فعال نہیں کیا جا سکتا"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"کچھ غلط ہوگیا اور آپ کے کیریئر کو غیر فعال نہیں کیا سکا۔"</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"آلے سے منسلک کریں"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> ایپ آپ کے آلے سے منسلک ہونے کے لیے عارضی Wi-Fi نیٹ ورک استعمال کرنا چاہتی ہے"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"کوئی آلہ نہیں ملا۔ یقینی بنائیں کہ آلات آن ہیں اور منسلک کرنے کے لیے دستیاب ہیں۔"</string>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 9bfdc86..02428a8 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Shlyuz manzilini to‘g‘ri kiriting."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"DNS manzilini to‘g‘ri kiriting."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Tarmoq raqamlari sig‘imini 0 va 32 oralig‘ida tering."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Shlyuz"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Tarmoq prefiksi uzunligi"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"<xliff:g id="CARRIER">%1$s</xliff:g> bilan ishlamaydi"</string>
<string name="see_more" msgid="7499355691042812723">"Yana"</string>
<string name="see_less" msgid="2642392725363552793">"Kamroq"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"<xliff:g id="CARRIER_NAME">%1$s</xliff:g> faolsizlantirilsinmi?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"SIM karta faolsizlantirilsinmi?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"SIM karta faolsizlantirmoqda<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Aloqa operatori faolsizlantirilmadi"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Xatolik yuz berdi va aloqa operatoringiz faolsizlantirilmadi."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Qurilmaga ulanish"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"<xliff:g id="APPNAME">%1$s</xliff:g> ilovasi qurilmangizga ulanish uchun vaqtinchalik Wi‑Fi tarmoqdan foydalanmoqchi"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Qurilmalar topilmadi. Qurilmalar yoniq va tarmoqda ekanligi tekshiring."</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 9a21ae0..d3be4ed 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Hãy nhập địa chỉ cổng hợp lệ."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Hãy nhập địa chỉ DNS hợp lệ."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Hãy nhập độ dài tiền tố mạng từ 0 đến 32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Cổng"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Độ dài tiền tố mạng"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi‑Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Không sử dụng được khi kết nối với <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Xem thêm"</string>
<string name="see_less" msgid="2642392725363552793">"Xem bớt"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Tắt <xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Tắt SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Đang tắt SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Không thể tắt nhà mạng"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Đã xảy ra lỗi nên bạn không thể tắt nhà mạng."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Kết nối với thiết bị"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Ứng dụng <xliff:g id="APPNAME">%1$s</xliff:g> muốn dùng mạng Wi-Fi tạm thời để kết nối với thiết bị của bạn"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Không tìm thấy thiết bị nào. Đảm bảo rằng các thiết bị đang bật và sẵn sàng kết nối."</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index be74ff9..bd296d1 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"请键入有效的网关地址。"</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"请输入有效的DNS地址。"</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"键入长度在 0 到 32 之间的网络前缀。"</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"网关"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"网络前缀长度"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"WLAN 直连"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"连接到<xliff:g id="CARRIER">%1$s</xliff:g>时无法使用"</string>
<string name="see_more" msgid="7499355691042812723">"查看更多"</string>
<string name="see_less" msgid="2642392725363552793">"隐藏部分"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"要停用<xliff:g id="CARRIER_NAME">%1$s</xliff:g>吗?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"要停用 SIM 卡吗?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"正在停用 SIM 卡<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"无法停用运营商"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"出了点问题,无法停用您的运营商。"</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"连接到设备"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"“<xliff:g id="APPNAME">%1$s</xliff:g>”应用要使用临时 WLAN 网络连接到您的设备"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"找不到设备。请确保设备已开启并可连接到网络。"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 39d7224..7ed7ae2 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"請輸入有效的閘道位址。"</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"請輸入有效的 DNS 位址。"</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"請輸入介乎 0 至 32 之間的網絡首碼長度。"</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"閘道"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"網絡前置字元長度"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4834,6 +4836,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"無法在連接至<xliff:g id="CARRIER">%1$s</xliff:g>時使用"</string>
<string name="see_more" msgid="7499355691042812723">"查看更多"</string>
<string name="see_less" msgid="2642392725363552793">"顯示較少"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"要停用 <xliff:g id="CARRIER_NAME">%1$s</xliff:g> 嗎?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"要停用 SIM 卡嗎?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"正在停用 SIM 卡<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"無法停用流動網絡供應商"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"發生問題,無法停用您的流動網絡供應商。"</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"連接裝置"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"「<xliff:g id="APPNAME">%1$s</xliff:g>」應用程式要求使用臨時 Wi-Fi 網絡連接您的裝置"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"找不到任何裝置。請確保裝置已開啟,並可連接網絡。"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 8e35959..8e8c56a 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"輸入有效的閘道位址。"</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"請輸入有效的 DNS 位址。"</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"輸入長度介於 0 到 32 之間的網路前置碼。"</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"閘道"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"網路前置碼長度"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"Wi-Fi Direct"</string>
@@ -4833,6 +4835,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"無法在連線到「<xliff:g id="CARRIER">%1$s</xliff:g>」時使用"</string>
<string name="see_more" msgid="7499355691042812723">"顯示更多"</string>
<string name="see_less" msgid="2642392725363552793">"顯示較少"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"要停用「<xliff:g id="CARRIER_NAME">%1$s</xliff:g>」嗎?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"要停用 SIM 卡嗎?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"正在停用 SIM 卡<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"無法停用電信業者"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"發生錯誤,無法停用你的電信業者。"</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"連線至裝置"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"「<xliff:g id="APPNAME">%1$s</xliff:g>」應用程式想透過臨時的 Wi-Fi 網路連線至你的裝置"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"找不到裝置。請確認裝置已經開啟並可進行連線。"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 3834e96..b7a5d11 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -1030,8 +1030,10 @@
<string name="wifi_ip_settings_invalid_gateway" msgid="1174931247370931239">"Sicela uthayiphe ikheli le-IP elilungile."</string>
<string name="wifi_ip_settings_invalid_dns" msgid="1757402215999845975">"Sicela uthayiphe ikheli le-IP elilungile."</string>
<string name="wifi_ip_settings_invalid_network_prefix_length" msgid="5980808986926987299">"Sicela uthayiphe ubude bephrifiksi yenethiwekhi phakathi kuka-0 no-32."</string>
- <string name="wifi_dns1" msgid="6462967242512284778">"DNS 1"</string>
- <string name="wifi_dns2" msgid="8494337355389723965">"DNS 2"</string>
+ <!-- no translation found for wifi_dns1 (6764769531843748514) -->
+ <skip />
+ <!-- no translation found for wifi_dns2 (7273133202625326148) -->
+ <skip />
<string name="wifi_gateway" msgid="3699227808616416759">"Indlela yokuphuma"</string>
<string name="wifi_network_prefix_length" msgid="1003365439352276622">"Ubude begama eliqalayo lenethiwekhi"</string>
<string name="wifi_p2p_settings_title" msgid="1689918226469221870">"I-Wi-Fi eqondile"</string>
@@ -4834,6 +4836,11 @@
<string name="manual_mode_disallowed_summary" msgid="4243142645520152175">"Ayitholakali uma ixhumeke ku-<xliff:g id="CARRIER">%1$s</xliff:g>"</string>
<string name="see_more" msgid="7499355691042812723">"Bona okuningi"</string>
<string name="see_less" msgid="2642392725363552793">"Buka okuncane"</string>
+ <string name="privileged_action_disable_sub_dialog_title" msgid="3298942357601334418">"Vala i-<xliff:g id="CARRIER_NAME">%1$s</xliff:g>?"</string>
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier" msgid="6518373229436331608">"Vala i-SIM?"</string>
+ <string name="privileged_action_disable_sub_dialog_progress" msgid="5900243067681478102">"Ivala i-SIM<xliff:g id="ELLIPSIS">…</xliff:g>"</string>
+ <string name="privileged_action_disable_fail_title" msgid="3959790932910391006">"Ayikwazi ukukhubaza inkampani yenethiwekhi"</string>
+ <string name="privileged_action_disable_fail_text" msgid="8404023523406091819">"Kukhona okungahambanga kahle futhi inkampani yakho yenethiwekhi ayikwazanga ukukhutshazwa."</string>
<string name="network_connection_request_dialog_title" msgid="1896186380874289434">"Xhuma kudivayisi"</string>
<string name="network_connection_request_dialog_summary" msgid="7693038309792726170">"Uhlelo lokusebenza le-<xliff:g id="APPNAME">%1$s</xliff:g> lifuna ukusebenzisa inethiwekhi ye-Wi‑Fi ukuxhuma kudivayisi yakho"</string>
<string name="network_connection_timeout_dialog_message" msgid="598509083077743772">"Awekho amadivayisi atholiwe. Yenza isiqinisekiso sokuthi amadivayisi avuliwe futhi ayatholakala ukuze axhumeke."</string>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 799aa22..a561df2 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -51,9 +51,6 @@
<dimen name="pager_tabs_title_padding">16dp</dimen>
<dimen name="pager_tabs_selected_indicator_height">3dp</dimen>
- <!-- Minimum width for the popup for updating a user's photo. -->
- <dimen name="update_user_photo_popup_min_width">300dip</dimen>
-
<dimen name="captioning_preview_height">200dp</dimen>
<dimen name="autoclick_preview_height">200dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f958e06..f6c69d3 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2305,9 +2305,9 @@
<!-- Error message if the network prefix length is not valid [CHAR LIMIT=50]-->
<string name="wifi_ip_settings_invalid_network_prefix_length">Type a network prefix length between 0 and 32.</string>
<!-- Label for the DNS (first one) -->
- <string name="wifi_dns1">DNS 1</string>
+ <string name="wifi_dns1">DNS 1 (unless overridden by Private DNS)</string>
<!-- Label for the DNS (second one)-->
- <string name="wifi_dns2">DNS 2</string>
+ <string name="wifi_dns2">DNS 2 (unless overridden by Private DNS)</string>
<!-- Label for the gateway of the network -->
<string name="wifi_gateway">Gateway</string>
<!-- Label for the network prefix of the network [CHAR LIMIT=25]-->
@@ -6990,8 +6990,6 @@
<string name="user_admin">Admin</string>
<!-- User settings title for current user entry "You" user. [CHAR LIMIT=30] -->
<string name="user_you">You (<xliff:g id="name" example="Name">%s</xliff:g>)</string>
- <!-- Title for the preference to enter the nickname of the userto display in the user switcher [CHAR LIMIT=25]-->
- <string name="user_nickname">Nickname</string>
<!-- Summary for add user action, when it's disabled [CHAR LIMIT=100] -->
<string name="user_add_max_count">You can add up to <xliff:g id="user_count">%1$d</xliff:g> users</string>
@@ -7429,13 +7427,6 @@
<!-- Wizard finish button label [CHAR LIMIT=25] -->
<string name="wizard_finish">Finish</string>
- <!-- An option in a photo selection dialog to take a new photo [CHAR LIMIT=50] -->
- <string name="user_image_take_photo" msgid="7496128293167402354">Take a photo</string>
- <!-- An option in a photo selection dialog to choose a pre-existing image [CHAR LIMIT=50] -->
- <string name="user_image_choose_photo" msgid="3746334626214970837">Choose an image</string>
- <!-- Accessibility message for the photo selector which is a button/popup with the current photo [CHAR LIMIT=50] -->
- <string name="user_image_photo_selector">Select photo</string>
-
<!-- Text to display in regulatory info screen (from device overlay). -->
<string name="regulatory_info_text"></string>
@@ -11926,6 +11917,18 @@
<!-- See less items in contextual homepage [CHAR LIMIT=30]-->
<string name="see_less">See less</string>
+ <!-- Strings for toggling subscriptions dialog activity -->
+ <!-- Title of confirmation dialog asking the user if they want to disable subscription. [CHAR_LIMIT=NONE] -->
+ <string name="privileged_action_disable_sub_dialog_title">Turn off <xliff:g id="carrier_name" example="Google Fi">%1$s</xliff:g>?</string>
+ <!-- Title of confirmation dialog asking the user if they want to disable subscription. [CHAR_LIMIT=NONE] -->
+ <string name="privileged_action_disable_sub_dialog_title_without_carrier">Turn off SIM?</string>
+ <!-- Disabling SIMs progress dialog message [CHAR LIMIT=NONE] -->
+ <string name="privileged_action_disable_sub_dialog_progress">Turning off SIM<xliff:g id="ellipsis" example="...">…</xliff:g></string>
+ <!-- Title of error messaging indicating the device could not disable the mobile network. [CHAR LIMIT=NONE] -->
+ <string name="privileged_action_disable_fail_title">Can\'t disable carrier</string>
+ <!-- Body text of error message indicating the device could not disable the mobile network, due to an unknown issue. [CHAR LIMIT=NONE] -->
+ <string name="privileged_action_disable_fail_text">Something went wrong and your carrier could not be disabled.</string>
+
<!-- Title for Network connection request Dialog [CHAR LIMIT=60] -->
<string name="network_connection_request_dialog_title">Connect to device</string>
<!-- Summary for Network connection request Dialog [CHAR LIMIT=NONE] -->
diff --git a/src/com/android/settings/ResetNetworkConfirm.java b/src/com/android/settings/ResetNetworkConfirm.java
index 53fe369..97139c4 100644
--- a/src/com/android/settings/ResetNetworkConfirm.java
+++ b/src/com/android/settings/ResetNetworkConfirm.java
@@ -49,7 +49,7 @@
import com.android.settings.core.InstrumentedFragment;
import com.android.settings.enterprise.ActionDisabledByAdminDialogHelper;
-import com.android.settings.network.ApnSettings;
+import com.android.settings.network.apn.ApnSettings;
import com.android.settingslib.RestrictedLockUtilsInternal;
/**
diff --git a/src/com/android/settings/SidecarFragment.java b/src/com/android/settings/SidecarFragment.java
new file mode 100644
index 0000000..1a69c03
--- /dev/null
+++ b/src/com/android/settings/SidecarFragment.java
@@ -0,0 +1,364 @@
+/*
+ * Copyright (C) 2020 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;
+
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.os.Bundle;
+import android.util.Log;
+
+import androidx.annotation.CallSuper;
+import androidx.annotation.IntDef;
+
+import com.android.settingslib.utils.ThreadUtils;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Locale;
+import java.util.Set;
+import java.util.concurrent.CopyOnWriteArraySet;
+
+/**
+ * A headless fragment encapsulating a long-running action such as a network RPC surviving rotation.
+ *
+ * <p>Subclasses should implement their own state machine, updating the state on each state change
+ * via {@link #setState(int, int)}. They can define their own states, however, it is suggested that
+ * the pre-defined {@link @State} constants are used and customizations are implemented via
+ * substates. Custom states must be outside the range of pre-defined states.
+ *
+ * <p>It is safe to update the state at any time, but state updates must originate from the main
+ * thread.
+ *
+ * <p>A listener can be attached that receives state updates while it's registered. Note that state
+ * change events can occur at any point in time and hence a registered listener should unregister if
+ * it cannot act upon the state change (typically a non-resumed fragment).
+ *
+ * <p>Listeners can receive state changes for the same state/substate combination, so listeners
+ * should make sure to be idempotent during state change events.
+ *
+ * <p>If a SidecarFragment is only relevant during the lifetime of another fragment (for example, a
+ * sidecar performing a details request for a DetailsFragment), that fragment needs to become the
+ * managing fragment of the sidecar.
+ *
+ * <h2>Managing fragment responsibilities</h2>
+ *
+ * <ol>
+ * <li>Instantiates the sidecar fragment when necessary, preferably in {@link #onStart}.
+ * <li>Removes the sidecar fragment when it's no longer used or when itself is removed. Removal of
+ * the managing fragment can be detected by checking {@link #isRemoving} in {@link #onStop}.
+ * <br>
+ * <li>Registers as a listener in {@link #onResume()}, unregisters in {@link #onPause()}.
+ * <li>Starts the long-running operation by calling into the sidecar.
+ * <li>Receives state updates via {@link Listener#onStateChange(SidecarFragment)} and updates the
+ * UI accordingly.
+ * </ol>
+ *
+ * <h2>Managing fragment example</h2>
+ *
+ * <pre>
+ * public class MainFragment implements SidecarFragment.Listener {
+ * private static final String TAG_SOME_SIDECAR = ...;
+ * private static final String KEY_SOME_SIDECAR_STATE = ...;
+ *
+ * private SomeSidecarFragment mSidecar;
+ *
+ * @Override
+ * public void onStart() {
+ * super.onStart();
+ * Bundle args = ...; // optional args
+ * mSidecar = SidecarFragment.get(getFragmentManager(), TAG_SOME_SIDECAR,
+ * SidecarFragment.class, args);
+ * }
+ *
+ * @Override
+ * public void onResume() {
+ * mSomeSidecar.addListener(this);
+ * }
+ *
+ * @Override
+ * public void onPause() {
+ * mSomeSidecar.removeListener(this):
+ * }
+ * }
+ * </pre>
+ */
+public class SidecarFragment extends Fragment {
+
+ private static final String TAG = "SidecarFragment";
+
+ /**
+ * Get an instance of this sidecar.
+ *
+ * <p>Will return the existing instance if one is already present. Note that the args will not
+ * be used in this situation, so args must be constant for any particular fragment manager and
+ * tag.
+ */
+ @SuppressWarnings("unchecked")
+ protected static <T extends SidecarFragment> T get(
+ FragmentManager fm, String tag, Class<T> clazz, Bundle args) {
+ T fragment = (T) fm.findFragmentByTag(tag);
+ if (fragment == null) {
+ try {
+ fragment = clazz.newInstance();
+ } catch (java.lang.InstantiationException e) {
+ throw new InstantiationException("Unable to create fragment", e);
+ } catch (IllegalAccessException e) {
+ throw new IllegalArgumentException("Unable to create fragment", e);
+ }
+ if (args != null) {
+ fragment.setArguments(args);
+ }
+ fm.beginTransaction().add(fragment, tag).commit();
+ // No real harm in doing this here - get() should generally only be called from onCreate
+ // which is on the main thread - and it allows us to start running the sidecar on this
+ // instance immediately rather than having to wait until the transaction commits.
+ fm.executePendingTransactions();
+ }
+
+ return fragment;
+ }
+
+ /** State definitions. @see {@link #getState} */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef({State.INIT, State.RUNNING, State.SUCCESS, State.ERROR})
+ public @interface State {
+ /** Initial idling state. */
+ int INIT = 0;
+
+ /** The long-running operation is in progress. */
+ int RUNNING = 1;
+
+ /** The long-running operation has succeeded. */
+ int SUCCESS = 2;
+
+ /** The long-running operation has failed. */
+ int ERROR = 3;
+ }
+
+ /** Substate definitions. @see {@link #getSubstate} */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef({
+ Substate.UNUSED,
+ Substate.RUNNING_BIND_SERVICE,
+ Substate.RUNNING_GET_ACTIVATION_CODE,
+ })
+ public @interface Substate {
+ // Unknown/unused substate.
+ int UNUSED = 0;
+ int RUNNING_BIND_SERVICE = 1;
+ int RUNNING_GET_ACTIVATION_CODE = 2;
+
+ // Future tags: 3+
+ }
+
+ /** **************************************** */
+ private Set<Listener> mListeners = new CopyOnWriteArraySet<>();
+
+ // Used to track whether onCreate has been called yet.
+ private boolean mCreated;
+
+ @State private int mState;
+ @Substate private int mSubstate;
+
+ /** A listener receiving state change events. */
+ public interface Listener {
+
+ /**
+ * Called upon any state or substate change.
+ *
+ * <p>The new state can be queried through {@link #getState} and {@link #getSubstate}.
+ *
+ * <p>Called from the main thread.
+ *
+ * @param fragment the SidecarFragment that changed its state
+ */
+ void onStateChange(SidecarFragment fragment);
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setRetainInstance(true);
+ mCreated = true;
+ setState(State.INIT, Substate.UNUSED);
+ }
+
+ @Override
+ public void onDestroy() {
+ mCreated = false;
+ super.onDestroy();
+ }
+
+ /**
+ * Registers a listener that will receive subsequent state changes.
+ *
+ * <p>A {@link Listener#onStateChange(SidecarFragment)} event is fired as part of this call
+ * unless {@link #onCreate} has not yet been called (which means that it's unsafe to access this
+ * fragment as it has not been setup or restored completely). In that case, the future call to
+ * onCreate will trigger onStateChange on registered listener.
+ *
+ * <p>Must be called from the main thread.
+ *
+ * @param listener a listener, or null for unregistering the current listener
+ */
+ public void addListener(Listener listener) {
+ ThreadUtils.ensureMainThread();
+ mListeners.add(listener);
+ if (mCreated) {
+ notifyListener(listener);
+ }
+ }
+
+ /**
+ * Removes a previously registered listener.
+ *
+ * @return {@code true} if the listener was removed, {@code false} if there was no such listener
+ * registered.
+ */
+ public boolean removeListener(Listener listener) {
+ ThreadUtils.ensureMainThread();
+ return mListeners.remove(listener);
+ }
+
+ /** Returns the current state. */
+ @State
+ public int getState() {
+ return mState;
+ }
+
+ /** Returns the current substate. */
+ @Substate
+ public int getSubstate() {
+ return mSubstate;
+ }
+
+ /**
+ * Resets the sidecar to its initial state.
+ *
+ * <p>Implementers can override this method to perform additional reset tasks, but must call the
+ * super method.
+ */
+ @CallSuper
+ public void reset() {
+ setState(State.INIT, Substate.UNUSED);
+ }
+
+ /**
+ * Updates the state and substate and notifies the registered listener.
+ *
+ * <p>Must be called from the main thread.
+ *
+ * @param state the state to transition to
+ * @param substate the substate to transition to
+ */
+ protected void setState(@State int state, @Substate int substate) {
+ ThreadUtils.ensureMainThread();
+
+ mState = state;
+ mSubstate = substate;
+ notifyAllListeners();
+ printState();
+ }
+
+ private void notifyAllListeners() {
+ for (Listener listener : mListeners) {
+ notifyListener(listener);
+ }
+ }
+
+ private void notifyListener(Listener listener) {
+ listener.onStateChange(this);
+ }
+
+ /** Prints the state of the sidecar. */
+ public void printState() {
+ StringBuilder sb =
+ new StringBuilder("SidecarFragment.setState(): Sidecar Class: ")
+ .append(getClass().getCanonicalName());
+ sb.append(", State: ");
+ switch (mState) {
+ case SidecarFragment.State.INIT:
+ sb.append("State.INIT");
+ break;
+ case SidecarFragment.State.RUNNING:
+ sb.append("State.RUNNING");
+ break;
+ case SidecarFragment.State.SUCCESS:
+ sb.append("State.SUCCESS");
+ break;
+ case SidecarFragment.State.ERROR:
+ sb.append("State.ERROR");
+ break;
+ default:
+ sb.append(mState);
+ break;
+ }
+ switch (mSubstate) {
+ case SidecarFragment.Substate.UNUSED:
+ sb.append(", Substate.UNUSED");
+ break;
+ default:
+ sb.append(", ").append(mSubstate);
+ break;
+ }
+
+ Log.v(TAG, sb.toString());
+ }
+
+ @Override
+ public String toString() {
+ return String.format(
+ Locale.US,
+ "SidecarFragment[mState=%d, mSubstate=%d]: %s",
+ mState,
+ mSubstate,
+ super.toString());
+ }
+
+ /** The State of the sidecar status. */
+ public static final class States {
+ public static final States SUCCESS = States.create(State.SUCCESS, Substate.UNUSED);
+ public static final States ERROR = States.create(State.ERROR, Substate.UNUSED);
+
+ @State public final int state;
+ @Substate public final int substate;
+
+ /** Creates a new sidecar state. */
+ public static States create(@State int state, @Substate int substate) {
+ return new States(state, substate);
+ }
+
+ public States(@State int state, @Substate int substate) {
+ this.state = state;
+ this.substate = substate;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (!(o instanceof States)) {
+ return false;
+ }
+ States other = (States) o;
+ return this.state == other.state && this.substate == other.substate;
+ }
+
+ @Override
+ public int hashCode() {
+ return state * 31 + substate;
+ }
+ }
+}
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index 71c016f..a7e0eec 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -18,10 +18,6 @@
import static android.content.Intent.EXTRA_USER;
import static android.content.Intent.EXTRA_USER_ID;
-import static android.media.MediaRoute2Info.TYPE_GROUP;
-import static android.media.MediaRoute2Info.TYPE_REMOTE_SPEAKER;
-import static android.media.MediaRoute2Info.TYPE_REMOTE_TV;
-import static android.media.MediaRoute2Info.TYPE_UNKNOWN;
import static android.text.format.DateUtils.FORMAT_ABBREV_MONTH;
import static android.text.format.DateUtils.FORMAT_SHOW_DATE;
@@ -57,8 +53,6 @@
import android.graphics.drawable.VectorDrawable;
import android.hardware.face.FaceManager;
import android.hardware.fingerprint.FingerprintManager;
-import android.media.MediaRoute2Info;
-import android.media.MediaRouter2Manager;
import android.net.ConnectivityManager;
import android.net.LinkProperties;
import android.net.Network;
@@ -1143,31 +1137,4 @@
drawable.draw(canvas);
return roundedBitmap;
}
-
- /**
- * Returns {@code true} if needed to disable media output, otherwise returns {@code false}.
- */
- public static boolean isMediaOutputDisabled(
- MediaRouter2Manager router2Manager, String packageName) {
- boolean isMediaOutputDisabled = false;
- if (!TextUtils.isEmpty(packageName)) {
- final List<MediaRoute2Info> infos = router2Manager.getAvailableRoutes(packageName);
- if (infos.size() == 1) {
- final MediaRoute2Info info = infos.get(0);
- final int deviceType = info.getType();
- switch (deviceType) {
- case TYPE_UNKNOWN:
- case TYPE_REMOTE_TV:
- case TYPE_REMOTE_SPEAKER:
- case TYPE_GROUP:
- isMediaOutputDisabled = true;
- break;
- default:
- isMediaOutputDisabled = false;
- break;
- }
- }
- }
- return isMediaOutputDisabled;
- }
}
diff --git a/src/com/android/settings/accounts/AddAccountSettings.java b/src/com/android/settings/accounts/AddAccountSettings.java
index 64bb201..81db4df 100644
--- a/src/com/android/settings/accounts/AddAccountSettings.java
+++ b/src/com/android/settings/accounts/AddAccountSettings.java
@@ -247,7 +247,8 @@
identityIntent.setAction(SHOULD_NOT_RESOLVE);
identityIntent.addCategory(SHOULD_NOT_RESOLVE);
- mPendingIntent = PendingIntent.getBroadcast(this, 0, identityIntent, 0);
+ mPendingIntent = PendingIntent.getBroadcast(this, 0, identityIntent,
+ PendingIntent.FLAG_IMMUTABLE);
addAccountOptions.putParcelable(KEY_CALLER_IDENTITY, mPendingIntent);
addAccountOptions.putBoolean(EXTRA_HAS_MULTIPLE_USERS, Utils.hasMultipleUsers(this));
AccountManager.get(this).addAccountAsUser(
diff --git a/src/com/android/settings/applications/appinfo/ExternalSourcesDetails.java b/src/com/android/settings/applications/appinfo/ExternalSourcesDetails.java
index fe1d81c..b723274 100644
--- a/src/com/android/settings/applications/appinfo/ExternalSourcesDetails.java
+++ b/src/com/android/settings/applications/appinfo/ExternalSourcesDetails.java
@@ -18,7 +18,6 @@
import static android.app.Activity.RESULT_CANCELED;
import static android.app.Activity.RESULT_OK;
-import android.app.ActivityManager;
import android.app.AppOpsManager;
import android.app.settings.SettingsEnums;
import android.content.Context;
@@ -30,7 +29,6 @@
import androidx.preference.Preference;
import androidx.preference.Preference.OnPreferenceChangeListener;
-import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.Settings;
import com.android.settings.applications.AppInfoWithHeader;
@@ -46,7 +44,6 @@
private AppStateInstallAppsBridge mAppBridge;
private AppOpsManager mAppOpsManager;
- private ActivityManager mActivityManager;
private UserManager mUserManager;
private RestrictedSwitchPreference mSwitchPref;
private InstallAppsState mInstallAppsState;
@@ -58,7 +55,6 @@
final Context context = getActivity();
mAppBridge = new AppStateInstallAppsBridge(context, mState, null);
mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
- mActivityManager = context.getSystemService(ActivityManager.class);
mUserManager = UserManager.get(context);
addPreferencesFromResource(R.xml.external_sources_details);
@@ -103,21 +99,10 @@
: R.string.app_permission_summary_not_allowed);
}
- @VisibleForTesting
- void setCanInstallApps(boolean newState) {
+ private void setCanInstallApps(boolean newState) {
mAppOpsManager.setMode(AppOpsManager.OP_REQUEST_INSTALL_PACKAGES,
mPackageInfo.applicationInfo.uid, mPackageName,
newState ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_ERRORED);
- if (!newState) {
- killApp(mPackageInfo.applicationInfo.uid);
- }
- }
-
- private void killApp(int uid) {
- if (UserHandle.isCore(uid)) {
- return;
- }
- mActivityManager.killUid(uid, "User denied OP_REQUEST_INSTALL_PACKAGES");
}
@Override
diff --git a/src/com/android/settings/biometrics/BiometricEnrollActivity.java b/src/com/android/settings/biometrics/BiometricEnrollActivity.java
index bfdcd5b..791efa7 100644
--- a/src/com/android/settings/biometrics/BiometricEnrollActivity.java
+++ b/src/com/android/settings/biometrics/BiometricEnrollActivity.java
@@ -25,9 +25,9 @@
import android.hardware.biometrics.BiometricManager;
import android.hardware.biometrics.BiometricManager.Authenticators;
import android.hardware.face.FaceManager;
-import android.hardware.face.FaceSensorProperties;
+import android.hardware.face.FaceSensorPropertiesInternal;
import android.hardware.fingerprint.FingerprintManager;
-import android.hardware.fingerprint.FingerprintSensorProperties;
+import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
@@ -233,13 +233,14 @@
final FingerprintManager fingerprintManager = getSystemService(FingerprintManager.class);
final FaceManager faceManager = getSystemService(FaceManager.class);
- final List<FingerprintSensorProperties> fpProperties =
- fingerprintManager.getSensorProperties();
- final List<FaceSensorProperties> faceProperties = faceManager.getSensorProperties();
+ final List<FingerprintSensorPropertiesInternal> fpProperties =
+ fingerprintManager.getSensorPropertiesInternal();
+ final List<FaceSensorPropertiesInternal> faceProperties =
+ faceManager.getSensorPropertiesInternal();
// This would need to be updated for devices with multiple sensors of the same modality
final boolean maxFacesEnrolled = faceManager.getEnrolledFaces(mUserId).size()
- >= faceProperties.get(0).maxTemplatesAllowed;
+ >= faceProperties.get(0).maxEnrollmentsPerUser;
final boolean maxFingerprintsEnrolled = fingerprintManager.getEnrolledFingerprints(mUserId)
.size() >= fpProperties.get(0).maxEnrollmentsPerUser;
diff --git a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java
index 55a56ed..3bffbbf 100644
--- a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java
+++ b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java
@@ -16,15 +16,12 @@
package com.android.settings.biometrics.face;
-import android.app.PendingIntent;
import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.Intent;
-import android.content.IntentSender;
import android.hardware.face.FaceManager;
-import android.hardware.face.FaceSensorProperties;
+import android.hardware.face.FaceSensorPropertiesInternal;
import android.os.Bundle;
-import android.util.Log;
import android.view.View;
import android.widget.TextView;
@@ -32,7 +29,6 @@
import com.android.settings.Utils;
import com.android.settings.biometrics.BiometricEnrollIntroduction;
import com.android.settings.biometrics.BiometricUtils;
-import com.android.settings.biometrics.MultiBiometricEnrollHelper;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settingslib.RestrictedLockUtilsInternal;
@@ -173,9 +169,10 @@
private boolean maxFacesEnrolled() {
if (mFaceManager != null) {
- final List<FaceSensorProperties> props = mFaceManager.getSensorProperties();
+ final List<FaceSensorPropertiesInternal> props =
+ mFaceManager.getSensorPropertiesInternal();
// This will need to be updated for devices with multiple face sensors.
- final int max = props.get(0).maxTemplatesAllowed;
+ final int max = props.get(0).maxEnrollmentsPerUser;
final int numEnrolledFaces = mFaceManager.getEnrolledFaces(mUserId).size();
return numEnrolledFaces >= max;
} else {
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
index 61c837a..f5dc0e6 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollIntroduction.java
@@ -21,7 +21,7 @@
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.hardware.fingerprint.FingerprintManager;
-import android.hardware.fingerprint.FingerprintSensorProperties;
+import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
@@ -126,8 +126,8 @@
@Override
protected int checkMaxEnrolled() {
if (mFingerprintManager != null) {
- final List<FingerprintSensorProperties> props =
- mFingerprintManager.getSensorProperties();
+ final List<FingerprintSensorPropertiesInternal> props =
+ mFingerprintManager.getSensorPropertiesInternal();
// This will need to be updated for devices with multiple fingerprint sensors
final int max = props.get(0).maxEnrollmentsPerUser;
final int numEnrolledFingerprints =
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
index 052b3f0..3782039 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java
@@ -670,7 +670,9 @@
mRemovalSidecar.startRemove(fingerPrint, mUserId);
String name = genKey(fingerPrint.getBiometricId());
Preference prefToRemove = findPreference(name);
- prefToRemove.setEnabled(false);
+ if (prefToRemove != null) {
+ prefToRemove.setEnabled(false);
+ }
updateAddPreference();
}
diff --git a/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java b/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java
index 5a4ee1f..67c3650 100644
--- a/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java
+++ b/src/com/android/settings/bluetooth/BluetoothSliceBuilder.java
@@ -129,13 +129,13 @@
private static PendingIntent getPrimaryAction(Context context) {
final Intent intent = getIntent(context);
return PendingIntent.getActivity(context, 0 /* requestCode */,
- intent, 0 /* flags */);
+ intent, PendingIntent.FLAG_IMMUTABLE);
}
private static PendingIntent getBroadcastIntent(Context context) {
final Intent intent = new Intent(ACTION_BLUETOOTH_SLICE_CHANGED)
.setClass(context, SliceBroadcastReceiver.class);
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
- PendingIntent.FLAG_UPDATE_CURRENT);
+ PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
}
}
diff --git a/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsController.java b/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsController.java
index ded1294..b91bb79 100644
--- a/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsController.java
+++ b/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsController.java
@@ -115,7 +115,8 @@
public void onRadioButtonClicked(RadioButtonPreference preference) {
final long function = UsbBackend.usbFunctionsFromString(preference.getKey());
final long previousFunction = mUsbBackend.getCurrentFunctions();
- if (function != previousFunction && !Utils.isMonkeyRunning()) {
+ if (function != previousFunction && !Utils.isMonkeyRunning()
+ && !shouldIgnoreClickEvent(function, previousFunction)) {
mPreviousFunction = previousFunction;
//Update the UI in advance to make it looks smooth
@@ -138,6 +139,11 @@
}
}
+ private boolean shouldIgnoreClickEvent(long function, long previousFunction) {
+ return previousFunction == UsbManager.FUNCTION_ACCESSORY
+ && function == UsbManager.FUNCTION_MTP;
+ }
+
@Override
public boolean isAvailable() {
return !Utils.isMonkeyRunning();
diff --git a/src/com/android/settings/core/SettingsBaseActivity.java b/src/com/android/settings/core/SettingsBaseActivity.java
index 68fa1d3..d160dc5 100644
--- a/src/com/android/settings/core/SettingsBaseActivity.java
+++ b/src/com/android/settings/core/SettingsBaseActivity.java
@@ -41,11 +41,14 @@
import com.android.settings.R;
import com.android.settings.SubSettings;
import com.android.settings.dashboard.CategoryManager;
+import com.android.settingslib.drawer.Tile;
import com.google.android.setupcompat.util.WizardManagerHelper;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
public class SettingsBaseActivity extends FragmentActivity {
@@ -59,6 +62,7 @@
private final PackageReceiver mPackageReceiver = new PackageReceiver();
private final List<CategoryListener> mCategoryListeners = new ArrayList<>();
+ private int mCategoriesUpdateTaskCount;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
@@ -147,10 +151,10 @@
((ViewGroup) findViewById(R.id.content_frame)).addView(view, params);
}
- private void onCategoriesChanged() {
+ private void onCategoriesChanged(Set<String> categories) {
final int N = mCategoryListeners.size();
for (int i = 0; i < N; i++) {
- mCategoryListeners.get(i).onCategoriesChanged();
+ mCategoryListeners.get(i).onCategoriesChanged(categories);
}
}
@@ -194,38 +198,100 @@
* Updates dashboard categories. Only necessary to call this after setTileEnabled
*/
public void updateCategories() {
- new CategoriesUpdateTask().execute();
+ updateCategories(false /* fromBroadcast */);
+ }
+
+ private void updateCategories(boolean fromBroadcast) {
+ // Only allow at most 2 tasks existing at the same time since when the first one is
+ // executing, there may be new data from the second update request.
+ // Ignore the third update request because the second task is still waiting for the first
+ // task to complete in a serial thread, which will get the latest data.
+ if (mCategoriesUpdateTaskCount < 2) {
+ new CategoriesUpdateTask().execute(fromBroadcast);
+ }
}
public interface CategoryListener {
- void onCategoriesChanged();
+ /**
+ * @param categories the changed categories that have to be refreshed, or null to force
+ * refreshing all.
+ */
+ void onCategoriesChanged(@Nullable Set<String> categories);
}
- private class CategoriesUpdateTask extends AsyncTask<Void, Void, Void> {
+ private class CategoriesUpdateTask extends AsyncTask<Boolean, Void, Set<String>> {
+ private final Context mContext;
private final CategoryManager mCategoryManager;
+ private Map<ComponentName, Tile> mPreviousTileMap;
public CategoriesUpdateTask() {
- mCategoryManager = CategoryManager.get(SettingsBaseActivity.this);
+ mCategoriesUpdateTaskCount++;
+ mContext = SettingsBaseActivity.this;
+ mCategoryManager = CategoryManager.get(mContext);
}
@Override
- protected Void doInBackground(Void... params) {
- mCategoryManager.reloadAllCategories(SettingsBaseActivity.this);
- return null;
- }
-
- @Override
- protected void onPostExecute(Void result) {
+ protected Set<String> doInBackground(Boolean... params) {
+ mPreviousTileMap = mCategoryManager.getTileByComponentMap();
+ mCategoryManager.reloadAllCategories(mContext);
mCategoryManager.updateCategoryFromDenylist(sTileDenylist);
- onCategoriesChanged();
+ return getChangedCategories(params[0]);
+ }
+
+ @Override
+ protected void onPostExecute(Set<String> categories) {
+ if (categories == null || !categories.isEmpty()) {
+ onCategoriesChanged(categories);
+ }
+ mCategoriesUpdateTaskCount--;
+ }
+
+ // Return the changed categories that have to be refreshed, or null to force refreshing all.
+ private Set<String> getChangedCategories(boolean fromBroadcast) {
+ if (!fromBroadcast) {
+ // Always refresh for non-broadcast case.
+ return null;
+ }
+
+ final Set<String> changedCategories = new ArraySet<>();
+ final Map<ComponentName, Tile> currentTileMap =
+ mCategoryManager.getTileByComponentMap();
+ currentTileMap.forEach((component, currentTile) -> {
+ final Tile previousTile = mPreviousTileMap.get(component);
+ // Check if the tile is newly added.
+ if (previousTile == null) {
+ Log.i(TAG, "Tile added: " + component.flattenToShortString());
+ changedCategories.add(currentTile.getCategory());
+ return;
+ }
+
+ // Check if the title or summary has changed.
+ if (!TextUtils.equals(currentTile.getTitle(mContext),
+ previousTile.getTitle(mContext))
+ || !TextUtils.equals(currentTile.getSummary(mContext),
+ previousTile.getSummary(mContext))) {
+ Log.i(TAG, "Tile changed: " + component.flattenToShortString());
+ changedCategories.add(currentTile.getCategory());
+ }
+ });
+
+ // Check if any previous tile is removed.
+ final Set<ComponentName> removal = new ArraySet(mPreviousTileMap.keySet());
+ removal.removeAll(currentTileMap.keySet());
+ removal.forEach(component -> {
+ Log.i(TAG, "Tile removed: " + component.flattenToShortString());
+ changedCategories.add(mPreviousTileMap.get(component).getCategory());
+ });
+
+ return changedCategories;
}
}
private class PackageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
- updateCategories();
+ updateCategories(true /* fromBroadcast */);
}
}
}
diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java
index 4a5d71a..8934034 100644
--- a/src/com/android/settings/core/gateway/SettingsGateway.java
+++ b/src/com/android/settings/core/gateway/SettingsGateway.java
@@ -108,11 +108,11 @@
import com.android.settings.localepicker.LocaleListEditor;
import com.android.settings.location.LocationSettings;
import com.android.settings.location.ScanningSettings;
-import com.android.settings.network.ApnEditor;
-import com.android.settings.network.ApnSettings;
import com.android.settings.network.MobileNetworkListFragment;
import com.android.settings.network.NetworkDashboardFragment;
import com.android.settings.network.NetworkProviderSettings;
+import com.android.settings.network.apn.ApnEditor;
+import com.android.settings.network.apn.ApnSettings;
import com.android.settings.nfc.AndroidBeam;
import com.android.settings.nfc.PaymentSettings;
import com.android.settings.notification.ConfigureNotificationSettings;
diff --git a/src/com/android/settings/dashboard/CategoryManager.java b/src/com/android/settings/dashboard/CategoryManager.java
index 51c485a..2a82abe 100644
--- a/src/com/android/settings/dashboard/CategoryManager.java
+++ b/src/com/android/settings/dashboard/CategoryManager.java
@@ -41,6 +41,7 @@
public class CategoryManager {
private static final String TAG = "CategoryManager";
+ private static final boolean DEBUG = false;
private static CategoryManager sInstance;
private final InterestingConfigChanges mInterestingConfigChanges;
@@ -92,6 +93,7 @@
public synchronized void updateCategoryFromDenylist(Set<ComponentName> tileDenylist) {
if (mCategories == null) {
Log.w(TAG, "Category is null, skipping denylist update");
+ return;
}
for (int i = 0; i < mCategories.size(); i++) {
DashboardCategory category = mCategories.get(i);
@@ -104,6 +106,31 @@
}
}
+ /** Return the current tile map */
+ public synchronized Map<ComponentName, Tile> getTileByComponentMap() {
+ final Map<ComponentName, Tile> result = new ArrayMap<>();
+ if (mCategories == null) {
+ Log.w(TAG, "Category is null, no tiles");
+ return result;
+ }
+ mCategories.forEach(category -> {
+ for (int i = 0; i < category.getTilesCount(); i++) {
+ final Tile tile = category.getTile(i);
+ result.put(tile.getIntent().getComponent(), tile);
+ }
+ });
+ return result;
+ }
+
+ private void logTiles(Context context) {
+ if (DEBUG) {
+ getTileByComponentMap().forEach((component, tile) -> {
+ Log.d(TAG, "Tile: " + tile.getCategory().replace("com.android.settings.", "")
+ + ": " + tile.getTitle(context) + ", " + component.flattenToShortString());
+ });
+ }
+ }
+
private synchronized void tryInitCategories(Context context) {
// Keep cached tiles by default. The cache is only invalidated when InterestingConfigChange
// happens.
@@ -112,6 +139,7 @@
private synchronized void tryInitCategories(Context context, boolean forceClearCache) {
if (mCategories == null) {
+ final boolean firstLoading = mCategoryByKeyMap.isEmpty();
if (forceClearCache) {
mTileByComponentCache.clear();
}
@@ -123,6 +151,9 @@
backwardCompatCleanupForCategory(mTileByComponentCache, mCategoryByKeyMap);
sortCategories(context, mCategoryByKeyMap);
filterDuplicateTiles(mCategoryByKeyMap);
+ if (firstLoading) {
+ logTiles(context);
+ }
}
}
diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java
index a273d6c..e0c9820 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -56,6 +56,7 @@
import java.util.List;
import java.util.Map;
import java.util.Objects;
+import java.util.Set;
import java.util.concurrent.ExecutionException;
/**
@@ -160,13 +161,21 @@
}
@Override
- public void onCategoriesChanged() {
- final DashboardCategory category =
- mDashboardFeatureProvider.getTilesForCategory(getCategoryKey());
- if (category == null) {
+ public void onCategoriesChanged(Set<String> categories) {
+ final String categoryKey = getCategoryKey();
+ final DashboardCategory dashboardCategory =
+ mDashboardFeatureProvider.getTilesForCategory(categoryKey);
+ if (dashboardCategory == null) {
return;
}
- refreshDashboardTiles(getLogTag());
+
+ if (categories == null) {
+ // force refreshing
+ refreshDashboardTiles(getLogTag());
+ } else if (categories.contains(categoryKey)) {
+ Log.i(TAG, "refresh tiles for " + categoryKey);
+ refreshDashboardTiles(getLogTag());
+ }
}
@Override
diff --git a/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java b/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java
index d99d01e..6a5b300 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/BatteryFixSlice.java
@@ -163,7 +163,8 @@
private PendingIntent getPrimaryAction() {
final Intent intent = getIntent();
- return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent, 0 /* flags */);
+ return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent,
+ PendingIntent.FLAG_IMMUTABLE);
}
private Slice buildBatteryGoodSlice(ListBuilder sliceBuilder, boolean isError) {
diff --git a/src/com/android/settings/homepage/contextualcards/slices/LowStorageSlice.java b/src/com/android/settings/homepage/contextualcards/slices/LowStorageSlice.java
index 2bc09e9..576b435 100644
--- a/src/com/android/settings/homepage/contextualcards/slices/LowStorageSlice.java
+++ b/src/com/android/settings/homepage/contextualcards/slices/LowStorageSlice.java
@@ -116,8 +116,8 @@
private RowBuilder buildRowBuilder(CharSequence title, String summary, IconCompat icon) {
final SliceAction primarySliceAction = SliceAction.createDeeplink(
- PendingIntent.getActivity(mContext, 0, getIntent(), 0), icon,
- ListBuilder.ICON_IMAGE, title);
+ PendingIntent.getActivity(mContext, 0, getIntent(), PendingIntent.FLAG_IMMUTABLE),
+ icon, ListBuilder.ICON_IMAGE, title);
return new RowBuilder()
.setTitleItem(icon, ListBuilder.ICON_IMAGE)
diff --git a/src/com/android/settings/location/LocationSlice.java b/src/com/android/settings/location/LocationSlice.java
index 2759690..f8add12 100644
--- a/src/com/android/settings/location/LocationSlice.java
+++ b/src/com/android/settings/location/LocationSlice.java
@@ -96,6 +96,6 @@
private PendingIntent getPrimaryAction() {
final Intent intent = getIntent();
return PendingIntent.getActivity(mContext, 0 /* requestCode */,
- intent, 0 /* flags */);
+ intent, PendingIntent.FLAG_IMMUTABLE);
}
}
diff --git a/src/com/android/settings/media/MediaDeviceUpdateWorker.java b/src/com/android/settings/media/MediaDeviceUpdateWorker.java
index 1288cf5..a5dec14 100644
--- a/src/com/android/settings/media/MediaDeviceUpdateWorker.java
+++ b/src/com/android/settings/media/MediaDeviceUpdateWorker.java
@@ -247,6 +247,10 @@
}
+ boolean shouldDisableMediaOutput(String packageName) {
+ return mLocalMediaManager.shouldDisableMediaOutput(packageName);
+ }
+
private class DevicesChangedBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
diff --git a/src/com/android/settings/media/RemoteMediaSlice.java b/src/com/android/settings/media/RemoteMediaSlice.java
index 4198269..9ed6f4e 100644
--- a/src/com/android/settings/media/RemoteMediaSlice.java
+++ b/src/com/android/settings/media/RemoteMediaSlice.java
@@ -122,7 +122,7 @@
.setValue(info.getVolume()));
final boolean isMediaOutputDisabled =
- Utils.isMediaOutputDisabled(mRouterManager, info.getClientPackageName());
+ getWorker().shouldDisableMediaOutput(info.getClientPackageName());
final SpannableString spannableTitle = new SpannableString(
TextUtils.isEmpty(appName) ? "" : appName);
spannableTitle.setSpan(new ForegroundColorSpan(
diff --git a/src/com/android/settings/network/SubscriptionUtil.java b/src/com/android/settings/network/SubscriptionUtil.java
index e61cc36..ac21e12 100644
--- a/src/com/android/settings/network/SubscriptionUtil.java
+++ b/src/com/android/settings/network/SubscriptionUtil.java
@@ -21,6 +21,7 @@
import static com.android.internal.util.CollectionUtils.emptyIfNull;
+import android.annotation.Nullable;
import android.content.Context;
import android.os.ParcelUuid;
import android.telephony.SubscriptionInfo;
@@ -30,6 +31,8 @@
import androidx.annotation.VisibleForTesting;
+import com.android.settings.network.telephony.ToggleSubscriptionDialogActivity;
+
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -278,6 +281,33 @@
}
}
+ /** Starts a dialog activity to handle SIM enabling/disabling. */
+ public static void startToggleSubscriptionDialogActivity(
+ Context context, int subId, boolean enable) {
+ context.startActivity(ToggleSubscriptionDialogActivity.getIntent(context, subId, enable));
+ }
+
+ /**
+ * Finds and returns a subscription with a specific subscription ID.
+ * @param subscriptionManager The ProxySubscriptionManager for accessing subscription
+ * information
+ * @param subId The id of subscription to be returned
+ * @return the {@code SubscriptionInfo} whose ID is {@code subId}. It returns null if the
+ * {@code subId} is {@code SubscriptionManager.INVALID_SUBSCRIPTION_ID} or no such
+ * {@code SubscriptionInfo} is found.
+ */
+ @Nullable
+ public static SubscriptionInfo getSubById(SubscriptionManager subscriptionManager, int subId) {
+ if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ return null;
+ }
+ return subscriptionManager
+ .getAllSubscriptionInfoList()
+ .stream()
+ .filter(subInfo -> subInfo.getSubscriptionId() == subId)
+ .findFirst()
+ .get();
+ }
/**
* Whether a subscription is visible to API caller. If it's a bundled opportunistic
diff --git a/src/com/android/settings/network/SwitchToEuiccSubscriptionSidecar.java b/src/com/android/settings/network/SwitchToEuiccSubscriptionSidecar.java
new file mode 100644
index 0000000..2eaa0ec
--- /dev/null
+++ b/src/com/android/settings/network/SwitchToEuiccSubscriptionSidecar.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2020 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.network;
+
+import android.app.FragmentManager;
+import android.app.PendingIntent;
+
+import com.android.settings.SidecarFragment;
+import com.android.settings.network.telephony.EuiccOperationSidecar;
+
+/** A headless fragment encapsulating long-running eSIM enabling/disabling operations. */
+public class SwitchToEuiccSubscriptionSidecar extends EuiccOperationSidecar {
+ private static final String TAG = "SwitchToEuiccSubscriptionSidecar";
+ private static final String ACTION_SWITCH_TO_SUBSCRIPTION =
+ "com.android.settings.network.switchToSubscription";
+
+ private PendingIntent mCallbackIntent;
+
+ /** Returns a SwitchToEuiccSubscriptionSidecar sidecar instance. */
+ public static SwitchToEuiccSubscriptionSidecar get(FragmentManager fm) {
+ return SidecarFragment.get(
+ fm, TAG, SwitchToEuiccSubscriptionSidecar.class, null /* args */);
+ }
+
+ @Override
+ public String getReceiverAction() {
+ return ACTION_SWITCH_TO_SUBSCRIPTION;
+ }
+
+ /** Returns the pendingIntent of the eSIM operations. */
+ public PendingIntent getCallbackIntent() {
+ return mCallbackIntent;
+ }
+
+ /** Starts calling EuiccManager#switchToSubscription to enable/disable the eSIM profile. */
+ public void run(int subscriptionId) {
+ setState(State.RUNNING, Substate.UNUSED);
+ mCallbackIntent = createCallbackIntent();
+ mEuiccManager.switchToSubscription(subscriptionId, mCallbackIntent);
+ }
+}
diff --git a/src/com/android/settings/network/ApnEditor.java b/src/com/android/settings/network/apn/ApnEditor.java
similarity index 97%
rename from src/com/android/settings/network/ApnEditor.java
rename to src/com/android/settings/network/apn/ApnEditor.java
index a852fd6..8f6d64d 100644
--- a/src/com/android/settings/network/ApnEditor.java
+++ b/src/com/android/settings/network/apn/ApnEditor.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.settings.network;
+package com.android.settings.network.apn;
import android.app.Dialog;
import android.app.settings.SettingsEnums;
@@ -53,6 +53,7 @@
import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
+import com.android.settings.network.ProxySubscriptionManager;
import com.android.settingslib.utils.ThreadUtils;
import java.util.Arrays;
@@ -61,20 +62,21 @@
import java.util.Objects;
import java.util.Set;
+/** Use to edit apn settings. */
public class ApnEditor extends SettingsPreferenceFragment
implements OnPreferenceChangeListener, OnKeyListener {
- private final static String TAG = ApnEditor.class.getSimpleName();
- private final static boolean VDBG = false; // STOPSHIP if true
+ private static final String TAG = ApnEditor.class.getSimpleName();
+ private static final boolean VDBG = false; // STOPSHIP if true
- private final static String KEY_AUTH_TYPE = "auth_type";
+ private static final String KEY_AUTH_TYPE = "auth_type";
private static final String KEY_APN_TYPE = "apn_type";
- private final static String KEY_PROTOCOL = "apn_protocol";
- private final static String KEY_ROAMING_PROTOCOL = "apn_roaming_protocol";
- private final static String KEY_CARRIER_ENABLED = "carrier_enabled";
- private final static String KEY_BEARER_MULTI = "bearer_multi";
- private final static String KEY_MVNO_TYPE = "mvno_type";
- private final static String KEY_PASSWORD = "apn_password";
+ private static final String KEY_PROTOCOL = "apn_protocol";
+ private static final String KEY_ROAMING_PROTOCOL = "apn_roaming_protocol";
+ private static final String KEY_CARRIER_ENABLED = "carrier_enabled";
+ private static final String KEY_BEARER_MULTI = "bearer_multi";
+ private static final String KEY_MVNO_TYPE = "mvno_type";
+ private static final String KEY_PASSWORD = "apn_password";
private static final int MENU_DELETE = Menu.FIRST;
private static final int MENU_SAVE = Menu.FIRST + 1;
@@ -213,7 +215,7 @@
Telephony.Carriers.MCC, // 9
Telephony.Carriers.MNC, // 10
Telephony.Carriers.NUMERIC, // 11
- Telephony.Carriers.MMSPROXY,// 12
+ Telephony.Carriers.MMSPROXY, // 12
Telephony.Carriers.MMSPORT, // 13
Telephony.Carriers.AUTH_TYPE, // 14
Telephony.Carriers.TYPE, // 15
@@ -583,7 +585,7 @@
}
}
- if (mBearerInitialVal != 0 && bearers.contains("" + mBearerInitialVal) == false) {
+ if (mBearerInitialVal != 0 && !bearers.contains("" + mBearerInitialVal)) {
// add mBearerInitialVal to bearers
bearers.add("" + mBearerInitialVal);
}
@@ -699,7 +701,7 @@
&& Arrays.asList(mReadOnlyApnFields)
.contains(Telephony.Carriers.MVNO_MATCH_DATA));
mMvnoMatchData.setEnabled(!mvnoMatchDataUneditable && mvnoIndex != 0);
- if (newValue != null && newValue.equals(oldValue) == false) {
+ if (newValue != null && !newValue.equals(oldValue)) {
if (values[mvnoIndex].equals("SPN")) {
TelephonyManager telephonyManager = (TelephonyManager)
getContext().getSystemService(TelephonyManager.class);
@@ -739,7 +741,9 @@
}
}
}
-
+ /**
+ * Callback when preference status changed.
+ */
public boolean onPreferenceChange(Preference preference, Object newValue) {
String key = preference.getKey();
if (KEY_AUTH_TYPE.equals(key)) {
@@ -1342,8 +1346,13 @@
}
}
+ /**
+ * Dialog of error message.
+ */
public static class ErrorDialog extends InstrumentedDialogFragment {
-
+ /**
+ * Show error dialog.
+ */
public static void showError(ApnEditor editor) {
final ErrorDialog dialog = new ErrorDialog();
dialog.setTargetFragment(editor, 0);
diff --git a/src/com/android/settings/network/ApnPreference.java b/src/com/android/settings/network/apn/ApnPreference.java
similarity index 82%
rename from src/com/android/settings/network/ApnPreference.java
rename to src/com/android/settings/network/apn/ApnPreference.java
index 63e2838..f277db0 100755
--- a/src/com/android/settings/network/ApnPreference.java
+++ b/src/com/android/settings/network/apn/ApnPreference.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.settings.network;
+package com.android.settings.network.apn;
import android.content.ContentUris;
import android.content.Context;
@@ -40,7 +40,7 @@
*/
public class ApnPreference extends Preference implements CompoundButton.OnCheckedChangeListener,
View.OnClickListener {
- final static String TAG = "ApnPreference";
+ private static final String TAG = "ApnPreference";
private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
@@ -65,8 +65,8 @@
this(context, null);
}
- private static String mSelectedKey = null;
- private static CompoundButton mCurrentChecked = null;
+ private static String sSelectedKey = null;
+ private static CompoundButton sCurrentChecked = null;
private boolean mProtectFromCheckedChange = false;
private boolean mSelectable = true;
private boolean mHideDetails = false;
@@ -84,10 +84,10 @@
if (mSelectable) {
rb.setOnCheckedChangeListener(this);
- final boolean isChecked = getKey().equals(mSelectedKey);
+ final boolean isChecked = getKey().equals(sSelectedKey);
if (isChecked) {
- mCurrentChecked = rb;
- mSelectedKey = getKey();
+ sCurrentChecked = rb;
+ sSelectedKey = getKey();
}
mProtectFromCheckedChange = true;
@@ -100,14 +100,23 @@
}
}
+ /**
+ * Return the preference is checked or not.
+ */
public boolean isChecked() {
- return getKey().equals(mSelectedKey);
+ return getKey().equals(sSelectedKey);
}
+ /**
+ * Set preference checked.
+ */
public void setChecked() {
- mSelectedKey = getKey();
+ sSelectedKey = getKey();
}
+ /**
+ * Change the preference status.
+ */
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Log.i(TAG, "ID: " + getKey() + " :" + isChecked);
if (mProtectFromCheckedChange) {
@@ -115,15 +124,15 @@
}
if (isChecked) {
- if (mCurrentChecked != null) {
- mCurrentChecked.setChecked(false);
+ if (sCurrentChecked != null) {
+ sCurrentChecked.setChecked(false);
}
- mCurrentChecked = buttonView;
- mSelectedKey = getKey();
- callChangeListener(mSelectedKey);
+ sCurrentChecked = buttonView;
+ sSelectedKey = getKey();
+ callChangeListener(sSelectedKey);
} else {
- mCurrentChecked = null;
- mSelectedKey = null;
+ sCurrentChecked = null;
+ sSelectedKey = null;
}
}
@@ -161,6 +170,9 @@
mSubId = subId;
}
+ /**
+ * Hide details
+ */
public void setHideDetails() {
mHideDetails = true;
}
diff --git a/src/com/android/settings/network/ApnSettings.java b/src/com/android/settings/network/apn/ApnSettings.java
similarity index 96%
rename from src/com/android/settings/network/ApnSettings.java
rename to src/com/android/settings/network/apn/ApnSettings.java
index f7617fc..f5bb1be 100755
--- a/src/com/android/settings/network/ApnSettings.java
+++ b/src/com/android/settings/network/apn/ApnSettings.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.settings.network;
+package com.android.settings.network.apn;
import android.app.Activity;
import android.app.Dialog;
@@ -56,19 +56,21 @@
import com.android.settings.R;
import com.android.settings.RestrictedSettingsFragment;
+import com.android.settings.network.SubscriptionUtil;
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
import java.util.ArrayList;
+/** Handle each different apn setting. */
public class ApnSettings extends RestrictedSettingsFragment
implements Preference.OnPreferenceChangeListener {
static final String TAG = "ApnSettings";
public static final String EXTRA_POSITION = "position";
public static final String RESTORE_CARRIERS_URI =
- "content://telephony/carriers/restore";
+ "content://telephony/carriers/restore";
public static final String PREFERRED_APN_URI =
- "content://telephony/carriers/preferapn";
+ "content://telephony/carriers/preferapn";
public static final String APN_ID = "apn_id";
public static final String SUB_ID = "sub_id";
@@ -104,7 +106,7 @@
private static final Uri DEFAULTAPN_URI = Uri.parse(RESTORE_CARRIERS_URI);
private static final Uri PREFERAPN_URI = Uri.parse(PREFERRED_APN_URI);
- private static boolean mRestoreDefaultApnMode;
+ private boolean mRestoreDefaultApnMode;
private UserManager mUserManager;
private TelephonyManager mTelephonyManager;
@@ -385,13 +387,12 @@
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
- case MENU_NEW:
- addNewApn();
- return true;
-
- case MENU_RESTORE:
- restoreDefaultApn();
- return true;
+ case MENU_NEW:
+ addNewApn();
+ return true;
+ case MENU_RESTORE:
+ restoreDefaultApn();
+ return true;
}
return super.onOptionsItemSelected(item);
}
@@ -451,8 +452,7 @@
mRestoreApnUiHandler = new RestoreApnUiHandler();
}
- if (mRestoreApnProcessHandler == null ||
- mRestoreDefaultApnThread == null) {
+ if (mRestoreApnProcessHandler == null || mRestoreDefaultApnThread == null) {
mRestoreDefaultApnThread = new HandlerThread(
"Restore default APN Handler: Process Thread");
mRestoreDefaultApnThread.start();
@@ -503,7 +503,7 @@
private class RestoreApnProcessHandler extends Handler {
private Handler mRestoreApnUiHandler;
- public RestoreApnProcessHandler(Looper looper, Handler restoreApnUiHandler) {
+ RestoreApnProcessHandler(Looper looper, Handler restoreApnUiHandler) {
super(looper);
this.mRestoreApnUiHandler = restoreApnUiHandler;
}
diff --git a/src/com/android/settings/network/telephony/ApnPreferenceController.java b/src/com/android/settings/network/telephony/ApnPreferenceController.java
index 8442de2..0e0e5d1 100644
--- a/src/com/android/settings/network/telephony/ApnPreferenceController.java
+++ b/src/com/android/settings/network/telephony/ApnPreferenceController.java
@@ -32,7 +32,7 @@
import androidx.preference.PreferenceScreen;
import com.android.settings.SettingsActivity;
-import com.android.settings.network.ApnSettings;
+import com.android.settings.network.apn.ApnSettings;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
diff --git a/src/com/android/settings/network/telephony/EuiccOperationSidecar.java b/src/com/android/settings/network/telephony/EuiccOperationSidecar.java
new file mode 100644
index 0000000..3bda9c5
--- /dev/null
+++ b/src/com/android/settings/network/telephony/EuiccOperationSidecar.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2020 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.network.telephony;
+
+import android.Manifest;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.os.SystemClock;
+import android.telephony.euicc.EuiccManager;
+import android.util.Log;
+
+import com.android.settings.SidecarFragment;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * The sidecar base class that an Euicc sidecar can extend from. The extended class should implement
+ * getReceiverAction() to return the action string for the broadcast receiver. The extended class
+ * should implement its own get() function to return an instance of that class, and implement the
+ * functional class like run() to actually trigger the function in EuiccManager.
+ */
+public abstract class EuiccOperationSidecar extends SidecarFragment {
+ private static final String TAG = "EuiccOperationSidecar";
+ private static final int REQUEST_CODE = 0;
+ private static final String EXTRA_OP_ID = "op_id";
+ private static AtomicInteger sCurrentOpId =
+ new AtomicInteger((int) SystemClock.elapsedRealtime());
+
+ protected EuiccManager mEuiccManager;
+
+ private int mResultCode;
+ private int mDetailedCode;
+ private Intent mResultIntent;
+ private int mOpId;
+
+ protected final BroadcastReceiver mReceiver =
+ new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (getReceiverAction().equals(intent.getAction())
+ && mOpId == intent.getIntExtra(EXTRA_OP_ID, -1)) {
+ mResultCode = getResultCode();
+ /* TODO: This relies on our LUI and LPA to coexist, should think about how
+ to generalize this further. */
+ mDetailedCode =
+ intent.getIntExtra(
+ EuiccManager.EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE,
+ 0 /* defaultValue*/);
+ mResultIntent = intent;
+ Log.i(
+ TAG,
+ String.format(
+ "Result code : %d; detailed code : %d",
+ mResultCode, mDetailedCode));
+ onActionReceived();
+ }
+ }
+ };
+
+ /**
+ * This is called when the broadcast action is received. The subclass may override this to
+ * perform different logic. The broadcast result code may be obtained with {@link
+ * #getResultCode()} and the Intent may be obtained with {@link #getResultIntent()}.
+ */
+ protected void onActionReceived() {
+ if (mResultCode == EuiccManager.EMBEDDED_SUBSCRIPTION_RESULT_OK) {
+ setState(State.SUCCESS, Substate.UNUSED);
+ } else {
+ setState(State.ERROR, mResultCode);
+ }
+ }
+
+ /**
+ * The extended class should implement it to return a string for the broadcast action. The class
+ * should be unique across all the child classes.
+ */
+ protected abstract String getReceiverAction();
+
+ protected PendingIntent createCallbackIntent() {
+ mOpId = sCurrentOpId.incrementAndGet();
+ Intent intent = new Intent(getReceiverAction());
+ intent.putExtra(EXTRA_OP_ID, mOpId);
+ return PendingIntent.getBroadcast(
+ getContext(), REQUEST_CODE, intent, PendingIntent.FLAG_CANCEL_CURRENT);
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mEuiccManager = (EuiccManager) getContext().getSystemService(Context.EUICC_SERVICE);
+
+ getContext()
+ .getApplicationContext()
+ .registerReceiver(
+ mReceiver,
+ new IntentFilter(getReceiverAction()),
+ Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS,
+ null);
+ }
+
+ @Override
+ public void onDestroy() {
+ getContext().getApplicationContext().unregisterReceiver(mReceiver);
+ super.onDestroy();
+ }
+
+ public int getResultCode() {
+ return mResultCode;
+ }
+
+ public int getDetailedCode() {
+ return mDetailedCode;
+ }
+
+ public Intent getResultIntent() {
+ return mResultIntent;
+ }
+}
diff --git a/src/com/android/settings/network/telephony/SubscriptionActionDialogActivity.java b/src/com/android/settings/network/telephony/SubscriptionActionDialogActivity.java
new file mode 100644
index 0000000..491a776
--- /dev/null
+++ b/src/com/android/settings/network/telephony/SubscriptionActionDialogActivity.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2020 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.network.telephony;
+
+import android.R;
+import android.app.Activity;
+import android.app.ProgressDialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+
+import androidx.appcompat.app.AlertDialog;
+
+/** The base class for subscription action dialogs */
+public class SubscriptionActionDialogActivity extends Activity {
+
+ private static final String TAG = "SubscriptionActionDialogActivity";
+
+ private ProgressDialog mProgressDialog;
+ private AlertDialog mErrorDialog;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ }
+
+ /**
+ * Displays a loading dialog.
+ *
+ * @param message The string content should be displayed in the progress dialog.
+ */
+ protected void showProgressDialog(String message) {
+ if (mProgressDialog == null) {
+ mProgressDialog = ProgressDialog.show(this, null, message);
+ mProgressDialog.setCanceledOnTouchOutside(false);
+ mProgressDialog.setCancelable(false);
+ }
+ mProgressDialog.setMessage(message);
+ mProgressDialog.show();
+ }
+
+ /** Dismisses the loading dialog. */
+ protected void dismissProgressDialog() {
+ if (mProgressDialog != null) {
+ mProgressDialog.dismiss();
+ }
+ }
+
+ /**
+ * Displays an error dialog to indicate the subscription action failure.
+ *
+ * @param title The title of the error dialog.
+ * @param message The body text of the error dialog.
+ * @param positiveOnClickListener The callback function after users confirm with the error.
+ */
+ protected void showErrorDialog(
+ String title, String message, DialogInterface.OnClickListener positiveOnClickListener) {
+ if (mErrorDialog == null) {
+ mErrorDialog =
+ new AlertDialog.Builder(this)
+ .setTitle(title)
+ .setMessage(message)
+ .setPositiveButton(
+ R.string.ok,
+ (dialog, which) -> {
+ positiveOnClickListener.onClick(dialog, which);
+ dismissErrorDialog();
+ })
+ .create();
+ }
+ mErrorDialog.setMessage(message);
+ mErrorDialog.show();
+ }
+
+ /** Dismisses the error dialog. */
+ protected void dismissErrorDialog() {
+ if (mErrorDialog != null) {
+ mErrorDialog.dismiss();
+ }
+ }
+}
diff --git a/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java b/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java
new file mode 100644
index 0000000..062c984
--- /dev/null
+++ b/src/com/android/settings/network/telephony/ToggleSubscriptionDialogActivity.java
@@ -0,0 +1,209 @@
+/*
+ * Copyright (C) 2020 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.network.telephony;
+
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.UserManager;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.text.TextUtils;
+import android.util.Log;
+
+import androidx.appcompat.app.AlertDialog;
+
+import com.android.settings.R;
+import com.android.settings.SidecarFragment;
+import com.android.settings.network.SubscriptionUtil;
+import com.android.settings.network.SwitchToEuiccSubscriptionSidecar;
+
+/** This dialog activity handles both eSIM and pSIM subscriptions enabling and disabling. */
+public class ToggleSubscriptionDialogActivity extends SubscriptionActionDialogActivity
+ implements SidecarFragment.Listener {
+
+ private static final String TAG = "ToggleSubscriptionDialogActivity";
+
+ private static final String ARG_SUB_ID = "sub_id";
+ private static final String ARG_enable = "enable";
+
+ /**
+ * Returns an intent of ToggleSubscriptionDialogActivity.
+ * @param context The context used to start the ToggleSubscriptionDialogActivity.
+ * @param subId The subscription ID of the subscription needs to be toggled.
+ * @param enable Whether the activity should enable or disable the subscription.
+ */
+ public static Intent getIntent(Context context, int subId, boolean enable) {
+ Intent intent = new Intent(context, ToggleSubscriptionDialogActivity.class);
+ intent.putExtra(ARG_SUB_ID, subId);
+ intent.putExtra(ARG_enable, enable);
+ return intent;
+ }
+
+ private SubscriptionManager mSubscriptionManager;
+ private SubscriptionInfo mSubInfo;
+ private SwitchToEuiccSubscriptionSidecar mSwitchToEuiccSubscriptionSidecar;
+ private AlertDialog mToggleSimConfirmDialog;
+ private boolean mEnable;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ Intent intent = getIntent();
+ int subId = intent.getIntExtra(ARG_SUB_ID, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+ mSubscriptionManager = getSystemService(SubscriptionManager.class);
+
+ UserManager userManager = getSystemService(UserManager.class);
+ if (!userManager.isAdminUser()) {
+ Log.e(TAG, "It is not the admin user. Unable to toggle subscription.");
+ finish();
+ return;
+ }
+
+ if (!SubscriptionManager.isUsableSubscriptionId(subId)) {
+ Log.e(TAG, "The subscription id is not usable.");
+ finish();
+ return;
+ }
+
+ mSubInfo = SubscriptionUtil.getSubById(mSubscriptionManager, subId);
+ mSwitchToEuiccSubscriptionSidecar =
+ SwitchToEuiccSubscriptionSidecar.get(getFragmentManager());
+ mEnable = intent.getBooleanExtra(ARG_enable, true);
+
+ if (mEnable) {
+ handleEnablingSubAction();
+ } else {
+ handleDisablingSubAction();
+ }
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ mSwitchToEuiccSubscriptionSidecar.addListener(this);
+ }
+
+ @Override
+ protected void onPause() {
+ mSwitchToEuiccSubscriptionSidecar.removeListener(this);
+ super.onPause();
+ }
+
+ @Override
+ public void onStateChange(SidecarFragment fragment) {
+ if (fragment == mSwitchToEuiccSubscriptionSidecar) {
+ handleSwitchToEuiccSubscriptionSidecarStateChange();
+ }
+ }
+
+ private void handleSwitchToEuiccSubscriptionSidecarStateChange() {
+ switch (mSwitchToEuiccSubscriptionSidecar.getState()) {
+ case SidecarFragment.State.SUCCESS:
+ Log.i(
+ TAG,
+ String.format(
+ "Successfully %s the eSIM profile.",
+ mEnable ? "enable" : "disable"));
+ mSwitchToEuiccSubscriptionSidecar.reset();
+ dismissProgressDialog();
+ finish();
+ break;
+ case SidecarFragment.State.ERROR:
+ Log.i(
+ TAG,
+ String.format(
+ "Failed to %s the eSIM profile.", mEnable ? "enable" : "disable"));
+ mSwitchToEuiccSubscriptionSidecar.reset();
+ dismissProgressDialog();
+ showErrorDialog(
+ getString(R.string.privileged_action_disable_fail_title),
+ getString(R.string.privileged_action_disable_fail_text),
+ (dialog, which) -> finish());
+ break;
+ }
+ }
+
+ /* Handles the enabling SIM action. */
+ private void handleEnablingSubAction() {
+ Log.i(TAG, "handleEnableSub");
+ // TODO(b/160819390): Implement enabling eSIM/pSIM profile.
+ }
+
+ /* Handles the disabling SIM action. */
+ private void handleDisablingSubAction() {
+ showToggleSimConfirmDialog(
+ (dialog, which) -> {
+ if (mSubInfo.isEmbedded()) {
+ Log.i(TAG, "Disabling the eSIM profile.");
+ showProgressDialog(
+ getString(R.string.privileged_action_disable_sub_dialog_progress));
+ mSwitchToEuiccSubscriptionSidecar.run(
+ SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+ return;
+ }
+ Log.i(TAG, "Disabling the pSIM profile.");
+ // TODO(b/160819390): Implement disabling pSIM profile.
+ });
+ }
+
+ /* Displays the SIM toggling confirmation dialog. */
+ private void showToggleSimConfirmDialog(
+ DialogInterface.OnClickListener positiveOnClickListener) {
+ if (mToggleSimConfirmDialog == null) {
+ mToggleSimConfirmDialog =
+ new AlertDialog.Builder(this)
+ .setTitle(getToggleSimConfirmDialogTitle())
+ .setPositiveButton(
+ R.string.yes,
+ (dialog, which) -> {
+ positiveOnClickListener.onClick(dialog, which);
+ dismissToggleSimConfirmDialog();
+ })
+ .setNegativeButton(
+ R.string.cancel,
+ (dialog, which) -> {
+ dismissToggleSimConfirmDialog();
+ finish();
+ })
+ .create();
+ }
+ mToggleSimConfirmDialog.show();
+ }
+
+ /* Dismisses the SIM toggling confirmation dialog. */
+ private void dismissToggleSimConfirmDialog() {
+ if (mToggleSimConfirmDialog != null) {
+ mToggleSimConfirmDialog.dismiss();
+ }
+ }
+
+ /* Returns the title of toggling SIM confirmation dialog. */
+ private String getToggleSimConfirmDialogTitle() {
+ if (mEnable) {
+ // TODO(b/160819390): Handle the case for enabling SIM.
+ return null;
+ }
+ return mSubInfo == null || TextUtils.isEmpty(mSubInfo.getDisplayName())
+ ? getString(R.string.privileged_action_disable_sub_dialog_title_without_carrier)
+ : getString(
+ R.string.privileged_action_disable_sub_dialog_title,
+ mSubInfo.getDisplayName());
+ }
+}
diff --git a/src/com/android/settings/notification/RemoteVolumeGroupController.java b/src/com/android/settings/notification/RemoteVolumeGroupController.java
index bb62a56..320862c 100644
--- a/src/com/android/settings/notification/RemoteVolumeGroupController.java
+++ b/src/com/android/settings/notification/RemoteVolumeGroupController.java
@@ -131,8 +131,8 @@
seekBarPreference.setIcon(R.drawable.ic_volume_remote);
mPreferenceCategory.addPreference(seekBarPreference);
// Add output indicator
- final boolean isMediaOutputDisabled = Utils.isMediaOutputDisabled(
- mRouterManager, info.getClientPackageName());
+ final boolean isMediaOutputDisabled = mLocalMediaManager.shouldDisableMediaOutput(
+ info.getClientPackageName());
final Preference preference = new Preference(mContext);
preference.setKey(SWITCHER_PREFIX + info.getId());
preference.setTitle(isMediaOutputDisabled ? appName : outputTitle);
diff --git a/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java b/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java
index c9a203e..14c9117 100644
--- a/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java
+++ b/src/com/android/settings/notification/zen/ZenModeSliceBuilder.java
@@ -142,13 +142,14 @@
private static PendingIntent getPrimaryAction(Context context) {
final Intent intent = getIntent(context);
- return PendingIntent.getActivity(context, 0 /* requestCode */, intent, 0 /* flags */);
+ return PendingIntent.getActivity(context, 0 /* requestCode */, intent,
+ PendingIntent.FLAG_IMMUTABLE);
}
private static PendingIntent getBroadcastIntent(Context context) {
final Intent intent = new Intent(ACTION_ZEN_MODE_SLICE_CHANGED)
.setClass(context, SliceBroadcastReceiver.class);
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
- PendingIntent.FLAG_CANCEL_CURRENT);
+ PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE);
}
}
diff --git a/src/com/android/settings/slices/CustomSliceable.java b/src/com/android/settings/slices/CustomSliceable.java
index 92c604e..57475a9 100644
--- a/src/com/android/settings/slices/CustomSliceable.java
+++ b/src/com/android/settings/slices/CustomSliceable.java
@@ -95,7 +95,7 @@
.setData(getUri())
.setClass(context, SliceBroadcastReceiver.class);
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
- PendingIntent.FLAG_UPDATE_CURRENT);
+ PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
}
@Override
diff --git a/src/com/android/settings/slices/SliceBuilderUtils.java b/src/com/android/settings/slices/SliceBuilderUtils.java
index 552927e..6e14a3f 100644
--- a/src/com/android/settings/slices/SliceBuilderUtils.java
+++ b/src/com/android/settings/slices/SliceBuilderUtils.java
@@ -159,7 +159,7 @@
.setClass(context, SliceBroadcastReceiver.class)
.putExtra(EXTRA_SLICE_KEY, data.getKey());
return PendingIntent.getBroadcast(context, 0 /* requestCode */, intent,
- PendingIntent.FLAG_UPDATE_CURRENT);
+ PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
}
/**
@@ -167,7 +167,8 @@
*/
public static PendingIntent getContentPendingIntent(Context context, SliceData sliceData) {
final Intent intent = getContentIntent(context, sliceData);
- return PendingIntent.getActivity(context, 0 /* requestCode */, intent, 0 /* flags */);
+ return PendingIntent.getActivity(context, 0 /* requestCode */, intent,
+ PendingIntent.FLAG_IMMUTABLE);
}
/**
diff --git a/src/com/android/settings/users/EditUserInfoController.java b/src/com/android/settings/users/EditUserInfoController.java
deleted file mode 100644
index 6b5e670..0000000
--- a/src/com/android/settings/users/EditUserInfoController.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * Copyright (C) 2013 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.users;
-
-import android.app.Activity;
-import android.app.Dialog;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.pm.UserInfo;
-import android.graphics.Bitmap;
-import android.graphics.drawable.Drawable;
-import android.os.Bundle;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.text.TextUtils;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.WindowManager;
-import android.widget.EditText;
-import android.widget.ImageView;
-
-import androidx.annotation.VisibleForTesting;
-import androidx.appcompat.app.AlertDialog;
-import androidx.fragment.app.Fragment;
-
-import com.android.settings.R;
-import com.android.settingslib.drawable.CircleFramedDrawable;
-
-import java.io.File;
-
-/**
- * This class encapsulates a Dialog for editing the user nickname and photo.
- */
-public class EditUserInfoController {
-
- private static final String KEY_AWAITING_RESULT = "awaiting_result";
- private static final String KEY_SAVED_PHOTO = "pending_photo";
-
- private Dialog mEditUserInfoDialog;
- private Bitmap mSavedPhoto;
- private EditUserPhotoController mEditUserPhotoController;
- private UserHandle mUser;
- private UserManager mUserManager;
- private boolean mWaitingForActivityResult = false;
-
- /**
- * Callback made when either the username text or photo choice changes.
- */
- public interface OnContentChangedCallback {
- /** Photo updated. */
- void onPhotoChanged(UserHandle user, Drawable photo);
- /** Username updated. */
- void onLabelChanged(UserHandle user, CharSequence label);
- }
-
- /**
- * Callback made when the dialog finishes.
- */
- public interface OnDialogCompleteCallback {
- /** Dialog closed with positive button. */
- void onPositive();
- /** Dialog closed with negative button or cancelled. */
- void onNegativeOrCancel();
- }
-
- public void clear() {
- if (mEditUserPhotoController != null) {
- mEditUserPhotoController.removeNewUserPhotoBitmapFile();
- }
- mEditUserInfoDialog = null;
- mSavedPhoto = null;
- }
-
- public Dialog getDialog() {
- return mEditUserInfoDialog;
- }
-
- public void onRestoreInstanceState(Bundle icicle) {
- String pendingPhoto = icicle.getString(KEY_SAVED_PHOTO);
- if (pendingPhoto != null) {
- mSavedPhoto = EditUserPhotoController.loadNewUserPhotoBitmap(new File(pendingPhoto));
- }
- mWaitingForActivityResult = icicle.getBoolean(KEY_AWAITING_RESULT, false);
- }
-
- public void onSaveInstanceState(Bundle outState) {
- if (mEditUserInfoDialog != null && mEditUserPhotoController != null) {
- // Bitmap cannot be stored into bundle because it may exceed parcel limit
- // Store it in a temporary file instead
- File file = mEditUserPhotoController.saveNewUserPhotoBitmap();
- if (file != null) {
- outState.putString(KEY_SAVED_PHOTO, file.getPath());
- }
- }
- if (mWaitingForActivityResult) {
- outState.putBoolean(KEY_AWAITING_RESULT, mWaitingForActivityResult);
- }
- }
-
- public void startingActivityForResult() {
- mWaitingForActivityResult = true;
- }
-
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- mWaitingForActivityResult = false;
-
- if (mEditUserPhotoController != null && mEditUserInfoDialog != null) {
- mEditUserPhotoController.onActivityResult(requestCode, resultCode, data);
- }
- }
-
- public Dialog createDialog(final Fragment fragment, final Drawable currentUserIcon,
- final CharSequence currentUserName,
- String title, final OnContentChangedCallback callback, UserHandle user,
- OnDialogCompleteCallback completeCallback) {
- Activity activity = fragment.getActivity();
- mUser = user;
- if (mUserManager == null) {
- mUserManager = activity.getSystemService(UserManager.class);
- }
- LayoutInflater inflater = activity.getLayoutInflater();
- View content = inflater.inflate(R.layout.edit_user_info_dialog_content, null);
-
- final EditText userNameView = (EditText) content.findViewById(R.id.user_name);
- userNameView.setText(currentUserName);
-
- final ImageView userPhotoView = (ImageView) content.findViewById(R.id.user_photo);
-
- boolean canChangePhoto = mUserManager != null &&
- canChangePhoto(activity, mUserManager.getUserInfo(user.getIdentifier()));
- if (!canChangePhoto) {
- // some users can't change their photos so we need to remove suggestive
- // background from the photoView
- userPhotoView.setBackground(null);
- }
- Drawable drawable = null;
- if (mSavedPhoto != null) {
- drawable = CircleFramedDrawable.getInstance(activity, mSavedPhoto);
- } else {
- drawable = currentUserIcon;
- }
- userPhotoView.setImageDrawable(drawable);
- if (canChangePhoto) {
- mEditUserPhotoController =
- createEditUserPhotoController(fragment, userPhotoView, drawable);
- }
- mEditUserInfoDialog = new AlertDialog.Builder(activity)
- .setTitle(title)
- .setView(content)
- .setCancelable(true)
- .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- if (which == DialogInterface.BUTTON_POSITIVE) {
- // Update the name if changed.
- CharSequence userName = userNameView.getText();
- if (!TextUtils.isEmpty(userName)) {
- if (currentUserName == null
- || !userName.toString().equals(
- currentUserName.toString())) {
- if (callback != null) {
- callback.onLabelChanged(mUser, userName.toString());
- }
- }
- }
- // Update the photo if changed.
- if (mEditUserPhotoController != null) {
- Drawable drawable =
- mEditUserPhotoController.getNewUserPhotoDrawable();
- if (drawable != null && !drawable.equals(currentUserIcon)) {
- if (callback != null) {
- callback.onPhotoChanged(mUser, drawable);
- }
- }
- }
- }
- clear();
- if (completeCallback != null) {
- completeCallback.onPositive();
- }
- }
- })
- .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- clear();
- if (completeCallback != null) {
- completeCallback.onNegativeOrCancel();
- }
- }
- })
- .setOnCancelListener(new DialogInterface.OnCancelListener() {
- @Override
- public void onCancel(DialogInterface dialog) {
- clear();
- if (completeCallback != null) {
- completeCallback.onNegativeOrCancel();
- }
- }
- })
- .create();
-
- // Make sure the IME is up.
- mEditUserInfoDialog.getWindow().setSoftInputMode(
- WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
-
- return mEditUserInfoDialog;
- }
-
- @VisibleForTesting
- boolean canChangePhoto(Context context, UserInfo user) {
- return PhotoCapabilityUtils.canCropPhoto(context) &&
- (PhotoCapabilityUtils.canChoosePhoto(context)
- || PhotoCapabilityUtils.canTakePhoto(context));
- }
-
- @VisibleForTesting
- EditUserPhotoController createEditUserPhotoController(Fragment fragment,
- ImageView userPhotoView, Drawable drawable) {
- return new EditUserPhotoController(fragment, userPhotoView,
- mSavedPhoto, drawable, mWaitingForActivityResult);
- }
-}
diff --git a/src/com/android/settings/users/EditUserPhotoController.java b/src/com/android/settings/users/EditUserPhotoController.java
deleted file mode 100644
index a20513a..0000000
--- a/src/com/android/settings/users/EditUserPhotoController.java
+++ /dev/null
@@ -1,465 +0,0 @@
-/*
- * Copyright (C) 2013 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.users;
-
-import android.app.Activity;
-import android.content.ClipData;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.Intent;
-import android.database.Cursor;
-import android.graphics.Bitmap;
-import android.graphics.Bitmap.Config;
-import android.graphics.BitmapFactory;
-import android.graphics.Canvas;
-import android.graphics.Paint;
-import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
-import android.net.Uri;
-import android.os.AsyncTask;
-import android.os.StrictMode;
-import android.os.UserHandle;
-import android.os.UserManager;
-import android.provider.ContactsContract.DisplayPhoto;
-import android.provider.MediaStore;
-import android.util.Log;
-import android.view.Gravity;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
-import android.widget.ImageView;
-import android.widget.ListPopupWindow;
-import android.widget.TextView;
-
-import androidx.core.content.FileProvider;
-import androidx.fragment.app.Fragment;
-
-import com.android.settings.R;
-import com.android.settings.Utils;
-import com.android.settingslib.RestrictedLockUtils;
-import com.android.settingslib.RestrictedLockUtilsInternal;
-import com.android.settingslib.drawable.CircleFramedDrawable;
-
-import libcore.io.Streams;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-public class EditUserPhotoController {
- private static final String TAG = "EditUserPhotoController";
-
- // It seems that this class generates custom request codes and they may
- // collide with ours, these values are very unlikely to have a conflict.
- private static final int REQUEST_CODE_CHOOSE_PHOTO = 1001;
- private static final int REQUEST_CODE_TAKE_PHOTO = 1002;
- private static final int REQUEST_CODE_CROP_PHOTO = 1003;
-
- private static final String CROP_PICTURE_FILE_NAME = "CropEditUserPhoto.jpg";
- private static final String TAKE_PICTURE_FILE_NAME = "TakeEditUserPhoto2.jpg";
- private static final String NEW_USER_PHOTO_FILE_NAME = "NewUserPhoto.png";
-
- private final int mPhotoSize;
-
- private final Context mContext;
- private final Fragment mFragment;
- private final ImageView mImageView;
-
- private final Uri mCropPictureUri;
- private final Uri mTakePictureUri;
-
- private Bitmap mNewUserPhotoBitmap;
- private Drawable mNewUserPhotoDrawable;
-
- public EditUserPhotoController(Fragment fragment, ImageView view,
- Bitmap bitmap, Drawable drawable, boolean waiting) {
- mContext = view.getContext();
- mFragment = fragment;
- mImageView = view;
- mCropPictureUri = createTempImageUri(mContext, CROP_PICTURE_FILE_NAME, !waiting);
- mTakePictureUri = createTempImageUri(mContext, TAKE_PICTURE_FILE_NAME, !waiting);
- mPhotoSize = getPhotoSize(mContext);
- mImageView.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- showUpdatePhotoPopup();
- }
- });
- mNewUserPhotoBitmap = bitmap;
- mNewUserPhotoDrawable = drawable;
- }
-
- public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
- if (resultCode != Activity.RESULT_OK) {
- return false;
- }
- final Uri pictureUri = data != null && data.getData() != null
- ? data.getData() : mTakePictureUri;
- switch (requestCode) {
- case REQUEST_CODE_CROP_PHOTO:
- onPhotoCropped(pictureUri, true);
- return true;
- case REQUEST_CODE_TAKE_PHOTO:
- case REQUEST_CODE_CHOOSE_PHOTO:
- if (mTakePictureUri.equals(pictureUri)) {
- cropPhoto();
- } else {
- copyAndCropPhoto(pictureUri);
- }
- return true;
- }
- return false;
- }
-
- public Bitmap getNewUserPhotoBitmap() {
- return mNewUserPhotoBitmap;
- }
-
- public Drawable getNewUserPhotoDrawable() {
- return mNewUserPhotoDrawable;
- }
-
- private void showUpdatePhotoPopup() {
- final Context context = mImageView.getContext();
- final boolean canTakePhoto = PhotoCapabilityUtils.canTakePhoto(context);
- final boolean canChoosePhoto = PhotoCapabilityUtils.canChoosePhoto(context);
-
- if (!canTakePhoto && !canChoosePhoto) {
- return;
- }
-
- final List<EditUserPhotoController.RestrictedMenuItem> items = new ArrayList<>();
-
- if (canTakePhoto) {
- final String title = context.getString(R.string.user_image_take_photo);
- final Runnable action = new Runnable() {
- @Override
- public void run() {
- takePhoto();
- }
- };
- items.add(new RestrictedMenuItem(context, title, UserManager.DISALLOW_SET_USER_ICON,
- action));
- }
-
- if (canChoosePhoto) {
- final String title = context.getString(R.string.user_image_choose_photo);
- final Runnable action = new Runnable() {
- @Override
- public void run() {
- choosePhoto();
- }
- };
- items.add(new RestrictedMenuItem(context, title, UserManager.DISALLOW_SET_USER_ICON,
- action));
- }
-
- final ListPopupWindow listPopupWindow = new ListPopupWindow(context);
-
- listPopupWindow.setAnchorView(mImageView);
- listPopupWindow.setModal(true);
- listPopupWindow.setInputMethodMode(ListPopupWindow.INPUT_METHOD_NOT_NEEDED);
- listPopupWindow.setAdapter(new RestrictedPopupMenuAdapter(context, items));
-
- final int width = Math.max(mImageView.getWidth(), context.getResources()
- .getDimensionPixelSize(R.dimen.update_user_photo_popup_min_width));
- listPopupWindow.setWidth(width);
- listPopupWindow.setDropDownGravity(Gravity.START);
-
- listPopupWindow.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- listPopupWindow.dismiss();
- final RestrictedMenuItem item =
- (RestrictedMenuItem) parent.getAdapter().getItem(position);
- item.doAction();
- }
- });
-
- listPopupWindow.show();
- }
-
- private void takePhoto() {
- Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
- appendOutputExtra(intent, mTakePictureUri);
- mFragment.startActivityForResult(intent, REQUEST_CODE_TAKE_PHOTO);
- }
-
- private void choosePhoto() {
- Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
- intent.setType("image/*");
- appendOutputExtra(intent, mTakePictureUri);
- mFragment.startActivityForResult(intent, REQUEST_CODE_CHOOSE_PHOTO);
- }
-
- private void copyAndCropPhoto(final Uri pictureUri) {
- new AsyncTask<Void, Void, Void>() {
- @Override
- protected Void doInBackground(Void... params) {
- final ContentResolver cr = mContext.getContentResolver();
- try (InputStream in = cr.openInputStream(pictureUri);
- OutputStream out = cr.openOutputStream(mTakePictureUri)) {
- Streams.copy(in, out);
- } catch (IOException e) {
- Log.w(TAG, "Failed to copy photo", e);
- }
- return null;
- }
-
- @Override
- protected void onPostExecute(Void result) {
- if (!mFragment.isAdded()) return;
- cropPhoto();
- }
- }.execute();
- }
-
- private void cropPhoto() {
- // TODO: Use a public intent, when there is one.
- Intent intent = new Intent("com.android.camera.action.CROP");
- intent.setDataAndType(mTakePictureUri, "image/*");
- appendOutputExtra(intent, mCropPictureUri);
- appendCropExtras(intent);
- if (intent.resolveActivity(mContext.getPackageManager()) != null) {
- try {
- StrictMode.disableDeathOnFileUriExposure();
- mFragment.startActivityForResult(intent, REQUEST_CODE_CROP_PHOTO);
- } finally {
- StrictMode.enableDeathOnFileUriExposure();
- }
- } else {
- onPhotoCropped(mTakePictureUri, false);
- }
- }
-
- private void appendOutputExtra(Intent intent, Uri pictureUri) {
- intent.putExtra(MediaStore.EXTRA_OUTPUT, pictureUri);
- intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION
- | Intent.FLAG_GRANT_READ_URI_PERMISSION);
- intent.setClipData(ClipData.newRawUri(MediaStore.EXTRA_OUTPUT, pictureUri));
- }
-
- private void appendCropExtras(Intent intent) {
- intent.putExtra("crop", "true");
- intent.putExtra("scale", true);
- intent.putExtra("scaleUpIfNeeded", true);
- intent.putExtra("aspectX", 1);
- intent.putExtra("aspectY", 1);
- intent.putExtra("outputX", mPhotoSize);
- intent.putExtra("outputY", mPhotoSize);
- }
-
- private void onPhotoCropped(final Uri data, final boolean cropped) {
- new AsyncTask<Void, Void, Bitmap>() {
- @Override
- protected Bitmap doInBackground(Void... params) {
- if (cropped) {
- InputStream imageStream = null;
- try {
- imageStream = mContext.getContentResolver()
- .openInputStream(data);
- return BitmapFactory.decodeStream(imageStream);
- } catch (FileNotFoundException fe) {
- Log.w(TAG, "Cannot find image file", fe);
- return null;
- } finally {
- if (imageStream != null) {
- try {
- imageStream.close();
- } catch (IOException ioe) {
- Log.w(TAG, "Cannot close image stream", ioe);
- }
- }
- }
- } else {
- // Scale and crop to a square aspect ratio
- Bitmap croppedImage = Bitmap.createBitmap(mPhotoSize, mPhotoSize,
- Config.ARGB_8888);
- Canvas canvas = new Canvas(croppedImage);
- Bitmap fullImage = null;
- try {
- InputStream imageStream = mContext.getContentResolver()
- .openInputStream(data);
- fullImage = BitmapFactory.decodeStream(imageStream);
- } catch (FileNotFoundException fe) {
- return null;
- }
- if (fullImage != null) {
- final int squareSize = Math.min(fullImage.getWidth(),
- fullImage.getHeight());
- final int left = (fullImage.getWidth() - squareSize) / 2;
- final int top = (fullImage.getHeight() - squareSize) / 2;
- Rect rectSource = new Rect(left, top,
- left + squareSize, top + squareSize);
- Rect rectDest = new Rect(0, 0, mPhotoSize, mPhotoSize);
- Paint paint = new Paint();
- canvas.drawBitmap(fullImage, rectSource, rectDest, paint);
- return croppedImage;
- } else {
- // Bah! Got nothin.
- return null;
- }
- }
- }
-
- @Override
- protected void onPostExecute(Bitmap bitmap) {
- if (bitmap != null) {
- mNewUserPhotoBitmap = bitmap;
- mNewUserPhotoDrawable = CircleFramedDrawable
- .getInstance(mImageView.getContext(), mNewUserPhotoBitmap);
- mImageView.setImageDrawable(mNewUserPhotoDrawable);
- }
- new File(mContext.getCacheDir(), TAKE_PICTURE_FILE_NAME).delete();
- new File(mContext.getCacheDir(), CROP_PICTURE_FILE_NAME).delete();
- }
- }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void[]) null);
- }
-
- private static int getPhotoSize(Context context) {
- Cursor cursor = context.getContentResolver().query(
- DisplayPhoto.CONTENT_MAX_DIMENSIONS_URI,
- new String[]{DisplayPhoto.DISPLAY_MAX_DIM}, null, null, null);
- try {
- cursor.moveToFirst();
- return cursor.getInt(0);
- } finally {
- cursor.close();
- }
- }
-
- private Uri createTempImageUri(Context context, String fileName, boolean purge) {
- final File folder = context.getCacheDir();
- folder.mkdirs();
- final File fullPath = new File(folder, fileName);
- if (purge) {
- fullPath.delete();
- }
- return FileProvider.getUriForFile(context, Utils.FILE_PROVIDER_AUTHORITY, fullPath);
- }
-
- File saveNewUserPhotoBitmap() {
- if (mNewUserPhotoBitmap == null) {
- return null;
- }
- try {
- File file = new File(mContext.getCacheDir(), NEW_USER_PHOTO_FILE_NAME);
- OutputStream os = new FileOutputStream(file);
- mNewUserPhotoBitmap.compress(Bitmap.CompressFormat.PNG, 100, os);
- os.flush();
- os.close();
- return file;
- } catch (IOException e) {
- Log.e(TAG, "Cannot create temp file", e);
- }
- return null;
- }
-
- static Bitmap loadNewUserPhotoBitmap(File file) {
- return BitmapFactory.decodeFile(file.getAbsolutePath());
- }
-
- void removeNewUserPhotoBitmapFile() {
- new File(mContext.getCacheDir(), NEW_USER_PHOTO_FILE_NAME).delete();
- }
-
- private static final class RestrictedMenuItem {
- private final Context mContext;
- private final String mTitle;
- private final Runnable mAction;
- private final RestrictedLockUtils.EnforcedAdmin mAdmin;
- // Restriction may be set by system or something else via UserManager.setUserRestriction().
- private final boolean mIsRestrictedByBase;
-
- /**
- * The menu item, used for popup menu. Any element of such a menu can be disabled by admin.
- * @param context A context.
- * @param title The title of the menu item.
- * @param restriction The restriction, that if is set, blocks the menu item.
- * @param action The action on menu item click.
- */
- public RestrictedMenuItem(Context context, String title, String restriction,
- Runnable action) {
- mContext = context;
- mTitle = title;
- mAction = action;
-
- final int myUserId = UserHandle.myUserId();
- mAdmin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(context,
- restriction, myUserId);
- mIsRestrictedByBase = RestrictedLockUtilsInternal.hasBaseUserRestriction(mContext,
- restriction, myUserId);
- }
-
- @Override
- public String toString() {
- return mTitle;
- }
-
- final void doAction() {
- if (isRestrictedByBase()) {
- return;
- }
-
- if (isRestrictedByAdmin()) {
- RestrictedLockUtils.sendShowAdminSupportDetailsIntent(mContext, mAdmin);
- return;
- }
-
- mAction.run();
- }
-
- final boolean isRestrictedByAdmin() {
- return mAdmin != null;
- }
-
- final boolean isRestrictedByBase() {
- return mIsRestrictedByBase;
- }
- }
-
- /**
- * Provide this adapter to ListPopupWindow.setAdapter() to have a popup window menu, where
- * any element can be restricted by admin (profile owner or device owner).
- */
- private static final class RestrictedPopupMenuAdapter extends ArrayAdapter<RestrictedMenuItem> {
- public RestrictedPopupMenuAdapter(Context context, List<RestrictedMenuItem> items) {
- super(context, R.layout.restricted_popup_menu_item, R.id.text, items);
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- final View view = super.getView(position, convertView, parent);
- final RestrictedMenuItem item = getItem(position);
- final TextView text = (TextView) view.findViewById(R.id.text);
- final ImageView image = (ImageView) view.findViewById(R.id.restricted_icon);
-
- text.setEnabled(!item.isRestrictedByAdmin() && !item.isRestrictedByBase());
- image.setVisibility(item.isRestrictedByAdmin() && !item.isRestrictedByBase() ?
- ImageView.VISIBLE : ImageView.GONE);
-
- return view;
- }
- }
-}
diff --git a/src/com/android/settings/users/PhotoCapabilityUtils.java b/src/com/android/settings/users/PhotoCapabilityUtils.java
deleted file mode 100644
index 1e09857..0000000
--- a/src/com/android/settings/users/PhotoCapabilityUtils.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2020 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.users;
-
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.provider.MediaStore;
-
-class PhotoCapabilityUtils {
-
- /**
- * Check if the current user can perform any activity for
- * android.media.action.IMAGE_CAPTURE action.
- */
- static boolean canTakePhoto(Context context) {
- return context.getPackageManager().queryIntentActivities(
- new Intent(MediaStore.ACTION_IMAGE_CAPTURE),
- PackageManager.MATCH_DEFAULT_ONLY).size() > 0;
- }
-
- /**
- * Check if the current user can perform any activity for
- * android.intent.action.GET_CONTENT action for images.
- */
- static boolean canChoosePhoto(Context context) {
- Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
- intent.setType("image/*");
- return context.getPackageManager().queryIntentActivities(intent, 0).size() > 0;
- }
-
- /**
- * Check if the current user can perform any activity for
- * com.android.camera.action.CROP action for images.
- */
- static boolean canCropPhoto(Context context) {
- Intent intent = new Intent("com.android.camera.action.CROP");
- intent.setType("image/*");
- return context.getPackageManager().queryIntentActivities(intent, 0).size() > 0;
- }
-
-}
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 8bfac91..50cb5de 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -16,8 +16,6 @@
package com.android.settings.users;
-import static android.os.Process.myUserHandle;
-
import android.app.Activity;
import android.app.ActivityManager;
import android.app.Dialog;
@@ -39,10 +37,12 @@
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
+import android.os.Process;
import android.os.RemoteException;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.ContactsContract;
+import android.text.TextUtils;
import android.util.Log;
import android.util.SparseArray;
import android.view.Menu;
@@ -73,6 +73,8 @@
import com.android.settingslib.RestrictedPreference;
import com.android.settingslib.drawable.CircleFramedDrawable;
import com.android.settingslib.search.SearchIndexable;
+import com.android.settingslib.users.EditUserInfoController;
+import com.android.settingslib.users.UserCreatingDialog;
import com.android.settingslib.utils.ThreadUtils;
import com.google.android.setupcompat.util.WizardManagerHelper;
@@ -83,7 +85,6 @@
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
-import java.util.Random;
/**
* Screen that manages the list of users on the device.
@@ -165,9 +166,11 @@
private static SparseArray<Bitmap> sDarkDefaultUserBitmapCache = new SparseArray<>();
private MultiUserSwitchBarController mSwitchBarController;
- private EditUserInfoController mEditUserInfoController = new EditUserInfoController();
+ private EditUserInfoController mEditUserInfoController =
+ new EditUserInfoController(Utils.FILE_PROVIDER_AUTHORITY);
private AddUserWhenLockedPreferenceController mAddUserWhenLockedPreferenceController;
private MultiUserFooterPreferenceController mMultiUserFooterPreferenceController;
+ private UserCreatingDialog mUserCreatingDialog;
private CharSequence mPendingUserName;
private Drawable mPendingUserIcon;
@@ -175,6 +178,8 @@
// A place to cache the generated default avatar
private Drawable mDefaultIconDrawable;
+ // TODO: Replace current Handler solution to something that doesn't leak memory and works
+ // TODO: during a configuration change
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
@@ -321,9 +326,9 @@
@Override
public void onSaveInstanceState(Bundle outState) {
- super.onSaveInstanceState(outState);
mEditUserInfoController.onSaveInstanceState(outState);
outState.putInt(SAVE_REMOVING_USER, mRemovingUserId);
+ super.onSaveInstanceState(outState);
}
@Override
@@ -471,11 +476,22 @@
}
private void onUserCreated(int userId) {
+ hideUserCreatingDialog();
+ // prevent crash when config changes during user creation
+ if (getContext() == null) {
+ return;
+ }
mAddingUser = false;
UserInfo userInfo = mUserManager.getUserInfo(userId);
openUserDetails(userInfo, true);
}
+ private void hideUserCreatingDialog() {
+ if (mUserCreatingDialog != null && mUserCreatingDialog.isShowing()) {
+ mUserCreatingDialog.dismiss();
+ }
+ }
+
private void openUserDetails(UserInfo userInfo, boolean newUser) {
Bundle extras = new Bundle();
extras.putInt(UserDetailsSettings.EXTRA_USER_ID, userInfo.id);
@@ -605,94 +621,82 @@
return dlg;
}
case DIALOG_USER_PROFILE_EDITOR: {
- UserHandle user = myUserHandle();
- UserInfo info = mUserManager.getUserInfo(user.getIdentifier());
- return mEditUserInfoController.createDialog(
- this,
- Utils.getUserIcon(getPrefContext(), mUserManager, info),
- info.name,
- getString(com.android.settingslib.R.string.profile_info_settings_title),
- new EditUserInfoController.OnContentChangedCallback() {
- @Override
- public void onPhotoChanged(UserHandle user, Drawable photo) {
- ThreadUtils.postOnBackgroundThread(new Runnable() {
- @Override
- public void run() {
- mUserManager.setUserIcon(user.getIdentifier(),
- UserIcons.convertToBitmap(photo));
- }
- });
- mMePreference.setIcon(photo);
- }
-
- @Override
- public void onLabelChanged(UserHandle user, CharSequence label) {
- mMePreference.setTitle(label.toString());
- mUserManager.setUserName(user.getIdentifier(), label.toString());
- }
- },
- user,
- null);
+ return buildEditCurrentUserDialog();
}
case DIALOG_USER_PROFILE_EDITOR_ADD_USER: {
synchronized (mUserLock) {
- mPendingUserIcon = UserIcons.getDefaultUserIcon(getPrefContext().getResources(),
- new Random(System.currentTimeMillis()).nextInt(8), false);
mPendingUserName = getString(
com.android.settingslib.R.string.user_new_user_name);
+ mPendingUserIcon = null;
}
- return buildAddUserProfileEditorDialog(USER_TYPE_USER);
+ return buildAddUserDialog(USER_TYPE_USER);
}
case DIALOG_USER_PROFILE_EDITOR_ADD_RESTRICTED_PROFILE: {
synchronized (mUserLock) {
- mPendingUserIcon = UserIcons.getDefaultUserIcon(getPrefContext().getResources(),
- new Random(System.currentTimeMillis()).nextInt(8), false);
mPendingUserName = getString(
com.android.settingslib.R.string.user_new_profile_name);
+ mPendingUserIcon = null;
}
- return buildAddUserProfileEditorDialog(USER_TYPE_RESTRICTED_PROFILE);
+ return buildAddUserDialog(USER_TYPE_RESTRICTED_PROFILE);
}
default:
return null;
}
}
- private Dialog buildAddUserProfileEditorDialog(int userType) {
+ private Dialog buildEditCurrentUserDialog() {
+ final Activity activity = getActivity();
+ if (activity == null) {
+ return null;
+ }
+
+ UserInfo user = mUserManager.getUserInfo(Process.myUserHandle().getIdentifier());
+ Drawable userIcon = Utils.getUserIcon(activity, mUserManager, user);
+
+ return mEditUserInfoController.createDialog(
+ activity,
+ this::startActivityForResult,
+ userIcon,
+ user.name,
+ getString(com.android.settingslib.R.string.profile_info_settings_title),
+ (newUserName, newUserIcon) -> {
+ if (newUserIcon != userIcon) {
+ ThreadUtils.postOnBackgroundThread(() ->
+ mUserManager.setUserIcon(user.id,
+ UserIcons.convertToBitmap(newUserIcon)));
+ mMePreference.setIcon(newUserIcon);
+ }
+
+ if (!TextUtils.isEmpty(newUserName) && !newUserName.equals(user.name)) {
+ mMePreference.setTitle(newUserName);
+ mUserManager.setUserName(user.id, newUserName);
+ }
+ }, null);
+ }
+
+ private Dialog buildAddUserDialog(int userType) {
Dialog d;
synchronized (mUserLock) {
d = mEditUserInfoController.createDialog(
- this,
- mPendingUserIcon,
- mPendingUserName,
+ getActivity(),
+ this::startActivityForResult,
+ null,
+ mPendingUserName.toString(),
getString(userType == USER_TYPE_USER
? com.android.settingslib.R.string.user_info_settings_title
: com.android.settingslib.R.string.profile_info_settings_title),
- new EditUserInfoController.OnContentChangedCallback() {
- @Override
- public void onPhotoChanged(UserHandle user, Drawable photo) {
- mPendingUserIcon = photo;
- }
-
- @Override
- public void onLabelChanged(UserHandle user, CharSequence label) {
- mPendingUserName = label;
- }
+ (userName, userIcon) -> {
+ mPendingUserIcon = userIcon;
+ mPendingUserName = userName;
+ addUserNow(userType);
},
- myUserHandle(),
- new EditUserInfoController.OnDialogCompleteCallback() {
- @Override
- public void onPositive() {
- addUserNow(userType);
+ () -> {
+ synchronized (mUserLock) {
+ mPendingUserIcon = null;
+ mPendingUserName = null;
}
-
- @Override
- public void onNegativeOrCancel() {
- synchronized (mUserLock) {
- mPendingUserIcon = null;
- mPendingUserName = null;
- }
- }
- });
+ }
+ );
}
return d;
}
@@ -759,6 +763,9 @@
: (mPendingUserName != null ? mPendingUserName.toString()
: getString(R.string.user_new_profile_name));
}
+
+ mUserCreatingDialog = new UserCreatingDialog(getActivity());
+ mUserCreatingDialog.show();
ThreadUtils.postOnBackgroundThread(new Runnable() {
@Override
public void run() {
@@ -781,13 +788,15 @@
mAddingUser = false;
mPendingUserIcon = null;
mPendingUserName = null;
+ ThreadUtils.postOnMainThread(() -> hideUserCreatingDialog());
return;
}
- if (mPendingUserIcon != null) {
- mUserManager.setUserIcon(user.id,
- UserIcons.convertToBitmap(mPendingUserIcon));
+ Drawable newUserIcon = mPendingUserIcon;
+ if (newUserIcon == null) {
+ newUserIcon = UserIcons.getDefaultUserIcon(getResources(), user.id, false);
}
+ mUserManager.setUserIcon(user.id, UserIcons.convertToBitmap(newUserIcon));
if (userType == USER_TYPE_USER) {
mHandler.sendEmptyMessage(MESSAGE_UPDATE_LIST);
diff --git a/tests/robotests/assets/exempt_not_implementing_index_provider b/tests/robotests/assets/exempt_not_implementing_index_provider
index 80e179a..97fe120 100644
--- a/tests/robotests/assets/exempt_not_implementing_index_provider
+++ b/tests/robotests/assets/exempt_not_implementing_index_provider
@@ -54,8 +54,8 @@
com.android.settings.inputmethod.SpellCheckersSettings
com.android.settings.location.LocationPersonalSettings
com.android.settings.location.LocationWorkProfileSettings
-com.android.settings.network.ApnEditor
-com.android.settings.network.ApnSettings
+com.android.settings.network.apn.ApnEditor
+com.android.settings.network.apn.ApnSettings
com.android.settings.network.telephony.NetworkSelectSettings
com.android.settings.notification.app.AppNotificationSettings
com.android.settings.notification.app.ChannelNotificationSettings
diff --git a/tests/robotests/src/com/android/settings/DisplaySettingsTest.java b/tests/robotests/src/com/android/settings/DisplaySettingsTest.java
index e914b01..e251669 100644
--- a/tests/robotests/src/com/android/settings/DisplaySettingsTest.java
+++ b/tests/robotests/src/com/android/settings/DisplaySettingsTest.java
@@ -35,6 +35,6 @@
// Nightmode is currently hidden
preferenceKeys.remove("night_mode");
- assertThat(preferenceScreenKeys).containsAllIn(preferenceKeys);
+ assertThat(preferenceScreenKeys).containsAtLeastElementsIn(preferenceKeys);
}
}
diff --git a/tests/robotests/src/com/android/settings/LegalSettingsTest.java b/tests/robotests/src/com/android/settings/LegalSettingsTest.java
index 78a5ee3..3418a40 100644
--- a/tests/robotests/src/com/android/settings/LegalSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/LegalSettingsTest.java
@@ -46,6 +46,6 @@
final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(context, R.xml.about_legal);
- assertThat(keys).containsAllIn(niks);
+ assertThat(keys).containsAtLeastElementsIn(niks);
}
}
diff --git a/tests/robotests/src/com/android/settings/SettingsInitializeTest.java b/tests/robotests/src/com/android/settings/SettingsInitializeTest.java
index c28ffc4..a8f42c2 100644
--- a/tests/robotests/src/com/android/settings/SettingsInitializeTest.java
+++ b/tests/robotests/src/com/android/settings/SettingsInitializeTest.java
@@ -94,6 +94,6 @@
final List<ShortcutInfo> updatedShortcuts = mShortcutManager.getPinnedShortcuts();
assertThat(updatedShortcuts).hasSize(1);
- assertThat(updatedShortcuts.get(0)).isSameAs(info);
+ assertThat(updatedShortcuts.get(0)).isSameInstanceAs(info);
}
}
diff --git a/tests/robotests/src/com/android/settings/UtilsTest.java b/tests/robotests/src/com/android/settings/UtilsTest.java
index 303fb1b..2aa8418 100644
--- a/tests/robotests/src/com/android/settings/UtilsTest.java
+++ b/tests/robotests/src/com/android/settings/UtilsTest.java
@@ -40,8 +40,6 @@
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.VectorDrawable;
-import android.media.MediaRoute2Info;
-import android.media.MediaRouter2Manager;
import android.net.ConnectivityManager;
import android.net.LinkAddress;
import android.net.LinkProperties;
@@ -301,33 +299,4 @@
assertThat(Utils.isSettingsIntelligence(mContext)).isFalse();
}
-
- @Test
- public void isMediaOutputDisabled_infosSizeEqual1_returnsTrue() {
- final MediaRouter2Manager router2Manager = mock(MediaRouter2Manager.class);
- final MediaRoute2Info info = mock(MediaRoute2Info.class);
- final List<MediaRoute2Info> infos = new ArrayList<>();
- infos.add(info);
-
- when(router2Manager.getAvailableRoutes(anyString())).thenReturn(infos);
- when(info.getType()).thenReturn(0);
-
- assertThat(Utils.isMediaOutputDisabled(router2Manager, "test")).isTrue();
- }
-
- @Test
- public void isMediaOutputDisabled_infosSizeOverThan1_returnsFalse() {
- final MediaRouter2Manager router2Manager = mock(MediaRouter2Manager.class);
- final MediaRoute2Info info = mock(MediaRoute2Info.class);
- final MediaRoute2Info info2 = mock(MediaRoute2Info.class);
- final List<MediaRoute2Info> infos = new ArrayList<>();
- infos.add(info);
- infos.add(info2);
-
- when(router2Manager.getAvailableRoutes(anyString())).thenReturn(infos);
- when(info.getType()).thenReturn(0);
- when(info2.getType()).thenReturn(0);
-
- assertThat(Utils.isMediaOutputDisabled(router2Manager, "test")).isFalse();
- }
}
diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
index 329c23d..c2cc609 100644
--- a/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
+++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java
@@ -99,7 +99,7 @@
final List<String> keys =
XmlTestUtils.getKeysFromPreferenceXml(mContext, R.xml.accessibility_settings);
- assertThat(keys).containsAllIn(niks);
+ assertThat(keys).containsAtLeastElementsIn(niks);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/accessibility/ColorPreferenceTest.java b/tests/robotests/src/com/android/settings/accessibility/ColorPreferenceTest.java
new file mode 100644
index 0000000..d967b98
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/ColorPreferenceTest.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2020 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.accessibility;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import androidx.preference.PreferenceViewHolder;
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.settings.R;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
+import org.robolectric.RobolectricTestRunner;
+
+/** Tests for {@link ColorPreference}. */
+@RunWith(RobolectricTestRunner.class)
+public class ColorPreferenceTest {
+
+ private Context mContext;
+ private static final int COLOR_TRANSPARENT_VALUE = 0;
+ private static final int COLOR_WHITE_VALUE = 0xFFFFFFFF;
+ private static final int COLOR_BLACK_VALUE = 0xFF000000;
+ private static final String COLOR_TRANSPARENT = "TRANSPARENT";
+ private static final String COLOR_WHITE = "WHITE";
+ private static final String COLOR_BLACK = "BLACK";
+ private final int[] mColorValues =
+ {COLOR_TRANSPARENT_VALUE, COLOR_WHITE_VALUE, COLOR_BLACK_VALUE};
+ private final String[] mColorTitles = {COLOR_TRANSPARENT, COLOR_WHITE, COLOR_BLACK};
+ private View mRootView;
+ private ImageView mImageView;
+ private TextView mTextView;
+ private ColorPreference mColorPreference;
+ private PreferenceViewHolder mViewHolder;
+
+ @Before
+ public void init() {
+ mContext = ApplicationProvider.getApplicationContext();
+ mRootView = spy(new View(mContext));
+ mViewHolder = spy(PreferenceViewHolder.createInstanceForTests(mRootView));
+ mImageView = spy(new ImageView(mContext));
+ mTextView = spy(new TextView(mContext));
+
+ final AttributeSet attributeSet = Robolectric.buildAttributeSet().build();
+ mColorPreference = new ColorPreference(mContext, attributeSet);
+ }
+
+ @Test
+ public void setPreviewEnabled_enabled_shouldSetCustomLayout() {
+ mColorPreference.setPreviewEnabled(true);
+
+ assertThat(mColorPreference.getWidgetLayoutResource()).isEqualTo(R.layout.preference_color);
+ }
+
+ @Test
+ public void setPreviewEnabled_disabled_shouldSetInvalidId() {
+ mColorPreference.setPreviewEnabled(false);
+
+ assertThat(mColorPreference.getWidgetLayoutResource()).isEqualTo(0);
+ }
+
+ @Test
+ public void setTitles_titlesExist_returnTitle() {
+ mColorPreference.setTitles(mColorTitles);
+
+ assertThat(mColorPreference.getTitleAt(/* index= */ 0)).isEqualTo(mColorTitles[0]);
+ assertThat(mColorPreference.getTitleAt(/* index= */ 1)).isEqualTo(mColorTitles[1]);
+ assertThat(mColorPreference.getTitleAt(/* index= */ 2)).isEqualTo(mColorTitles[2]);
+ }
+
+ @Test
+ public void setTitles_noTitle_returnRGBText() {
+ final int testIndex = 0;
+ mColorPreference.setValues(mColorValues);
+ final ListDialogPreference listDialogPreference = (ListDialogPreference) mColorPreference;
+ final int value = listDialogPreference.getValueAt(testIndex);
+ final int r = Color.red(value);
+ final int g = Color.green(value);
+ final int b = Color.blue(value);
+ final String rgbText = mContext.getString(R.string.color_custom, r, g, b);
+
+ mColorPreference.setTitles(null);
+ final CharSequence title = mColorPreference.getTitleAt(testIndex);
+
+ assertThat(title).isEqualTo(rgbText);
+ }
+
+ @Test
+ public void onBindViewHolder_enabled_transparent_matchBackgroundResource() {
+ doReturn(mImageView).when(mViewHolder).findViewById(R.id.color_preview);
+ mColorPreference.setPreviewEnabled(true);
+
+ mColorPreference.setEnabled(true);
+ mColorPreference.setTitles(mColorTitles);
+ mColorPreference.setValues(mColorValues);
+ mColorPreference.setValue(COLOR_TRANSPARENT_VALUE);
+ mColorPreference.onBindViewHolder(mViewHolder);
+
+ verify(mImageView).setBackgroundResource(R.drawable.transparency_tileable);
+ }
+
+ @Test
+ public void onBindViewHolder_enabled_titlesExist_matchDescription() {
+ doReturn(mImageView).when(mViewHolder).findViewById(R.id.color_preview);
+ mColorPreference.setPreviewEnabled(true);
+
+ mColorPreference.setEnabled(true);
+ mColorPreference.setTitles(mColorTitles);
+ mColorPreference.setValues(mColorValues);
+ mColorPreference.setValue(COLOR_WHITE_VALUE);
+ mColorPreference.onBindViewHolder(mViewHolder);
+
+ verify(mImageView).setContentDescription(COLOR_WHITE);
+ }
+
+ @Test
+ public void onBindViewHolder_disabled_matchAlpha() {
+ doReturn(mImageView).when(mViewHolder).findViewById(R.id.color_preview);
+ mColorPreference.setPreviewEnabled(true);
+ mColorPreference.setValues(mColorValues);
+ mColorPreference.setValue(COLOR_WHITE_VALUE);
+
+ mColorPreference.setEnabled(false);
+ mColorPreference.onBindViewHolder(mViewHolder);
+
+ verify(mImageView).setAlpha(0.2f);
+ }
+
+ @Test
+ public void onBindListItem_transparent_matchBackgroundResource() {
+ final int colorTransparentIndex = 0;
+ doReturn(mImageView).when(mRootView).findViewById(R.id.color_swatch);
+ doReturn(mTextView).when(mRootView).findViewById(R.id.summary);
+ mColorPreference.setTitles(mColorTitles);
+ mColorPreference.setValues(mColorValues);
+
+ mColorPreference.onBindListItem(mRootView, colorTransparentIndex);
+
+ verify(mImageView).setBackgroundResource(R.drawable.transparency_tileable);
+ }
+
+ @Test
+ public void onBindListItem_colorDrawable_matchColor() {
+ final int testIndex = 0;
+ final ColorDrawable colorDrawable = spy(new ColorDrawable());
+ doReturn(mImageView).when(mRootView).findViewById(R.id.color_swatch);
+ doReturn(colorDrawable).when(mImageView).getDrawable();
+ doReturn(mTextView).when(mRootView).findViewById(R.id.summary);
+ mColorPreference.setTitles(mColorTitles);
+ mColorPreference.setValues(mColorValues);
+
+ mColorPreference.onBindListItem(mRootView, testIndex);
+ final int argb = mColorPreference.getValueAt(testIndex);
+ final int alpha = Color.alpha(argb);
+
+ verify(colorDrawable).setColor(alpha);
+ }
+
+ @Test
+ public void onBindListItem_colorDrawable_matchSummary() {
+ final int testIndex = 0;
+ doReturn(mImageView).when(mRootView).findViewById(R.id.color_swatch);
+ doReturn(mTextView).when(mRootView).findViewById(R.id.summary);
+ mColorPreference.setTitles(mColorTitles);
+ mColorPreference.setValues(mColorValues);
+
+ mColorPreference.onBindListItem(mRootView, /* index= */ testIndex);
+ final CharSequence title = mColorPreference.getTitleAt(testIndex);
+
+ verify(mTextView).setText(title);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/accessibility/EdgeTypePreferenceTest.java b/tests/robotests/src/com/android/settings/accessibility/EdgeTypePreferenceTest.java
new file mode 100644
index 0000000..9117d51
--- /dev/null
+++ b/tests/robotests/src/com/android/settings/accessibility/EdgeTypePreferenceTest.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2020 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.accessibility;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.accessibility.CaptioningManager.CaptionStyle;
+import android.widget.TextView;
+
+import androidx.test.core.app.ApplicationProvider;
+
+import com.android.internal.widget.SubtitleView;
+import com.android.settings.R;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
+import org.robolectric.RobolectricTestRunner;
+
+/** Tests for {@link EdgeTypePreference}. */
+@RunWith(RobolectricTestRunner.class)
+public class EdgeTypePreferenceTest {
+
+ private Context mContext;
+ private View mRootView;
+ private TextView mSummaryView;
+ private SubtitleView mSubtitleView;
+ private EdgeTypePreference mEdgeTypePreference;
+
+ @Before
+ public void init() {
+ mContext = ApplicationProvider.getApplicationContext();
+ mRootView = spy(new View(mContext));
+ mSummaryView = spy(new TextView(mContext));
+ mSubtitleView = spy(new SubtitleView(mContext));
+
+ final AttributeSet attributeSet = Robolectric.buildAttributeSet().build();
+ mEdgeTypePreference = spy(new EdgeTypePreference(mContext, attributeSet));
+ doReturn(mSubtitleView).when(mRootView).findViewById(R.id.preview);
+ doReturn(mSummaryView).when(mRootView).findViewById(R.id.summary);
+ }
+
+ @Test
+ public void shouldDisableDependents_edgeTypeNone_returnTrue() {
+ mEdgeTypePreference.setValue(CaptionStyle.EDGE_TYPE_NONE);
+ final boolean shouldDisableDependents =
+ mEdgeTypePreference.shouldDisableDependents();
+
+ assertThat(shouldDisableDependents).isTrue();
+ }
+
+ @Test
+ public void onBindListItem_initSubtitleView() {
+ final int testIndex = 0;
+ mEdgeTypePreference.onBindListItem(mRootView, testIndex);
+ final float density = mContext.getResources().getDisplayMetrics().density;
+ final int value = mEdgeTypePreference.getValueAt(testIndex);
+
+ verify(mSubtitleView).setForegroundColor(Color.WHITE);
+ verify(mSubtitleView).setBackgroundColor(Color.TRANSPARENT);
+ verify(mSubtitleView).setTextSize(32f * density);
+ verify(mSubtitleView).setEdgeType(value);
+ verify(mSubtitleView).setEdgeColor(Color.BLACK);
+ }
+
+ @Test
+ public void onBindListItem_setSummary() {
+ final int testIndex = 0;
+ mEdgeTypePreference.onBindListItem(mRootView, testIndex);
+ final CharSequence title = mEdgeTypePreference.getTitleAt(testIndex);
+
+ verify(mSummaryView).setText(title);
+ }
+}
diff --git a/tests/robotests/src/com/android/settings/applications/ApplicationFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/applications/ApplicationFeatureProviderImplTest.java
index 1651cb6..7044389 100644
--- a/tests/robotests/src/com/android/settings/applications/ApplicationFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/applications/ApplicationFeatureProviderImplTest.java
@@ -280,7 +280,7 @@
final List<String> expectedPackages = Arrays.asList(testDialer, testSms,
testLocationHistory);
- assertThat(keepEnabledPackages).containsAllIn(expectedPackages);
+ assertThat(keepEnabledPackages).containsAtLeastElementsIn(expectedPackages);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/AppButtonsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/AppButtonsPreferenceControllerTest.java
index a5ac209..9a65dc8 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/AppButtonsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/AppButtonsPreferenceControllerTest.java
@@ -420,7 +420,7 @@
mController.forceStopPackage(PACKAGE_NAME);
verify(mAm).forceStopPackage(PACKAGE_NAME);
- assertThat(mController.mAppEntry).isSameAs(appEntry);
+ assertThat(mController.mAppEntry).isSameInstanceAs(appEntry);
verify(mController).updateForceStopButton();
}
diff --git a/tests/robotests/src/com/android/settings/applications/appinfo/ExternalSourcesDetailsTest.java b/tests/robotests/src/com/android/settings/applications/appinfo/ExternalSourcesDetailsTest.java
index 002a0bc..10c2675 100644
--- a/tests/robotests/src/com/android/settings/applications/appinfo/ExternalSourcesDetailsTest.java
+++ b/tests/robotests/src/com/android/settings/applications/appinfo/ExternalSourcesDetailsTest.java
@@ -19,17 +19,11 @@
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;
import static org.mockito.ArgumentMatchers.nullable;
import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import android.app.ActivityManager;
-import android.app.AppOpsManager;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.pm.ApplicationInfo;
@@ -61,10 +55,6 @@
@Mock
private UserManager mUserManager;
@Mock
- private ActivityManager mActivityManager;
- @Mock
- private AppOpsManager mAppOpsManager;
- @Mock
private RestrictedSwitchPreference mSwitchPref;
@Mock
private RestrictedPreferenceHelper mHelper;
@@ -79,47 +69,10 @@
mFragment = new ExternalSourcesDetails();
ReflectionHelpers.setField(mFragment, "mUserManager", mUserManager);
- ReflectionHelpers.setField(mFragment, "mActivityManager", mActivityManager);
- ReflectionHelpers.setField(mFragment, "mAppOpsManager", mAppOpsManager);
ReflectionHelpers.setField(mFragment, "mSwitchPref", mSwitchPref);
}
@Test
- public void setCanInstallApps_false_shouldKillNonCoreUid() {
- int mockUid = 23456;
- ReflectionHelpers.setField(mFragment, "mPackageInfo", mPackageInfo);
-
- mPackageInfo.applicationInfo = new ApplicationInfo();
- mPackageInfo.applicationInfo.uid = mockUid;
- assertThat(UserHandle.isCore(mockUid)).isFalse();
- mFragment.setCanInstallApps(false);
- verify(mActivityManager).killUid(eq(mockUid), anyString());
- }
-
- @Test
- public void setCanInstallApps_false_shouldNotKillCoreUid() {
- int mockUid = 1234;
- ReflectionHelpers.setField(mFragment, "mPackageInfo", mPackageInfo);
-
- mPackageInfo.applicationInfo = new ApplicationInfo();
- mPackageInfo.applicationInfo.uid = mockUid;
- assertThat(UserHandle.isCore(mockUid)).isTrue();
- mFragment.setCanInstallApps(false);
- verify(mActivityManager, never()).killUid(eq(mockUid), anyString());
- }
-
- @Test
- public void setCanInstallApps_true_shouldNotKillUid() {
- int mockUid = 23456;
- ReflectionHelpers.setField(mFragment, "mPackageInfo", mPackageInfo);
-
- mPackageInfo.applicationInfo = new ApplicationInfo();
- mPackageInfo.applicationInfo.uid = mockUid;
- mFragment.setCanInstallApps(true);
- verify(mActivityManager, never()).killUid(eq(mockUid), anyString());
- }
-
- @Test
public void refreshUi_noPackageInfo_shouldReturnFalseAndNoCrash() {
mFragment.refreshUi();
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java
index 78ab49b..465e735 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensorTest.java
@@ -17,6 +17,7 @@
package com.android.settings.biometrics.fingerprint;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -92,7 +93,7 @@
ShadowActivity shadowActivity = Shadows.shadowOf(mActivity);
IntentForResult startedActivity =
shadowActivity.getNextStartedActivityForResult();
- assertThat(startedActivity).named("Next activity 1").isNotNull();
+ assertWithMessage("Next activity 1").that(startedActivity).isNotNull();
assertThat(startedActivity.intent.getComponent())
.isEqualTo(new ComponentName(application, FingerprintEnrollEnrolling.class));
}
@@ -107,12 +108,12 @@
ShadowActivity shadowActivity = Shadows.shadowOf(mActivity);
IntentForResult startedActivity =
shadowActivity.getNextStartedActivityForResult();
- assertThat(startedActivity).named("Next activity 1").isNotNull();
+ assertWithMessage("Next activity 1").that(startedActivity).isNotNull();
assertThat(startedActivity.intent.getComponent())
.isEqualTo(new ComponentName(application, FingerprintEnrollEnrolling.class));
// Should only start one next activity
- assertThat(shadowActivity.getNextStartedActivityForResult()).named("Next activity 2")
+ assertWithMessage("Next activity 2").that(shadowActivity.getNextStartedActivityForResult())
.isNull();
}
@@ -129,7 +130,7 @@
ShadowActivity shadowActivity = Shadows.shadowOf(mActivity);
IntentForResult startedActivity =
shadowActivity.getNextStartedActivityForResult();
- assertThat(startedActivity).named("Next activity").isNotNull();
+ assertWithMessage("Next activity").that(startedActivity).isNotNull();
assertThat(startedActivity.intent.getComponent())
.isEqualTo(new ComponentName(application, FingerprintEnrollEnrolling.class));
}
@@ -140,7 +141,7 @@
layout.getMixin(FooterBarMixin.class).getSecondaryButtonView().performClick();
ShadowActivity shadowActivity = Shadows.shadowOf(mActivity);
- assertThat(shadowActivity.getResultCode()).named("result code")
+ assertWithMessage("result code").that(shadowActivity.getResultCode())
.isEqualTo(BiometricEnrollBase.RESULT_SKIP);
}
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java
index 9fa6099..ea5511d 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/FingerprintSuggestionActivityTest.java
@@ -17,6 +17,7 @@
package com.android.settings.biometrics.fingerprint;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
import static org.robolectric.RuntimeEnvironment.application;
@@ -70,12 +71,13 @@
final Button cancelButton =
layout.getMixin(FooterBarMixin.class).getSecondaryButtonView();
assertThat(cancelButton.getText().toString()).isEqualTo("Cancel");
- assertThat(cancelButton.getVisibility()).named("Cancel visible").isEqualTo(View.VISIBLE);
+ assertWithMessage("Cancel visible").that(cancelButton.getVisibility())
+ .isEqualTo(View.VISIBLE);
cancelButton.performClick();
ShadowActivity shadowActivity = Shadows.shadowOf(mController.get());
- assertThat(mController.get().isFinishing()).named("Is finishing").isTrue();
- assertThat(shadowActivity.getResultCode()).named("Result code")
+ assertWithMessage("Is finishing").that(mController.get().isFinishing()).isTrue();
+ assertWithMessage("Result code").that(shadowActivity.getResultCode())
.isEqualTo(Activity.RESULT_CANCELED);
}
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFinishTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFinishTest.java
index 57a56fc..e238a0e 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFinishTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFinishTest.java
@@ -19,6 +19,7 @@
import static com.android.settings.biometrics.fingerprint.FingerprintEnrollFinish.FINGERPRINT_SUGGESTION_ACTIVITY;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
import static org.robolectric.RuntimeEnvironment.application;
@@ -76,7 +77,7 @@
ShadowActivity.IntentForResult startedActivity =
Shadows.shadowOf(mActivity).getNextStartedActivityForResult();
- assertThat(startedActivity).named("Next activity").isNotNull();
+ assertWithMessage("Next activity").that(startedActivity).isNotNull();
assertThat(startedActivity.intent.getComponent())
.isEqualTo(enrollingComponent);
}
@@ -91,7 +92,7 @@
ShadowActivity.IntentForResult startedActivity =
Shadows.shadowOf(mActivity).getNextStartedActivityForResult();
- assertThat(startedActivity).named("Next activity").isNotNull();
+ assertWithMessage("Next activity").that(startedActivity).isNotNull();
assertThat(startedActivity.intent.getComponent())
.isEqualTo(enrollingComponent);
}
@@ -162,4 +163,4 @@
assertThat(application.getPackageManager().getComponentEnabledSetting(
mComponentName)).isEqualTo(PackageManager.COMPONENT_ENABLED_STATE_ENABLED);
}
-}
\ No newline at end of file
+}
diff --git a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java
index 794560c..25780f7 100644
--- a/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java
+++ b/tests/robotests/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollIntroductionTest.java
@@ -17,6 +17,7 @@
package com.android.settings.biometrics.fingerprint;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
import static org.robolectric.RuntimeEnvironment.application;
@@ -26,6 +27,7 @@
import android.hardware.biometrics.SensorProperties;
import android.hardware.fingerprint.FingerprintManager;
import android.hardware.fingerprint.FingerprintSensorProperties;
+import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import android.view.View;
import android.widget.Button;
@@ -74,12 +76,13 @@
Shadows.shadowOf(application.getPackageManager())
.setSystemFeature(PackageManager.FEATURE_FINGERPRINT, true);
- final FingerprintSensorProperties prop = new FingerprintSensorProperties(0 /* sensorId */,
+ final FingerprintSensorPropertiesInternal prop = new FingerprintSensorPropertiesInternal(
+ 0 /* sensorId */,
SensorProperties.STRENGTH_STRONG,
5 /* maxEnrollmentsPerUser */,
FingerprintSensorProperties.TYPE_REAR,
true /* resetLockoutRequiresHardwareAuthToken */);
- final ArrayList<FingerprintSensorProperties> props = new ArrayList<>();
+ final ArrayList<FingerprintSensorPropertiesInternal> props = new ArrayList<>();
props.add(prop);
ShadowFingerprintManager.setSensorProperties(props);
@@ -104,12 +107,12 @@
mController.get().findViewById(R.id.setup_wizard_layout);
final Button skipButton =
layout.getMixin(FooterBarMixin.class).getSecondaryButtonView();
- assertThat(skipButton.getVisibility()).named("Skip visible").isEqualTo(View.VISIBLE);
+ assertWithMessage("Skip visible").that(skipButton.getVisibility()).isEqualTo(View.VISIBLE);
skipButton.performClick();
ShadowActivity shadowActivity = Shadows.shadowOf(mController.get());
- assertThat(mController.get().isFinishing()).named("Is finishing").isTrue();
- assertThat(shadowActivity.getResultCode()).named("Result code")
+ assertWithMessage("Is finishing").that(mController.get().isFinishing()).isTrue();
+ assertWithMessage("Result code").that(shadowActivity.getResultCode())
.isEqualTo(SetupSkipDialog.RESULT_SKIP);
}
@@ -123,12 +126,12 @@
mController.get().findViewById(R.id.setup_wizard_layout);
final Button skipButton =
layout.getMixin(FooterBarMixin.class).getSecondaryButtonView();
- assertThat(skipButton.getVisibility()).named("Skip visible").isEqualTo(View.VISIBLE);
+ assertWithMessage("Skip visible").that(skipButton.getVisibility()).isEqualTo(View.VISIBLE);
skipButton.performClick();
ShadowActivity shadowActivity = Shadows.shadowOf(mController.get());
- assertThat(mController.get().isFinishing()).named("Is finishing").isTrue();
- assertThat(shadowActivity.getResultCode()).named("Result code")
+ assertWithMessage("Is finishing").that(mController.get().isFinishing()).isTrue();
+ assertWithMessage("Result code").that(shadowActivity.getResultCode())
.isEqualTo(BiometricEnrollBase.RESULT_SKIP);
}
diff --git a/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java b/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java
index 149df6e..9e31ca1 100644
--- a/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java
+++ b/tests/robotests/src/com/android/settings/connecteddevice/usb/UsbDetailsFunctionsControllerTest.java
@@ -264,6 +264,18 @@
}
@Test
+ public void onRadioButtonClicked_functionMtp_inAccessoryMode_doNothing() {
+ mRadioButtonPreference.setKey(UsbBackend.usbFunctionsToString(UsbManager.FUNCTION_MTP));
+ doReturn(UsbManager.FUNCTION_ACCESSORY).when(mUsbBackend).getCurrentFunctions();
+
+ mDetailsFunctionsController.mPreviousFunction = UsbManager.FUNCTION_ACCESSORY;
+ mDetailsFunctionsController.onRadioButtonClicked(mRadioButtonPreference);
+
+ assertThat(mDetailsFunctionsController.mPreviousFunction).isEqualTo(
+ UsbManager.FUNCTION_ACCESSORY);
+ }
+
+ @Test
public void onRadioButtonClicked_clickSameButton_doNothing() {
mRadioButtonPreference.setKey(UsbBackend.usbFunctionsToString(UsbManager.FUNCTION_PTP));
doReturn(UsbManager.FUNCTION_PTP).when(mUsbBackend).getCurrentFunctions();
diff --git a/tests/robotests/src/com/android/settings/core/instrumentation/MetricsFeatureProviderTest.java b/tests/robotests/src/com/android/settings/core/instrumentation/MetricsFeatureProviderTest.java
index 9b1c411..a6bd865 100644
--- a/tests/robotests/src/com/android/settings/core/instrumentation/MetricsFeatureProviderTest.java
+++ b/tests/robotests/src/com/android/settings/core/instrumentation/MetricsFeatureProviderTest.java
@@ -47,6 +47,6 @@
MetricsFeatureProvider feature2 =
FeatureFactory.getFactory(mContext).getMetricsFeatureProvider();
- assertThat(feature1).isSameAs(feature2);
+ assertThat(feature1).isSameInstanceAs(feature2);
}
}
diff --git a/tests/robotests/src/com/android/settings/dashboard/CategoryManagerTest.java b/tests/robotests/src/com/android/settings/dashboard/CategoryManagerTest.java
index 64eaad5..a0db866 100644
--- a/tests/robotests/src/com/android/settings/dashboard/CategoryManagerTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/CategoryManagerTest.java
@@ -67,7 +67,7 @@
@Test
public void getInstance_shouldBeSingleton() {
- assertThat(mCategoryManager).isSameAs(CategoryManager.get(mContext));
+ assertThat(mCategoryManager).isSameInstanceAs(CategoryManager.get(mContext));
}
@Test
@@ -147,9 +147,9 @@
mCategoryManager.sortCategories(RuntimeEnvironment.application, mCategoryByKeyMap);
// Verify they are now sorted.
- assertThat(category.getTile(0)).isSameAs(tile3);
- assertThat(category.getTile(1)).isSameAs(tile1);
- assertThat(category.getTile(2)).isSameAs(tile2);
+ assertThat(category.getTile(0)).isSameInstanceAs(tile3);
+ assertThat(category.getTile(1)).isSameInstanceAs(tile1);
+ assertThat(category.getTile(2)).isSameInstanceAs(tile2);
}
@Test
@@ -170,9 +170,9 @@
mCategoryManager.sortCategories(mContext, mCategoryByKeyMap);
// Verify they are now sorted.
- assertThat(category.getTile(0)).isSameAs(tile2);
- assertThat(category.getTile(1)).isSameAs(tile1);
- assertThat(category.getTile(2)).isSameAs(tile3);
+ assertThat(category.getTile(0)).isSameInstanceAs(tile2);
+ assertThat(category.getTile(1)).isSameInstanceAs(tile1);
+ assertThat(category.getTile(2)).isSameInstanceAs(tile3);
}
@Test
@@ -192,9 +192,9 @@
mCategoryManager.sortCategories(mContext, mCategoryByKeyMap);
// Verify the sorting order is not changed
- assertThat(category.getTile(0)).isSameAs(tile1);
- assertThat(category.getTile(1)).isSameAs(tile2);
- assertThat(category.getTile(2)).isSameAs(tile3);
+ assertThat(category.getTile(0)).isSameInstanceAs(tile1);
+ assertThat(category.getTile(1)).isSameInstanceAs(tile2);
+ assertThat(category.getTile(2)).isSameInstanceAs(tile3);
}
@Test
@@ -217,10 +217,10 @@
mCategoryManager.sortCategories(mContext, mCategoryByKeyMap);
// Verify the sorting order is not changed
- assertThat(category.getTile(0)).isSameAs(tile1);
- assertThat(category.getTile(1)).isSameAs(tile2);
- assertThat(category.getTile(2)).isSameAs(tile3);
- assertThat(category.getTile(3)).isSameAs(tile4);
+ assertThat(category.getTile(0)).isSameInstanceAs(tile1);
+ assertThat(category.getTile(1)).isSameInstanceAs(tile2);
+ assertThat(category.getTile(2)).isSameInstanceAs(tile3);
+ assertThat(category.getTile(3)).isSameInstanceAs(tile4);
}
@Test
@@ -242,9 +242,9 @@
mCategoryManager.sortCategories(mContext, mCategoryByKeyMap);
// Verify the sorting order is internal first, follow by package name ordering
- assertThat(category.getTile(0)).isSameAs(tile2);
- assertThat(category.getTile(1)).isSameAs(tile3);
- assertThat(category.getTile(2)).isSameAs(tile1);
+ assertThat(category.getTile(0)).isSameInstanceAs(tile2);
+ assertThat(category.getTile(1)).isSameInstanceAs(tile3);
+ assertThat(category.getTile(2)).isSameInstanceAs(tile1);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
index 4b53ed1..efc7263 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java
@@ -129,7 +129,7 @@
final TestPreferenceController retrievedController = mTestFragment.use
(TestPreferenceController.class);
- assertThat(controller).isSameAs(retrievedController);
+ assertThat(controller).isSameInstanceAs(retrievedController);
}
@Test
@@ -142,7 +142,7 @@
final TestPreferenceController retrievedController = mTestFragment.use
(TestPreferenceController.class);
- assertThat(controller1).isSameAs(retrievedController);
+ assertThat(controller1).isSameInstanceAs(retrievedController);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/datetime/timezone/model/TimeZoneDataTest.java b/tests/robotests/src/com/android/settings/datetime/timezone/model/TimeZoneDataTest.java
index 1acbcda..d21aa04 100644
--- a/tests/robotests/src/com/android/settings/datetime/timezone/model/TimeZoneDataTest.java
+++ b/tests/robotests/src/com/android/settings/datetime/timezone/model/TimeZoneDataTest.java
@@ -54,7 +54,7 @@
when(countryTimeZones.getTimeZoneMappings()).thenReturn(emptyList());
when(mCountryZonesFinder.lookupCountryTimeZones("US")).thenReturn(countryTimeZones);
assertThat(timeZoneData.lookupCountryTimeZones("US").getCountryTimeZones())
- .isSameAs(countryTimeZones);
+ .isSameInstanceAs(countryTimeZones);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java
index 79a19b5..89f51a7 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/BatteryUtilsTest.java
@@ -533,7 +533,7 @@
BatterySipper sipper = mBatteryUtils.findBatterySipperByType(mUsageList,
BatterySipper.DrainType.SCREEN);
- assertThat(sipper).isSameAs(mScreenBatterySipper);
+ assertThat(sipper).isSameInstanceAs(mScreenBatterySipper);
}
@Test
@@ -541,7 +541,7 @@
BatterySipper sipper = mBatteryUtils.findBatterySipperByType(mUsageList,
BatterySipper.DrainType.APP);
- assertThat(sipper).isSameAs(mNormalBatterySipper);
+ assertThat(sipper).isSameInstanceAs(mNormalBatterySipper);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
index 7839e1a..a94ca93 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/PowerUsageSummaryTest.java
@@ -232,7 +232,7 @@
final List<String> keys =
XmlTestUtils.getKeysFromPreferenceXml(context, R.xml.power_usage_summary);
- assertThat(keys).containsAllIn(niks);
+ assertThat(keys).containsAtLeastElementsIn(niks);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/language/LanguageAndInputSettingsTest.java b/tests/robotests/src/com/android/settings/language/LanguageAndInputSettingsTest.java
index a6a362e..5a92aa2 100644
--- a/tests/robotests/src/com/android/settings/language/LanguageAndInputSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/language/LanguageAndInputSettingsTest.java
@@ -133,7 +133,7 @@
final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(context, xmlId);
- assertThat(keys).containsAllIn(niks);
+ assertThat(keys).containsAtLeastElementsIn(niks);
}
@Test
@@ -151,7 +151,7 @@
preferenceKeys.add(controller.getPreferenceKey());
}
- assertThat(preferenceScreenKeys).containsAllIn(preferenceKeys);
+ assertThat(preferenceScreenKeys).containsAtLeastElementsIn(preferenceKeys);
}
/**
diff --git a/tests/robotests/src/com/android/settings/network/PrivateDnsModeDialogPreferenceTest.java b/tests/robotests/src/com/android/settings/network/PrivateDnsModeDialogPreferenceTest.java
index a7e59fc..5fd417d 100644
--- a/tests/robotests/src/com/android/settings/network/PrivateDnsModeDialogPreferenceTest.java
+++ b/tests/robotests/src/com/android/settings/network/PrivateDnsModeDialogPreferenceTest.java
@@ -22,6 +22,7 @@
import static android.provider.Settings.Global.PRIVATE_DNS_MODE;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
import static org.mockito.Mockito.anyInt;
import static org.mockito.Mockito.mock;
@@ -145,13 +146,13 @@
mPreference.mEditText.setText(invalid);
mPreference.onCheckedChanged(null, R.id.private_dns_mode_off);
- assertThat(mSaveButton.isEnabled()).named("off: " + invalid).isTrue();
+ assertWithMessage("off: " + invalid).that(mSaveButton.isEnabled()).isTrue();
mPreference.onCheckedChanged(null, R.id.private_dns_mode_opportunistic);
- assertThat(mSaveButton.isEnabled()).named("opportunistic: " + invalid).isTrue();
+ assertWithMessage("opportunistic: " + invalid).that(mSaveButton.isEnabled()).isTrue();
mPreference.onCheckedChanged(null, R.id.private_dns_mode_provider);
- assertThat(mSaveButton.isEnabled()).named("provider: " + invalid).isFalse();
+ assertWithMessage("provider: " + invalid).that(mSaveButton.isEnabled()).isFalse();
}
}
diff --git a/tests/robotests/src/com/android/settings/network/ApnEditorTest.java b/tests/robotests/src/com/android/settings/network/apn/ApnEditorTest.java
similarity index 97%
rename from tests/robotests/src/com/android/settings/network/ApnEditorTest.java
rename to tests/robotests/src/com/android/settings/network/apn/ApnEditorTest.java
index 7ec1174..0a430cd 100644
--- a/tests/robotests/src/com/android/settings/network/ApnEditorTest.java
+++ b/tests/robotests/src/com/android/settings/network/apn/ApnEditorTest.java
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-package com.android.settings.network;
+package com.android.settings.network.apn;
import static com.google.common.truth.Truth.assertThat;
@@ -46,7 +46,8 @@
import androidx.preference.SwitchPreference;
import com.android.settings.R;
-import com.android.settings.network.ApnEditor.ApnData;
+import com.android.settings.network.ProxySubscriptionManager;
+import com.android.settings.network.apn.ApnEditor.ApnData;
import com.android.settings.testutils.shadow.ShadowFragment;
import org.junit.Before;
@@ -93,7 +94,7 @@
private static final int CURSOR_INTEGER_INDEX = 0;
private static final int CURSOR_STRING_INDEX = 1;
- private static final Uri mApnUri = Uri.parse("Apn://row/1");
+ private static final Uri APN_URI = Uri.parse("Apn://row/1");
@Mock
private Cursor mCursor;
@@ -382,7 +383,7 @@
public void testApnData_invalidIntegerType_throwsInvalidTypeException() {
// GIVEN a ApnData constructed from cursor
initCursor();
- final ApnData data = new ApnData(mApnUri, mCursor);
+ final ApnData data = new ApnData(APN_URI, mCursor);
// WHEN get a string from an integer column
// THEN the InvalidTypeException is threw
@@ -393,7 +394,7 @@
public void testApnData_invalidStringType_throwsInvalidTypeException() {
// GIVEN a ApnData constructed from cursor
initCursor();
- final ApnData data = new ApnData(mApnUri, mCursor);
+ final ApnData data = new ApnData(APN_URI, mCursor);
// WHEN get a integer from a string column
// THEN the InvalidTypeException is threw
@@ -404,7 +405,7 @@
public void testApnData_validIntegerType_returnCorrectValue() {
// GIVEN a ApnData constructed from cursor
initCursor();
- final ApnData data = new ApnData(mApnUri, mCursor);
+ final ApnData data = new ApnData(APN_URI, mCursor);
// WHEN get integer from an integer column
final int val = data.getInteger(CURSOR_INTEGER_INDEX);
@@ -417,7 +418,7 @@
public void testApnData_validStringType_returnCorrectValue() {
// GIVEN a ApnData constructed from cursor
initCursor();
- final ApnData data = new ApnData(mApnUri, mCursor);
+ final ApnData data = new ApnData(APN_URI, mCursor);
// WHEN get string from a string column
final String str = data.getString(CURSOR_STRING_INDEX);
diff --git a/tests/robotests/src/com/android/settings/network/telephony/ApnPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/ApnPreferenceControllerTest.java
index e03da10..566ea8b 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/ApnPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/ApnPreferenceControllerTest.java
@@ -34,7 +34,7 @@
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
-import com.android.settings.network.ApnSettings;
+import com.android.settings.network.apn.ApnSettings;
import com.android.settingslib.RestrictedPreference;
import org.junit.Before;
diff --git a/tests/robotests/src/com/android/settings/nfc/PaymentSettingsTest.java b/tests/robotests/src/com/android/settings/nfc/PaymentSettingsTest.java
index 525f3ef..6740cb0 100644
--- a/tests/robotests/src/com/android/settings/nfc/PaymentSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/nfc/PaymentSettingsTest.java
@@ -113,7 +113,7 @@
final List<String> niks =
PaymentSettings.SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
- assertThat(niks).containsAllOf(FOREGROUND_KEY, PAYMENT_KEY);
+ assertThat(niks).containsAtLeast(FOREGROUND_KEY, PAYMENT_KEY);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/notification/SoundSettingsTest.java b/tests/robotests/src/com/android/settings/notification/SoundSettingsTest.java
index b6f06f4..af0567f 100644
--- a/tests/robotests/src/com/android/settings/notification/SoundSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/notification/SoundSettingsTest.java
@@ -70,7 +70,7 @@
keys.add("ring_volume");
keys.add("notification_volume");
- assertThat(keys).containsAllIn(niks);
+ assertThat(keys).containsAtLeastElementsIn(niks);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockGenericControllerTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockGenericControllerTest.java
index 4adc01b..5067de6 100644
--- a/tests/robotests/src/com/android/settings/password/ChooseLockGenericControllerTest.java
+++ b/tests/robotests/src/com/android/settings/password/ChooseLockGenericControllerTest.java
@@ -22,6 +22,7 @@
import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_NONE;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -84,24 +85,24 @@
public void isScreenLockVisible_shouldRespectResourceConfig() {
for (ScreenLockType lock : ScreenLockType.values()) {
// All locks except managed defaults to visible
- assertThat(mController.isScreenLockVisible(lock)).named(lock + " visible")
+ assertWithMessage(lock + " visible").that(mController.isScreenLockVisible(lock))
.isEqualTo(lock != ScreenLockType.MANAGED);
}
SettingsShadowResources.overrideResource(R.bool.config_hide_none_security_option, true);
SettingsShadowResources.overrideResource(R.bool.config_hide_swipe_security_option, true);
- assertThat(mController.isScreenLockVisible(ScreenLockType.NONE)).named("NONE visible")
+ assertWithMessage("NONE visible").that(mController.isScreenLockVisible(ScreenLockType.NONE))
.isFalse();
- assertThat(mController.isScreenLockVisible(ScreenLockType.SWIPE)).named("SWIPE visible")
- .isFalse();
+ assertWithMessage("SWIPE visible").that(
+ mController.isScreenLockVisible(ScreenLockType.SWIPE)).isFalse();
}
@Test
public void isScreenLockVisible_notCurrentUser_shouldHideInsecure() {
mController = new ChooseLockGenericController(application, 1 /* userId */);
- assertThat(mController.isScreenLockVisible(ScreenLockType.SWIPE)).named("SWIPE visible")
- .isFalse();
- assertThat(mController.isScreenLockVisible(ScreenLockType.NONE)).named("NONE visible")
+ assertWithMessage("SWIPE visible").that(
+ mController.isScreenLockVisible(ScreenLockType.SWIPE)).isFalse();
+ assertWithMessage("NONE visible").that(mController.isScreenLockVisible(ScreenLockType.NONE))
.isFalse();
}
@@ -109,34 +110,31 @@
public void isScreenLockVisible_managedPasswordChoosable_shouldShowManaged() {
doReturn(true).when(mManagedLockPasswordProvider).isManagedPasswordChoosable();
- assertThat(mController.isScreenLockVisible(ScreenLockType.MANAGED)).named("MANAGED visible")
- .isTrue();
+ assertWithMessage("MANAGED visible").that(
+ mController.isScreenLockVisible(ScreenLockType.MANAGED)).isTrue();
}
@Test
public void isScreenLockEnabled_lowerQuality_shouldReturnFalse() {
for (ScreenLockType lock : ScreenLockType.values()) {
- assertThat(mController.isScreenLockEnabled(lock, lock.maxQuality + 1))
- .named(lock + " enabled")
- .isFalse();
+ assertWithMessage(lock + " enabled").that(
+ mController.isScreenLockEnabled(lock, lock.maxQuality + 1)).isFalse();
}
}
@Test
public void isScreenLockEnabled_equalQuality_shouldReturnTrue() {
for (ScreenLockType lock : ScreenLockType.values()) {
- assertThat(mController.isScreenLockEnabled(lock, lock.defaultQuality))
- .named(lock + " enabled")
- .isTrue();
+ assertWithMessage(lock + " enabled").that(
+ mController.isScreenLockEnabled(lock, lock.defaultQuality)).isTrue();
}
}
@Test
public void isScreenLockEnabled_higherQuality_shouldReturnTrue() {
for (ScreenLockType lock : ScreenLockType.values()) {
- assertThat(mController.isScreenLockEnabled(lock, lock.maxQuality - 1))
- .named(lock + " enabled")
- .isTrue();
+ assertWithMessage(lock + " enabled").that(
+ mController.isScreenLockEnabled(lock, lock.maxQuality - 1)).isTrue();
}
}
@@ -144,9 +142,8 @@
public void isScreenLockDisabledByAdmin_lowerQuality_shouldReturnTrue() {
doReturn(true).when(mManagedLockPasswordProvider).isManagedPasswordChoosable();
for (ScreenLockType lock : ScreenLockType.values()) {
- assertThat(mController.isScreenLockDisabledByAdmin(lock, lock.maxQuality + 1))
- .named(lock + " disabledByAdmin")
- .isTrue();
+ assertWithMessage(lock + " disabledByAdmin").that(
+ mController.isScreenLockDisabledByAdmin(lock, lock.maxQuality + 1)).isTrue();
}
}
@@ -154,9 +151,8 @@
public void isScreenLockDisabledByAdmin_equalQuality_shouldReturnFalse() {
doReturn(true).when(mManagedLockPasswordProvider).isManagedPasswordChoosable();
for (ScreenLockType lock : ScreenLockType.values()) {
- assertThat(mController.isScreenLockDisabledByAdmin(lock, lock.maxQuality))
- .named(lock + " disabledByAdmin")
- .isFalse();
+ assertWithMessage(lock + " disabledByAdmin").that(
+ mController.isScreenLockDisabledByAdmin(lock, lock.maxQuality)).isFalse();
}
}
@@ -164,18 +160,16 @@
public void isScreenLockDisabledByAdmin_higherQuality_shouldReturnFalse() {
doReturn(true).when(mManagedLockPasswordProvider).isManagedPasswordChoosable();
for (ScreenLockType lock : ScreenLockType.values()) {
- assertThat(mController.isScreenLockDisabledByAdmin(lock, lock.maxQuality - 1))
- .named(lock + " disabledByAdmin")
- .isFalse();
+ assertWithMessage(lock + " disabledByAdmin").that(
+ mController.isScreenLockDisabledByAdmin(lock, lock.maxQuality - 1)).isFalse();
}
}
@Test
public void isScreenLockDisabledByAdmin_managedNotChoosable_shouldReturnTrue() {
doReturn(false).when(mManagedLockPasswordProvider).isManagedPasswordChoosable();
- assertThat(mController.isScreenLockDisabledByAdmin(
+ assertWithMessage("MANANGED disabledByAdmin").that(mController.isScreenLockDisabledByAdmin(
ScreenLockType.MANAGED, DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED))
- .named("MANANGED disabledByAdmin")
.isTrue();
}
@@ -218,7 +212,7 @@
final int upgradedQuality =
mController.upgradeQuality(DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC);
- assertThat(upgradedQuality).named("upgradedQuality")
+ assertWithMessage("upgradedQuality").that(upgradedQuality)
.isEqualTo(DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC);
}
@@ -230,7 +224,7 @@
final int upgradedQuality =
mController.upgradeQuality(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
- assertThat(upgradedQuality).named("upgradedQuality")
+ assertWithMessage("upgradedQuality").that(upgradedQuality)
.isEqualTo(DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC);
}
diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java
index a9bb8ce..09e4408 100644
--- a/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java
+++ b/tests/robotests/src/com/android/settings/password/ChooseLockPasswordTest.java
@@ -33,6 +33,7 @@
import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_REQUESTED_MIN_COMPLEXITY;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
import static org.robolectric.RuntimeEnvironment.application;
@@ -92,18 +93,16 @@
.setUserId(123)
.build();
- assertThat(intent.getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_FORCE_VERIFY, false))
- .named("EXTRA_KEY_FORCE_VERIFY")
+ assertWithMessage("EXTRA_KEY_FORCE_VERIFY").that(
+ intent.getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_FORCE_VERIFY, false))
.isFalse();
- assertThat((LockscreenCredential) intent.getParcelableExtra(
- ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD))
- .named("EXTRA_KEY_PASSWORD")
+ assertWithMessage("EXTRA_KEY_PASSWORD").that(
+ (LockscreenCredential) intent.getParcelableExtra(
+ ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD))
.isEqualTo(LockscreenCredential.createPassword("password"));
- assertThat(intent.getIntExtra(PASSWORD_TYPE_KEY, 0))
- .named("PASSWORD_TYPE_KEY")
+ assertWithMessage("PASSWORD_TYPE_KEY").that(intent.getIntExtra(PASSWORD_TYPE_KEY, 0))
.isEqualTo(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC);
- assertThat(intent.getIntExtra(Intent.EXTRA_USER_ID, 0))
- .named("EXTRA_USER_ID")
+ assertWithMessage("EXTRA_USER_ID").that(intent.getIntExtra(Intent.EXTRA_USER_ID, 0))
.isEqualTo(123);
}
@@ -115,15 +114,13 @@
.setUserId(123)
.build();
- assertThat(intent.getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_REQUEST_GK_PW_HANDLE,
- false))
- .named("EXTRA_KEY_REQUEST_GK_PW")
+ assertWithMessage("EXTRA_KEY_REQUEST_GK_PW").that(
+ intent.getBooleanExtra(
+ ChooseLockSettingsHelper.EXTRA_KEY_REQUEST_GK_PW_HANDLE, false))
.isTrue();
- assertThat(intent.getIntExtra(PASSWORD_TYPE_KEY, 0))
- .named("PASSWORD_TYPE_KEY")
+ assertWithMessage("PASSWORD_TYPE_KEY").that(intent.getIntExtra(PASSWORD_TYPE_KEY, 0))
.isEqualTo(PASSWORD_QUALITY_ALPHANUMERIC);
- assertThat(intent.getIntExtra(Intent.EXTRA_USER_ID, 0))
- .named("EXTRA_USER_ID")
+ assertWithMessage("EXTRA_USER_ID").that(intent.getIntExtra(Intent.EXTRA_USER_ID, 0))
.isEqualTo(123);
}
@@ -151,12 +148,12 @@
.setProfileToUnify(23, LockscreenCredential.createNone())
.build();
- assertThat(intent.getIntExtra(ChooseLockSettingsHelper.EXTRA_KEY_UNIFICATION_PROFILE_ID, 0))
- .named("EXTRA_KEY_UNIFICATION_PROFILE_ID")
+ assertWithMessage("EXTRA_KEY_UNIFICATION_PROFILE_ID").that(
+ intent.getIntExtra(ChooseLockSettingsHelper.EXTRA_KEY_UNIFICATION_PROFILE_ID, 0))
.isEqualTo(23);
- assertThat((LockscreenCredential) intent.getParcelableExtra(
- ChooseLockSettingsHelper.EXTRA_KEY_UNIFICATION_PROFILE_CREDENTIAL))
- .named("EXTRA_KEY_UNIFICATION_PROFILE_CREDENTIAL")
+ assertWithMessage("EXTRA_KEY_UNIFICATION_PROFILE_CREDENTIAL").that(
+ (LockscreenCredential) intent.getParcelableExtra(
+ ChooseLockSettingsHelper.EXTRA_KEY_UNIFICATION_PROFILE_CREDENTIAL))
.isNotNull();
}
diff --git a/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java b/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java
index f95fda4..1cb946b 100644
--- a/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java
+++ b/tests/robotests/src/com/android/settings/password/ChooseLockPatternTest.java
@@ -17,6 +17,7 @@
package com.android.settings.password;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
import static org.robolectric.RuntimeEnvironment.application;
@@ -58,16 +59,13 @@
.setUserId(123)
.build();
- assertThat(intent
+ assertWithMessage("EXTRA_KEY_FORCE_VERIFY").that(intent
.getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_FORCE_VERIFY, false))
- .named("EXTRA_KEY_FORCE_VERIFY")
.isFalse();
- assertThat((LockscreenCredential) intent
+ assertWithMessage("EXTRA_KEY_PASSWORD").that((LockscreenCredential) intent
.getParcelableExtra(ChooseLockSettingsHelper.EXTRA_KEY_PASSWORD))
- .named("EXTRA_KEY_PASSWORD")
.isEqualTo(createPattern("1234"));
- assertThat(intent.getIntExtra(Intent.EXTRA_USER_ID, 0))
- .named("EXTRA_USER_ID")
+ assertWithMessage("EXTRA_USER_ID").that(intent.getIntExtra(Intent.EXTRA_USER_ID, 0))
.isEqualTo(123);
}
@@ -78,13 +76,11 @@
.setUserId(123)
.build();
- assertThat(intent
+ assertWithMessage("EXTRA_KEY_REQUEST_GK_PW").that(intent
.getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_REQUEST_GK_PW_HANDLE, false))
- .named("EXTRA_KEY_REQUEST_GK_PW")
.isTrue();
- assertThat(intent
- .getIntExtra(Intent.EXTRA_USER_ID, 0))
- .named("EXTRA_USER_ID")
+ assertWithMessage("EXTRA_USER_ID")
+ .that(intent.getIntExtra(Intent.EXTRA_USER_ID, 0))
.isEqualTo(123);
}
@@ -94,12 +90,12 @@
.setProfileToUnify(23, LockscreenCredential.createNone())
.build();
- assertThat(intent.getIntExtra(ChooseLockSettingsHelper.EXTRA_KEY_UNIFICATION_PROFILE_ID, 0))
- .named("EXTRA_KEY_UNIFICATION_PROFILE_ID")
+ assertWithMessage("EXTRA_KEY_UNIFICATION_PROFILE_ID").that(intent
+ .getIntExtra(ChooseLockSettingsHelper.EXTRA_KEY_UNIFICATION_PROFILE_ID, 0))
.isEqualTo(23);
- assertThat((LockscreenCredential) intent.getParcelableExtra(
- ChooseLockSettingsHelper.EXTRA_KEY_UNIFICATION_PROFILE_CREDENTIAL))
- .named("EXTRA_KEY_UNIFICATION_PROFILE_CREDENTIAL")
+ assertWithMessage("EXTRA_KEY_UNIFICATION_PROFILE_CREDENTIAL").that(
+ (LockscreenCredential) intent.getParcelableExtra(
+ ChooseLockSettingsHelper.EXTRA_KEY_UNIFICATION_PROFILE_CREDENTIAL))
.isNotNull();
}
diff --git a/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java b/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java
index 1a76799..5242e11 100644
--- a/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java
+++ b/tests/robotests/src/com/android/settings/password/SetupChooseLockPasswordTest.java
@@ -17,6 +17,7 @@
package com.android.settings.password;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
import static org.robolectric.RuntimeEnvironment.application;
@@ -115,7 +116,7 @@
activity.findViewById(R.id.screen_lock_options).performClick();
AlertDialog latestAlertDialog = (AlertDialog) ShadowDialog.getLatestDialog();
int count = latestAlertDialog.getListView().getCount();
- assertThat(count).named("List items shown").isEqualTo(3);
+ assertWithMessage("List items shown").that(count).isEqualTo(3);
}
@Test
@@ -141,7 +142,7 @@
assertThat(nextStartedActivity).isNotNull();
assertThat(nextStartedActivity.getBooleanExtra(
ChooseLockGenericFragment.EXTRA_SHOW_OPTIONS_BUTTON, false)).isTrue();
- assertThat(nextStartedActivity.getStringExtra("foo")).named("Foo extra")
+ assertWithMessage("Foo extra").that(nextStartedActivity.getStringExtra("foo"))
.isEqualTo("bar");
}
diff --git a/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java b/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java
index 4852546..53e68d9 100644
--- a/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java
+++ b/tests/robotests/src/com/android/settings/password/SetupChooseLockPatternTest.java
@@ -17,6 +17,7 @@
package com.android.settings.password;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
import static org.robolectric.RuntimeEnvironment.application;
@@ -112,7 +113,7 @@
AlertDialog chooserDialog = ShadowAlertDialogCompat.getLatestAlertDialog();
assertThat(chooserDialog).isNotNull();
int count = chooserDialog.getListView().getCount();
- assertThat(count).named("List items shown").isEqualTo(3);
+ assertWithMessage("List items shown").that(count).isEqualTo(3);
}
@Config(qualifiers = "sw400dp")
diff --git a/tests/robotests/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java b/tests/robotests/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java
index c9bff38..1fc0230 100644
--- a/tests/robotests/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java
+++ b/tests/robotests/src/com/android/settings/search/SettingsSearchIndexablesProviderTest.java
@@ -117,7 +117,7 @@
}
assertThat(keys).hasSize(3);
- assertThat(keys).containsAllOf("pref_key_1", "pref_key_3", "pref_key_5");
+ assertThat(keys).containsAtLeast("pref_key_1", "pref_key_3", "pref_key_5");
}
@Test
diff --git a/tests/robotests/src/com/android/settings/security/InstallCertificateFromStorageTest.java b/tests/robotests/src/com/android/settings/security/InstallCertificateFromStorageTest.java
index 2adad00..43d8d94 100644
--- a/tests/robotests/src/com/android/settings/security/InstallCertificateFromStorageTest.java
+++ b/tests/robotests/src/com/android/settings/security/InstallCertificateFromStorageTest.java
@@ -80,7 +80,7 @@
final List<String> nonIndexableKeys =
SEARCH_INDEX_DATA_PROVIDER.getNonIndexableKeys(mContext);
- assertThat(nonIndexableKeys).containsAllIn(mTestKeys);
+ assertThat(nonIndexableKeys).containsAtLeastElementsIn(mTestKeys);
}
}
diff --git a/tests/robotests/src/com/android/settings/security/LockscreenDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/security/LockscreenDashboardFragmentTest.java
index 8b5c5fe..294d05e 100644
--- a/tests/robotests/src/com/android/settings/security/LockscreenDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/security/LockscreenDashboardFragmentTest.java
@@ -74,7 +74,7 @@
List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(RuntimeEnvironment.application,
mTestFragment.getPreferenceScreenResId());
- assertThat(keys).containsAllOf(LockscreenDashboardFragment.KEY_LOCK_SCREEN_NOTIFICATON,
+ assertThat(keys).containsAtLeast(LockscreenDashboardFragment.KEY_LOCK_SCREEN_NOTIFICATON,
LockscreenDashboardFragment.KEY_LOCK_SCREEN_NOTIFICATON_WORK_PROFILE,
LockscreenDashboardFragment.KEY_LOCK_SCREEN_NOTIFICATON_WORK_PROFILE_HEADER);
}
diff --git a/tests/robotests/src/com/android/settings/security/SecurityFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/security/SecurityFeatureProviderImplTest.java
index 8dc0db5..392d44e 100644
--- a/tests/robotests/src/com/android/settings/security/SecurityFeatureProviderImplTest.java
+++ b/tests/robotests/src/com/android/settings/security/SecurityFeatureProviderImplTest.java
@@ -48,7 +48,7 @@
final TrustAgentManager m1 = mImpl.getTrustAgentManager();
final TrustAgentManager m2 = mImpl.getTrustAgentManager();
- assertThat(m1).isSameAs(m2);
+ assertThat(m1).isSameInstanceAs(m2);
}
@Test
@@ -56,6 +56,6 @@
final LockPatternUtils l1 = mImpl.getLockPatternUtils(mContext);
final LockPatternUtils l2 = mImpl.getLockPatternUtils(mContext);
- assertThat(l1).isSameAs(l2);
+ assertThat(l1).isSameInstanceAs(l2);
}
}
diff --git a/tests/robotests/src/com/android/settings/system/SystemDashboardFragmentTest.java b/tests/robotests/src/com/android/settings/system/SystemDashboardFragmentTest.java
index 7bdc368..baa4690 100644
--- a/tests/robotests/src/com/android/settings/system/SystemDashboardFragmentTest.java
+++ b/tests/robotests/src/com/android/settings/system/SystemDashboardFragmentTest.java
@@ -73,7 +73,7 @@
final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(mContext, xmlId);
- assertThat(keys).containsAllIn(niks);
+ assertThat(keys).containsAtLeastElementsIn(niks);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowFingerprintManager.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowFingerprintManager.java
index da2d590..e118a89 100644
--- a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowFingerprintManager.java
+++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowFingerprintManager.java
@@ -18,20 +18,19 @@
import android.hardware.fingerprint.Fingerprint;
import android.hardware.fingerprint.FingerprintManager;
-import android.hardware.fingerprint.FingerprintSensorProperties;
+import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
-import java.util.ArrayList;
import java.util.List;
@Implements(FingerprintManager.class)
public class ShadowFingerprintManager extends org.robolectric.shadows.ShadowFingerprintManager {
- private static List<FingerprintSensorProperties> sFingerprintSensorProperties;
+ private static List<FingerprintSensorPropertiesInternal> sFingerprintSensorProperties;
- public static void setSensorProperties(List<FingerprintSensorProperties> props) {
+ public static void setSensorProperties(List<FingerprintSensorPropertiesInternal> props) {
sFingerprintSensorProperties = props;
}
@@ -41,7 +40,7 @@
}
@Implementation
- protected List<FingerprintSensorProperties> getSensorProperties() {
+ protected List<FingerprintSensorPropertiesInternal> getSensorPropertiesInternal() {
return sFingerprintSensorProperties;
}
}
diff --git a/tests/robotests/src/com/android/settings/users/EditUserInfoControllerTest.java b/tests/robotests/src/com/android/settings/users/EditUserInfoControllerTest.java
deleted file mode 100644
index db9872f..0000000
--- a/tests/robotests/src/com/android/settings/users/EditUserInfoControllerTest.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * 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.
- */
-
-package com.android.settings.users;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.app.Dialog;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.UserInfo;
-import android.graphics.drawable.Drawable;
-import android.widget.EditText;
-import android.widget.ImageView;
-
-import androidx.appcompat.app.AlertDialog;
-import androidx.fragment.app.Fragment;
-import androidx.fragment.app.FragmentActivity;
-
-import com.android.settings.R;
-import com.android.settings.testutils.shadow.ShadowAlertDialogCompat;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Answers;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.android.controller.ActivityController;
-import org.robolectric.annotation.Config;
-
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-@RunWith(RobolectricTestRunner.class)
-public class EditUserInfoControllerTest {
- private static final int MAX_USER_NAME_LENGTH = 100;
-
- @Mock
- private Fragment mFragment;
- @Mock
- private Drawable mCurrentIcon;
-
- private boolean mCanChangePhoto;
-
- private FragmentActivity mActivity;
- private TestEditUserInfoController mController;
-
- public class TestEditUserInfoController extends EditUserInfoController {
- private EditUserPhotoController mPhotoController;
-
- private EditUserPhotoController getPhotoController() {
- return mPhotoController;
- }
-
- @Override
- protected EditUserPhotoController createEditUserPhotoController(Fragment fragment,
- ImageView userPhotoView, Drawable drawable) {
- mPhotoController = mock(EditUserPhotoController.class, Answers.RETURNS_DEEP_STUBS);
- return mPhotoController;
- }
-
- @Override
- boolean canChangePhoto(Context context, UserInfo user) {
- return mCanChangePhoto;
- }
- }
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- mActivity = spy(ActivityController.of(new FragmentActivity()).get());
- when(mFragment.getActivity()).thenReturn(mActivity);
- mController = new TestEditUserInfoController();
- mCanChangePhoto = true;
- }
-
- @Test
- public void photoControllerOnActivityResult_whenWaiting_isCalled() {
- mController.createDialog(mFragment, mCurrentIcon, "test user",
- "title", null,
- android.os.Process.myUserHandle(), null);
- mController.startingActivityForResult();
- Intent resultData = new Intent();
- mController.onActivityResult(0, 0, resultData);
- EditUserPhotoController photoController = mController.getPhotoController();
- assertThat(photoController).isNotNull();
- verify(photoController).onActivityResult(eq(0), eq(0), same(resultData));
- }
-
- @Test
- @Config(shadows = ShadowAlertDialogCompat.class)
- public void userNameView_inputLongName_shouldBeConstrained() {
- // generate a string of 200 'A's
- final String longName = Stream.generate(
- () -> String.valueOf('A')).limit(200).collect(Collectors.joining());
- final AlertDialog dialog = (AlertDialog) mController.createDialog(mFragment, mCurrentIcon,
- "test user", "title", null,
- android.os.Process.myUserHandle(), null);
- final EditText userName = ShadowAlertDialogCompat.shadowOf(dialog).getView()
- .findViewById(R.id.user_name);
-
- userName.setText(longName);
-
- assertThat(userName.getText().length()).isEqualTo(MAX_USER_NAME_LENGTH);
- }
-
- @Test
- public void onDialogCompleteCallback_isCalled_whenCancelled() {
- EditUserInfoController.OnContentChangedCallback contentChangeCallback = mock(
- EditUserInfoController.OnContentChangedCallback.class);
-
- EditUserInfoController.OnDialogCompleteCallback dialogCompleteCallback = mock(
- EditUserInfoController.OnDialogCompleteCallback.class);
-
- AlertDialog dialog = (AlertDialog) mController.createDialog(
- mFragment, mCurrentIcon, "test",
- "title", contentChangeCallback,
- android.os.Process.myUserHandle(),
- dialogCompleteCallback);
-
- dialog.show();
- dialog.cancel();
-
- verify(contentChangeCallback, times(0))
- .onLabelChanged(any(), any());
- verify(contentChangeCallback, times(0))
- .onPhotoChanged(any(), any());
- verify(dialogCompleteCallback, times(0)).onPositive();
- verify(dialogCompleteCallback, times(1)).onNegativeOrCancel();
- }
-
- @Test
- public void onDialogCompleteCallback_isCalled_whenPositiveClicked() {
- EditUserInfoController.OnContentChangedCallback contentChangeCallback = mock(
- EditUserInfoController.OnContentChangedCallback.class);
-
- EditUserInfoController.OnDialogCompleteCallback dialogCompleteCallback = mock(
- EditUserInfoController.OnDialogCompleteCallback.class);
-
- AlertDialog dialog = (AlertDialog) mController.createDialog(
- mFragment, mCurrentIcon, "test",
- "title", contentChangeCallback,
- android.os.Process.myUserHandle(),
- dialogCompleteCallback);
-
- // No change to the photo.
- when(mController.getPhotoController().getNewUserPhotoDrawable()).thenReturn(mCurrentIcon);
-
- dialog.show();
- dialog.getButton(Dialog.BUTTON_POSITIVE).performClick();
-
- verify(contentChangeCallback, times(0))
- .onLabelChanged(any(), any());
- verify(contentChangeCallback, times(0))
- .onPhotoChanged(any(), any());
- verify(dialogCompleteCallback, times(1)).onPositive();
- verify(dialogCompleteCallback, times(0)).onNegativeOrCancel();
- }
-
- @Test
- public void onDialogCompleteCallback_isCalled_whenNegativeClicked() {
- EditUserInfoController.OnContentChangedCallback contentChangeCallback = mock(
- EditUserInfoController.OnContentChangedCallback.class);
-
- EditUserInfoController.OnDialogCompleteCallback dialogCompleteCallback = mock(
- EditUserInfoController.OnDialogCompleteCallback.class);
-
- AlertDialog dialog = (AlertDialog) mController.createDialog(
- mFragment, mCurrentIcon, "test",
- "title", contentChangeCallback,
- android.os.Process.myUserHandle(),
- dialogCompleteCallback);
-
- dialog.show();
- dialog.getButton(Dialog.BUTTON_NEGATIVE).performClick();
-
- verify(contentChangeCallback, times(0))
- .onLabelChanged(any(), any());
- verify(contentChangeCallback, times(0))
- .onPhotoChanged(any(), any());
- verify(dialogCompleteCallback, times(0)).onPositive();
- verify(dialogCompleteCallback, times(1)).onNegativeOrCancel();
- }
-
- @Test
- public void onContentChangedCallback_isCalled_whenLabelChanges() {
- EditUserInfoController.OnContentChangedCallback contentChangeCallback = mock(
- EditUserInfoController.OnContentChangedCallback.class);
-
- EditUserInfoController.OnDialogCompleteCallback dialogCompleteCallback = mock(
- EditUserInfoController.OnDialogCompleteCallback.class);
-
- AlertDialog dialog = (AlertDialog) mController.createDialog(
- mFragment, mCurrentIcon, "test",
- "title", contentChangeCallback,
- android.os.Process.myUserHandle(),
- dialogCompleteCallback);
-
- // No change to the photo.
- when(mController.getPhotoController().getNewUserPhotoDrawable()).thenReturn(mCurrentIcon);
-
- dialog.show();
- String expectedNewName = "new test user";
- EditText editText = (EditText) dialog.findViewById(R.id.user_name);
- editText.setText(expectedNewName);
-
- dialog.getButton(Dialog.BUTTON_POSITIVE).performClick();
-
- verify(contentChangeCallback, times(1))
- .onLabelChanged(any(), eq(expectedNewName));
- verify(contentChangeCallback, times(0))
- .onPhotoChanged(any(), any());
- verify(dialogCompleteCallback, times(1)).onPositive();
- verify(dialogCompleteCallback, times(0)).onNegativeOrCancel();
- }
-
- @Test
- public void onContentChangedCallback_isCalled_whenPhotoChanges() {
- EditUserInfoController.OnContentChangedCallback contentChangeCallback = mock(
- EditUserInfoController.OnContentChangedCallback.class);
-
- EditUserInfoController.OnDialogCompleteCallback dialogCompleteCallback = mock(
- EditUserInfoController.OnDialogCompleteCallback.class);
-
- AlertDialog dialog = (AlertDialog) mController.createDialog(
- mFragment, mCurrentIcon, "test",
- "title", contentChangeCallback,
- android.os.Process.myUserHandle(),
- dialogCompleteCallback);
-
- // A different drawable.
- Drawable newPhoto = mock(Drawable.class);
- when(mController.getPhotoController().getNewUserPhotoDrawable()).thenReturn(newPhoto);
-
- dialog.show();
- dialog.getButton(Dialog.BUTTON_POSITIVE).performClick();
-
- verify(contentChangeCallback, times(0))
- .onLabelChanged(any(), any());
- verify(contentChangeCallback, times(1))
- .onPhotoChanged(any(), eq(newPhoto));
- verify(dialogCompleteCallback, times(1)).onPositive();
- verify(dialogCompleteCallback, times(0)).onNegativeOrCancel();
- }
-
- @Test
- public void createDialog_canNotChangePhoto_nullPhotoController() {
- mCanChangePhoto = false;
-
- mController.createDialog(
- mFragment, mCurrentIcon, "test",
- "title", null,
- android.os.Process.myUserHandle(),
- null);
-
- assertThat(mController.mPhotoController).isNull();
- }
-}
diff --git a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
index 27c90b0..ec2fdc6 100644
--- a/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/users/UserSettingsTest.java
@@ -398,7 +398,7 @@
ArgumentCaptor<UserPreference> captor = ArgumentCaptor.forClass(UserPreference.class);
verify(mFragment.mUserListCategory).addPreference(captor.capture());
UserPreference adminPref = captor.getValue();
- assertThat(adminPref).isSameAs(mMePreference);
+ assertThat(adminPref).isSameInstanceAs(mMePreference);
}
@Test
@@ -417,7 +417,7 @@
assertThat(guestPref.getKey()).isEqualTo(KEY_USER_GUEST);
assertThat(guestPref.isEnabled()).isEqualTo(true);
assertThat(guestPref.isSelectable()).isEqualTo(true);
- assertThat(guestPref.getOnPreferenceClickListener()).isSameAs(mFragment);
+ assertThat(guestPref.getOnPreferenceClickListener()).isSameInstanceAs(mFragment);
}
@Test
@@ -436,7 +436,7 @@
assertThat(userPref.getKey()).isEqualTo("id=" + INACTIVE_SECONDARY_USER_ID);
assertThat(userPref.isEnabled()).isEqualTo(true);
assertThat(userPref.isSelectable()).isEqualTo(true);
- assertThat(userPref.getOnPreferenceClickListener()).isSameAs(mFragment);
+ assertThat(userPref.getOnPreferenceClickListener()).isSameInstanceAs(mFragment);
}
@Test
@@ -456,7 +456,7 @@
assertThat(userPref.getSummary()).isEqualTo("Restricted profile");
assertThat(userPref.isEnabled()).isEqualTo(true);
assertThat(userPref.isSelectable()).isEqualTo(true);
- assertThat(userPref.getOnPreferenceClickListener()).isSameAs(mFragment);
+ assertThat(userPref.getOnPreferenceClickListener()).isSameInstanceAs(mFragment);
}
@Test
@@ -493,7 +493,7 @@
assertThat(userPref.getSummary()).isEqualTo("Not set up - Restricted profile");
assertThat(userPref.isEnabled()).isEqualTo(true);
assertThat(userPref.isSelectable()).isEqualTo(true);
- assertThat(userPref.getOnPreferenceClickListener()).isSameAs(mFragment);
+ assertThat(userPref.getOnPreferenceClickListener()).isSameInstanceAs(mFragment);
}
@Test
@@ -518,7 +518,7 @@
assertThat(userPref.getSummary()).isEqualTo("Not set up");
assertThat(userPref.isEnabled()).isEqualTo(false);
assertThat(userPref.isSelectable()).isEqualTo(true);
- assertThat(userPref.getOnPreferenceClickListener()).isSameAs(mFragment);
+ assertThat(userPref.getOnPreferenceClickListener()).isSameInstanceAs(mFragment);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/utils/LocalClassLoaderContextThemeWrapperTest.java b/tests/robotests/src/com/android/settings/utils/LocalClassLoaderContextThemeWrapperTest.java
index f7702be..5a17622 100644
--- a/tests/robotests/src/com/android/settings/utils/LocalClassLoaderContextThemeWrapperTest.java
+++ b/tests/robotests/src/com/android/settings/utils/LocalClassLoaderContextThemeWrapperTest.java
@@ -36,6 +36,6 @@
final Class clazz = LocalClassLoaderContextThemeWrapperTest.class;
mContextThemeWrapper = new LocalClassLoaderContextThemeWrapper(clazz, context, 0);
- assertThat(mContextThemeWrapper.getClassLoader()).isSameAs(clazz.getClassLoader());
+ assertThat(mContextThemeWrapper.getClassLoader()).isSameInstanceAs(clazz.getClassLoader());
}
}
diff --git a/tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java b/tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java
index df9a2c1..f73d0f7 100644
--- a/tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java
+++ b/tests/robotests/src/com/android/settings/widget/EntityHeaderControllerTest.java
@@ -105,7 +105,7 @@
mController = EntityHeaderController.newInstance(mActivity, mFragment, inputView);
View view = mController.done(mActivity);
- assertThat(view).isSameAs(inputView);
+ assertThat(view).isSameInstanceAs(inputView);
}
@Test
diff --git a/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java
index 9521e7a..89df035 100644
--- a/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/ConfigureWifiSettingsTest.java
@@ -36,6 +36,6 @@
final List<String> keys = XmlTestUtils.getKeysFromPreferenceXml(mContext, xmlId);
assertThat(keys).isNotNull();
- assertThat(niks).containsAllIn(keys);
+ assertThat(niks).containsAtLeastElementsIn(keys);
}
}
diff --git a/tests/robotests/src/com/android/settings/wifi/p2p/WifiP2pSettingsTest.java b/tests/robotests/src/com/android/settings/wifi/p2p/WifiP2pSettingsTest.java
index 81615f2..c9d2119 100644
--- a/tests/robotests/src/com/android/settings/wifi/p2p/WifiP2pSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/wifi/p2p/WifiP2pSettingsTest.java
@@ -103,7 +103,7 @@
preferenceKeys.add(controller.getPreferenceKey());
}
- assertThat(preferenceScreenKeys).containsAllIn(preferenceKeys);
+ assertThat(preferenceScreenKeys).containsAtLeastElementsIn(preferenceKeys);
}
@Test
diff --git a/tests/unit/src/com/android/settings/datausage/CellDataPreferenceTest.java b/tests/unit/src/com/android/settings/datausage/CellDataPreferenceTest.java
new file mode 100644
index 0000000..93ca875
--- /dev/null
+++ b/tests/unit/src/com/android/settings/datausage/CellDataPreferenceTest.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2020 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.datausage;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.telephony.SubscriptionInfo;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.LinearLayout;
+
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class CellDataPreferenceTest {
+
+ @Mock
+ private SubscriptionInfo mSubInfo;
+
+ private Context mContext;
+ private CellDataPreference mPreference;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+
+ mContext = ApplicationProvider.getApplicationContext();
+ mPreference = new CellDataPreference(mContext, null) {
+ @Override
+ SubscriptionInfo getActiveSubscriptionInfo(int subId) {
+ return mSubInfo;
+ }
+ };
+
+ final LayoutInflater inflater = LayoutInflater.from(mContext);
+ final View view = inflater.inflate(mPreference.getLayoutResource(),
+ new LinearLayout(mContext), false);
+ }
+
+ @Test
+ public void updateEnabled_noActiveSub_shouldDisable() {
+ mSubInfo = null;
+
+ mPreference.mOnSubscriptionsChangeListener.onChanged();
+
+ assertThat(mPreference.isEnabled()).isFalse();
+ }
+
+ @Test
+ public void updateEnabled_hasActiveSub_shouldEnable() {
+ mPreference.mOnSubscriptionsChangeListener.onChanged();
+
+ assertThat(mPreference.isEnabled()).isTrue();
+ }
+}
diff --git a/tests/unit/src/com/android/settings/network/telephony/ApnPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/ApnPreferenceControllerTest.java
index 264abd0..1f3031a 100644
--- a/tests/unit/src/com/android/settings/network/telephony/ApnPreferenceControllerTest.java
+++ b/tests/unit/src/com/android/settings/network/telephony/ApnPreferenceControllerTest.java
@@ -37,7 +37,7 @@
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
-import com.android.settings.network.ApnSettings;
+import com.android.settings.network.apn.ApnSettings;
import com.android.settingslib.RestrictedPreference;
import org.junit.Before;
diff --git a/tests/unit/src/com/android/settings/network/telephony/cdma/CdmaListPreferenceTest.java b/tests/unit/src/com/android/settings/network/telephony/cdma/CdmaListPreferenceTest.java
new file mode 100644
index 0000000..027a53b
--- /dev/null
+++ b/tests/unit/src/com/android/settings/network/telephony/cdma/CdmaListPreferenceTest.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2020 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.network.telephony.cdma;
+
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.telephony.TelephonyManager;
+
+import androidx.preference.PreferenceManager;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class CdmaListPreferenceTest {
+ private static final int SUB_ID = 2;
+
+ @Mock
+ private TelephonyManager mTelephonyManager;
+ @Mock
+ private PreferenceManager mPreferenceManager;
+
+ private CdmaListPreference mPreference;
+ private Context mContext;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+
+ mContext = spy(ApplicationProvider.getApplicationContext());
+ when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
+ when(mTelephonyManager.createForSubscriptionId(SUB_ID)).thenReturn(mTelephonyManager);
+ mPreference = spy(new CdmaListPreference(mContext, null));
+ mPreference.setSubId(SUB_ID);
+ }
+
+ @Test
+ public void onClick_inEcm_doNothing() {
+ doReturn(true).when(mTelephonyManager).getEmergencyCallbackMode();
+
+ mPreference.onClick();
+
+ verify(mPreferenceManager, never()).showDialog(mPreference);
+ }
+}
diff --git a/tests/unit/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceControllerTest.java
new file mode 100644
index 0000000..86488c6
--- /dev/null
+++ b/tests/unit/src/com/android/settings/network/telephony/cdma/CdmaSubscriptionPreferenceControllerTest.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2020 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.network.telephony.cdma;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.os.SystemProperties;
+import android.provider.Settings;
+import android.telephony.TelephonyManager;
+
+import androidx.preference.ListPreference;
+import androidx.preference.PreferenceManager;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class CdmaSubscriptionPreferenceControllerTest {
+ private static final int SUB_ID = 2;
+
+ @Mock
+ private PreferenceManager mPreferenceManager;
+ @Mock
+ private TelephonyManager mTelephonyManager;
+
+ private CdmaSubscriptionPreferenceController mController;
+ private ListPreference mPreference;
+ private Context mContext;
+ private int mCdmaMode;
+ private String mSubscriptionsSupported;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+
+ mContext = spy(ApplicationProvider.getApplicationContext());
+ when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
+ doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID);
+
+ mPreference = new ListPreference(mContext);
+ mController = new CdmaSubscriptionPreferenceController(mContext, "mobile_data");
+ mController.init(mPreferenceManager, SUB_ID);
+ mController.mPreference = mPreference;
+ mPreference.setKey(mController.getPreferenceKey());
+
+ mCdmaMode = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.CDMA_SUBSCRIPTION_MODE,
+ TelephonyManager.CDMA_SUBSCRIPTION_RUIM_SIM);
+
+ mSubscriptionsSupported = SystemProperties.get("ril.subscription.types");
+ }
+
+ @After
+ public void tearDown() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.CDMA_SUBSCRIPTION_MODE, mCdmaMode);
+
+ SystemProperties.set("ril.subscription.types", mSubscriptionsSupported);
+ }
+
+ @Test
+ public void onPreferenceChange_selectNV_returnNVMode() {
+ doReturn(true).when(mTelephonyManager).setCdmaSubscriptionMode(anyInt());
+
+ mController.onPreferenceChange(mPreference, Integer.toString(
+ TelephonyManager.CDMA_SUBSCRIPTION_NV));
+
+ assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.CDMA_SUBSCRIPTION_MODE,
+ TelephonyManager.CDMA_SUBSCRIPTION_RUIM_SIM)).isEqualTo(
+ TelephonyManager.CDMA_SUBSCRIPTION_NV);
+ }
+
+ @Test
+ public void updateState_stateRUIM_displayRUIM() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.CDMA_SUBSCRIPTION_MODE, TelephonyManager.CDMA_SUBSCRIPTION_NV);
+
+ mController.updateState(mPreference);
+
+ assertThat(mPreference.getValue()).isEqualTo(Integer.toString(
+ TelephonyManager.CDMA_SUBSCRIPTION_NV));
+ }
+
+ @Test
+ public void updateState_stateUnknown_doNothing() {
+ mPreference.setValue(Integer.toString(TelephonyManager.CDMA_SUBSCRIPTION_NV));
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.CDMA_SUBSCRIPTION_MODE, TelephonyManager.CDMA_SUBSCRIPTION_UNKNOWN);
+
+ mController.updateState(mPreference);
+
+ // Still NV mode
+ assertThat(mPreference.getValue()).isEqualTo(Integer.toString(
+ TelephonyManager.CDMA_SUBSCRIPTION_NV));
+ }
+
+ @Test
+ public void deviceSupportsNvAndRuim() {
+ SystemProperties.set("ril.subscription.types", "NV,RUIM");
+ assertThat(mController.deviceSupportsNvAndRuim()).isTrue();
+
+ SystemProperties.set("ril.subscription.types", "");
+
+ assertThat(mController.deviceSupportsNvAndRuim()).isFalse();
+ }
+}
diff --git a/tests/unit/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceControllerTest.java b/tests/unit/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceControllerTest.java
new file mode 100644
index 0000000..4f44a29
--- /dev/null
+++ b/tests/unit/src/com/android/settings/network/telephony/cdma/CdmaSystemSelectPreferenceControllerTest.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2020 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.network.telephony.cdma;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.telephony.TelephonyManager;
+
+import androidx.preference.ListPreference;
+import androidx.preference.PreferenceManager;
+import androidx.test.core.app.ApplicationProvider;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class CdmaSystemSelectPreferenceControllerTest {
+ private static final int SUB_ID = 2;
+
+ @Mock
+ private PreferenceManager mPreferenceManager;
+ @Mock
+ private TelephonyManager mTelephonyManager;
+
+ private CdmaSystemSelectPreferenceController mController;
+ private ListPreference mPreference;
+ private Context mContext;
+ private int mCdmaRoamingMode;
+ private int mSettingsNetworkMode;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+
+ mContext = spy(ApplicationProvider.getApplicationContext());
+ when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
+ doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID);
+
+ mPreference = new ListPreference(mContext);
+ mController = new CdmaSystemSelectPreferenceController(mContext, "mobile_data");
+ mController.init(mPreferenceManager, SUB_ID);
+ mController.mPreference = mPreference;
+ mPreference.setKey(mController.getPreferenceKey());
+
+ mCdmaRoamingMode = Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.CDMA_ROAMING_MODE,
+ TelephonyManager.CDMA_ROAMING_MODE_ANY);
+
+ mSettingsNetworkMode = Settings.Global.getInt(
+ mContext.getContentResolver(),
+ Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID,
+ TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE);
+ }
+
+ @After
+ public void tearDown() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.CDMA_ROAMING_MODE, mCdmaRoamingMode);
+
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID, mSettingsNetworkMode);
+ }
+
+ @Test
+ public void onPreferenceChange_selectHome_returnHomeMode() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.CDMA_ROAMING_MODE,
+ TelephonyManager.CDMA_ROAMING_MODE_ANY);
+ doReturn(true).when(mTelephonyManager).setCdmaRoamingMode(anyInt());
+
+ mController.onPreferenceChange(mPreference,
+ Integer.toString(TelephonyManager.CDMA_ROAMING_MODE_HOME));
+
+ assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.CDMA_ROAMING_MODE,
+ TelephonyManager.CDMA_ROAMING_MODE_ANY)).isEqualTo(
+ TelephonyManager.CDMA_ROAMING_MODE_HOME);
+ }
+
+ @Test
+ public void updateState_stateHome_displayHome() {
+ doReturn(TelephonyManager.CDMA_ROAMING_MODE_HOME).when(
+ mTelephonyManager).getCdmaRoamingMode();
+
+ mController.updateState(mPreference);
+
+ assertThat(mPreference.getValue()).isEqualTo(
+ Integer.toString(TelephonyManager.CDMA_ROAMING_MODE_HOME));
+ }
+
+ @Test
+ public void updateState_LteGSMWcdma_disabled() {
+ doReturn(TelephonyManager.CDMA_ROAMING_MODE_HOME).when(
+ mTelephonyManager).getCdmaRoamingMode();
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID,
+ TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
+
+ mController.updateState(mPreference);
+
+ assertThat(mPreference.isEnabled()).isFalse();
+ }
+
+ @Test
+ public void updateState_stateOther_resetToDefault() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.CDMA_ROAMING_MODE,
+ TelephonyManager.CDMA_ROAMING_MODE_HOME);
+ doReturn(TelephonyManager.CDMA_ROAMING_MODE_AFFILIATED).when(
+ mTelephonyManager).getCdmaRoamingMode();
+
+ mController.updateState(mPreference);
+
+ assertThat(mPreference.getValue()).isEqualTo(
+ Integer.toString(TelephonyManager.CDMA_ROAMING_MODE_ANY));
+ assertThat(Settings.Global.getInt(mContext.getContentResolver(),
+ Settings.Global.CDMA_ROAMING_MODE,
+ TelephonyManager.CDMA_ROAMING_MODE_HOME)).isEqualTo(
+ TelephonyManager.CDMA_ROAMING_MODE_ANY);
+ }
+}
diff --git a/tests/unit/src/com/android/settings/password/SetupChooseLockPasswordAppTest.java b/tests/unit/src/com/android/settings/password/SetupChooseLockPasswordAppTest.java
index cc0253f..037c805 100644
--- a/tests/unit/src/com/android/settings/password/SetupChooseLockPasswordAppTest.java
+++ b/tests/unit/src/com/android/settings/password/SetupChooseLockPasswordAppTest.java
@@ -27,6 +27,7 @@
import static androidx.test.espresso.matcher.ViewMatchers.withText;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
import static org.hamcrest.CoreMatchers.not;
@@ -80,7 +81,7 @@
assertThat(skipOrClearButton.getText()).isEqualTo(mContext.getString(R.string.skip_label));
assertThat(skipOrClearButton.getVisibility()).isEqualTo(View.VISIBLE);
skipOrClearButton.performClick();
- assertThat(activity.isFinishing()).named("Is finishing").isTrue();
+ assertWithMessage("Is finishing").that(activity.isFinishing()).isTrue();
}
@Test