Merge "Changed default assistant picker to verify if can intent to an activity." into pi-car-dev am: 71ea45810f
Change-Id: Id826cc4e8621de8c3633aa714634321d51cc7e8c
diff --git a/Android.mk b/Android.mk
index ea31d6c..90b205f 100644
--- a/Android.mk
+++ b/Android.mk
@@ -44,12 +44,12 @@
car-setup-wizard-lib-utils \
SettingsLib
- # Including the resources for the static android libraries allows this app to pick up their static overlays.
- LOCAL_RESOURCE_DIR += \
- $(LOCAL_PATH)/res \
- $(LOCAL_PATH)/../libs/car-apps-common/res \
- $(LOCAL_PATH)/../libs/car-settings-lib/res \
- $(LOCAL_PATH)/../../../../frameworks/base/packages/SettingsLib/res
+ # Including the resources for the static android libraries allows this app to pick up their static overlays.
+ LOCAL_RESOURCE_DIR += \
+ $(LOCAL_PATH)/res \
+ $(LOCAL_PATH)/../libs/car-apps-common/res \
+ $(LOCAL_PATH)/../libs/car-settings-lib/res \
+ $(LOCAL_PATH)/../../../../frameworks/base/packages/SettingsLib/res
LOCAL_CERTIFICATE := platform
@@ -66,6 +66,8 @@
androidx-constraintlayout_constraintlayout-solver \
jsr305
+ LOCAL_REQUIRED_MODULES := privapp_whitelist_com.android.car.settings
+
LOCAL_DX_FLAGS := --multi-dex
include $(BUILD_PACKAGE)
@@ -102,9 +104,10 @@
car-setup-wizard-lib-utils \
SettingsLib
+ # Testing only resources must be applied first so they take precedence.
LOCAL_RESOURCE_DIR := \
- $(LOCAL_PATH)/res \
$(LOCAL_PATH)/tests/robotests/res \
+ $(LOCAL_PATH)/res \
$(LOCAL_PATH)/../libs/car-apps-common/res \
$(LOCAL_PATH)/../libs/car-settings-lib/res \
$(LOCAL_PATH)/../../../../frameworks/base/packages/SettingsLib/res
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 0106167..dc4ce93 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -17,16 +17,17 @@
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.car.settings"
- coreApp="true"
- android:sharedUserId="android.uid.system"
- android:versionCode="1"
- android:versionName="1.0">
+ package="com.android.car.settings"
+ coreApp="true"
+ android:sharedUserId="android.uid.system"
+ android:versionCode="1"
+ android:versionName="1.0">
<uses-sdk
android:minSdkVersion="24"
android:targetSdkVersion="24"/>
+ <uses-permission android:name="android.car.permission.CAR_ENROLL_TRUST"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.BACKUP"/>
@@ -96,6 +97,12 @@
<intent-filter android:priority="1">
<action android:name="android.settings.SOUND_SETTINGS" />
+ <action android:name="android.settings.panel.action.VOLUME" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+
+ <intent-filter android:priority="100">
+ <action android:name="android.settings.panel.action.INTERNET_CONNECTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
@@ -103,6 +110,7 @@
<action android:name="android.net.wifi.PICK_WIFI_NETWORK" />
<action android:name="android.settings.WIFI_SETTINGS" />
<action android:name="android.settings.WIRELESS_SETTINGS" />
+ <action android:name="android.settings.panel.action.WIFI" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
@@ -166,16 +174,6 @@
</intent-filter>
<intent-filter android:priority="100">
- <action android:name="android.settings.MANAGE_DEFAULT_APPS_SETTINGS" />
- <category android:name="android.intent.category.DEFAULT" />
- </intent-filter>
-
- <intent-filter android:priority="100">
- <action android:name="android.settings.VOICE_INPUT_SETTINGS" />
- <category android:name="android.intent.category.DEFAULT" />
- </intent-filter>
-
- <intent-filter android:priority="100">
<action android:name="android.settings.action.MANAGE_WRITE_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
@@ -190,11 +188,6 @@
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
- <intent-filter android:priority="100">
- <action android:name="android.settings.STORAGE_VOLUME_ACCESS_SETTINGS" />
- <category android:name="android.intent.category.DEFAULT" />
- </intent-filter>
-
<intent-filter android:priority="1">
<action android:name="android.settings.DATE_SETTINGS" />
<action android:name="android.intent.action.QUICK_CLOCK" />
@@ -218,7 +211,6 @@
<intent-filter android:priority="100">
<action android:name="android.settings.INTERNAL_STORAGE_SETTINGS" />
- <action android:name="android.os.storage.action.MANAGE_STORAGE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
@@ -296,6 +288,28 @@
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"/>
+ <activity android:name=".applications.managedomainurls.ManageDomainUrlsActivity"
+ android:configChanges="orientation|keyboardHidden|screenSize"
+ android:windowSoftInputMode="adjustResize"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.settings.MANAGE_DOMAIN_URLS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <meta-data android:name="distractionOptimized" android:value="true"/>
+ </activity>
+
+ <activity android:name=".applications.assist.ManageAssistActivity"
+ android:configChanges="orientation|keyboardHidden|screenSize"
+ android:windowSoftInputMode="adjustResize"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.settings.VOICE_INPUT_SETTINGS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <meta-data android:name="distractionOptimized" android:value="true"/>
+ </activity>
+
<activity android:name=".security.SettingsScreenLockActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:windowSoftInputMode="adjustResize">
@@ -316,6 +330,11 @@
</intent-filter>
</activity>
+ <activity android:name=".security.AddTrustedDeviceActivity"
+ android:configChanges="orientation|keyboardHidden|screenSize"
+ android:windowSoftInputMode="adjustResize">
+ </activity>
+
<activity android:name=".system.ThirdPartyLicensesActivity"
android:label="@string/settings_license_activity_title"
android:configChanges="orientation|keyboardHidden|screenSize"
diff --git a/res/layout/suggestion_preference.xml b/res/layout/suggestion_preference.xml
index ad549d8..c834522 100644
--- a/res/layout/suggestion_preference.xml
+++ b/res/layout/suggestion_preference.xml
@@ -47,6 +47,7 @@
android:ellipsize="end"
android:maxLines="1"
android:textAppearance="?android:attr/textAppearanceLarge"
+ android:hyphenationFrequency="none"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<TextView
@@ -57,6 +58,7 @@
android:ellipsize="end"
android:maxLines="1"
android:textAppearance="?android:attr/textAppearanceMedium"
+ android:hyphenationFrequency="none"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@android:id/title"/>
<ImageView
diff --git a/res/layout/two_action_preference.xml b/res/layout/two_action_preference.xml
index e629bfc..06c09cb 100644
--- a/res/layout/two_action_preference.xml
+++ b/res/layout/two_action_preference.xml
@@ -48,12 +48,14 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
+ android:hyphenationFrequency="none"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceLarge"/>
<TextView
android:id="@android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
+ android:hyphenationFrequency="none"
android:textAppearance="?android:attr/textAppearanceSmall"/>
</LinearLayout>
</LinearLayout>
diff --git a/res/values-af/arrays.xml b/res/values-af/arrays.xml
new file mode 100644
index 0000000..b4043fd
--- /dev/null
+++ b/res/values-af/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Vra"</item>
+ <item msgid="933409503308401889">"Moet nooit toelaat nie"</item>
+ <item msgid="1154273129608299386">"Laat altyd toe"</item>
+ </string-array>
+</resources>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 172aaab..06b13bd 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Nagmodus"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Netwerk en internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Selnetwerk"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-kaarte</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM-kaart</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktief / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Onaktief / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktief / Afgelaaide SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Onaktief / Afgelaaide SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Voeg nog by"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobiele data"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Kry toegang tot data deur selnetwerk"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Skakel mobiele data af?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Keuse vereis"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Gebruik <xliff:g id="CARRIER">%1$s</xliff:g> vir mobiele data?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Jy gebruik tans <xliff:g id="CARRIER2_0">%2$s</xliff:g> vir mobiele data. As jy na <xliff:g id="CARRIER1">%1$s</xliff:g> toe oorskakel, sal <xliff:g id="CARRIER2_1">%2$s</xliff:g> nie meer vir mobiele data gebruik word nie."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Gebruik <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Swerwing"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Koppel aan datadienste tydens swerwing"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Laat dataswerwing toe?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Dit kan baie duur wees."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Datagebruik"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Primêre data"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> is gebruik"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Premium-SMS\'e kan jou geld kos en die koste sal by jou diensverskafferfakture gevoeg word. As jy toestemming vir \'n program aktiveer, sal jy premium-SMS\'e met daardie program kan stuur."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Gebruiktoegang"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Gebruiktoegang laat \'n program toe om na te spoor watter ander programme jy gebruik en hoe gereeld, asook as jou diensverskaffer, taalinstellings en ander besonderhede."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Gidstoegang"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi-beheer"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi-beheer laat \'n program toe om Wi-Fi aan of af te skakel, Wi-Fi-netwerke te soek en aan hulle te koppel, netwerke by te voeg of te verwyder, en om \'n warmkol wat net plaaslik is, te begin."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Meer"</string>
<string name="location_settings_title" msgid="901334356682423679">"Ligging"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Onlangse liggingversoeke"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Geen onlangse liggingversoeke nie"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Laat programme en dienste toe om enige tyd na toestelle in die omtrek te soek, selfs wanneer Bluetooth af is. Dit kan byvoorbeeld gebruik word om ligginggegronde kenmerke en dienste te verbeter."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Stelsel"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Stelselopdaterings"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Nie beskikbaar nie"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android-weergawe"</string>
<string name="security_patch" msgid="4794276590178386903">"Android-sekuriteitregstellingvlak"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kernweergawe"</string>
<string name="build_number" msgid="3997326631001009102">"Bounommer"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-adres"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi-MAC-adres"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Nie beskikbaar nie"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Stygende, dalende of herhalende groep syfers word nie toegelaat nie."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Skermslotopsies"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> dae gelede"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Voeg vertroude toestel by"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth gaan aan om vertroude toestel by te voeg"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Vertroude toestelle"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> toestelle</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> toestel</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Jou <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> sal hierdie motor ontsluit wanneer dit gekoppel is. As iemand jou <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> vat, kan hulle dalk toegang tot hierdie toestel verkry"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Bevestig"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Verwyder vertroude toestel"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Klaar"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Gebruik die metgeselprogram om \'n vertroude toestel op te stel. Nadat dit opgestel is, sal jou gebruikerprofiel outomaties ontsluit wanneer jou foon naby die voertuig bespeur word."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Laai die metgeselprogram af op jou foon"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Kies <xliff:g id="CAR_NAME">%1$s</xliff:g> op jou foon om die toestelle saam te bind"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"\'n Vertroude toestel naby jou motor sal die gebruikerprofiel ontsluit wanneer die motor aangeskakel word, selfs al hou iemand anders die toestel vas."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Bevestig asseblief dat die saambindkodes ooreenstem"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Foon is suksesvol ingeskryf"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-inskrywing het misluk"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"As jy \'n vertroude toestel byvoeg, sal daar van jou vereis word om volgende \'n stawingsmetode op te stel. As jy nie jou vertroude toestel by jou het nie, sal stawing vereis word om by jou profiel in te gaan."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Toestel is ontkoppel."</string>
<string name="forget" msgid="3971143908183848527">"Vergeet"</string>
<string name="connect" msgid="5861699594602380150">"Koppel"</string>
<string name="disconnect" msgid="6140789953324820336">"Ontkoppel"</string>
diff --git a/res/values-am/arrays.xml b/res/values-am/arrays.xml
new file mode 100644
index 0000000..bef6b89
--- /dev/null
+++ b/res/values-am/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"ጠይቅ"</item>
+ <item msgid="933409503308401889">"በጭራሽ አትፍቀድ"</item>
+ <item msgid="1154273129608299386">"ሁልጊዜ ፍቀድ"</item>
+ </string-array>
+</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 9177e1c..f25b3cd 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"የሌሊት ሁነታ"</string>
<string name="network_and_internet" msgid="4229023630498537530">"አውታረ መረብ እና በይነመረብ"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"የተንቀሳቃሽ ስልክ አውታረ መረብ"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ሲሞች</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ሲሞች</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"ገቢር / ሲም"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"ገቢር ያልሆነ / ሲም"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"ገቢር / የወረደ ሲም"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"ገቢር ያልሆነ / የወረደ ሲም"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"ተጨማሪ ያክሉ"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"የተንቀሳቃሽ ስልክ ውሂብ"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"የተንቀሳቃሽ ስልክ አውታረ መረብን በመጠቀም ውሂብን ይድረሱበት"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"የተንቀሳቃሽ ስልክ ውሂብ ይጥፋ?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"መምረጥ ያስፈልጋል"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"ለተንቀሳቃሽ ውሂብ <xliff:g id="CARRIER">%1$s</xliff:g>ን ይጠቀሙ?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"ለተንቀሳቃሽ ስልክ ውሂብ <xliff:g id="CARRIER2_0">%2$s</xliff:g>ን እየተጠቀሙ ነው። ወደ <xliff:g id="CARRIER1">%1$s</xliff:g> ከቀየሩ <xliff:g id="CARRIER2_1">%2$s</xliff:g> ከእንግዲህ ለተንቀሳቃሽ ስልክ ውሂብ ስራ ላይ አይውልም።"</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g>ን ይጠቀሙ"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"ማንዣበብ"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"በእንቅስቃሴ ላይ ሲሆን ከውሂብ አገልግሎቶች ጋር ተገናኝ"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"የውሂብ ዝውውር ይፈቀድ?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"ጉልህ ክፍያዎችን ሊያስከትሉ ይችላ።"</string>
<string name="data_usage_settings" msgid="7877132994777987848">"የውሂብ አጠቃቀም"</string>
<string name="data_usage_title" msgid="2923515974389203812">"ዋና ውሂብ"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> ጥቅም ላይ ውሏል"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"ፕሪሚየም ኤስኤምኤስ ውድ ገንዘብ ሊያስወጣዎት ይችላል፣ እና በአገልግሎት አቅራቢ ክፍያዎ ላይ ሒሳብ ያስጨምርብዎታል። ለመተግበሪያ ፈቃድን ካነቁ ያንን መተግበሪያ በመጠቀም ፕሪሚየም ኤስኤምኤስ መላክ ይችላሉ።"</string>
<string name="usage_access_title" msgid="7153427122072303254">"የአጠቃቀም መዳረሻ"</string>
<string name="usage_access_description" msgid="2413168719257435422">"የአጠቃቀም መዳረሻ አንድ መተግበሪያ የሚጠቀሟቸውን ሌሎች መተግበሪያዎች እና ምን ያህል ጊዜ እንደሚጠቀሙባቸው፣ እንዲሁም የአገልግሎት አቅራቢዎን፣ የቋንቋ ቅንብሮችዎን እና ሌሎች ዝርዝሮችዎን እንዲከታተል ያስችለዋል።"</string>
- <string name="directory_access_title" msgid="7117264853202268740">"የማውጫ መዳረሻ"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"የWi-Fi ቁጥጥር"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi መቆጣጠሪያ አንድ መተግበሪያ Wi-Fiን እንዲያበራ ወይም እንዲያጠፋ፣ የWi-Fi አውታረ መረቦች እንዲቃኝ እና ከእነሱ ጋር እንዲገናኝ፣ አውታረ መረቦችን እንዲያክል ወይም እንዲያስወግድድ፣ ወይም የአካባቢ-ብቻ መገናኛ ነጥብን እንዲያስጀምርር ያስችለዋል።"</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"ተጨማሪ"</string>
<string name="location_settings_title" msgid="901334356682423679">"አካባቢ"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"የቅርብ ጊዜ የአካባቢ ጥያቄዎች"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ምንም የቅርብ ጊዜ የአካባቢ ጥያቄዎች የሉም"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ብሉቱዝ ጠፍቶ ቢሆንም እንኳ በማንኛውም ጊዜ መተግበሪያዎች እና አገልግሎቶች በአቅራቢያ ያሉ መሣሪያዎችን እንዲቃኙ ይፍቀዱ። ይህ ለምሳሌ በአካባቢ ላይ የተመሠረቱ ባሕሪያትን እና አገልግሎቶችን ለማሻሻል ጥቅም ላይ ሊውል ይችላል።"</string>
<string name="system_setting_title" msgid="6864599341809463440">"ሥርዓት"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"የሥርዓት ዝማኔዎች"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"አይገኝም"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android ሥሪት"</string>
<string name="security_patch" msgid="4794276590178386903">"የAndroid ደህነንት መጠገኛ ደረጃ"</string>
<string name="model_info" msgid="4966408071657934452">"ሞዴል"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"የአውራ ከዋኝ ሥሪት"</string>
<string name="build_number" msgid="3997326631001009102">"የግንብ ቁጥር"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"የብሉቱዝ አድራሻ"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"የWi-Fi MAC አድራሻ"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"አይገኝም"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"ሁኔታ"</string>
<string name="device_status" msgid="267298179806290920">"ሁኔታ"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"እየጨመሩ የሚሄዱ፣ እየቀነሱ የሚሄዱ ወይም ተደጋጋሚ የአኃዞች ተከታታይ አይፈቀድም።"</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"የማያ ገጽ መቆለፊያ አማራጮች"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ቀኖች በፊት"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"የሚታመን መሣሪያ አክል"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"ብሉቱዝ የታመነ መሣሪያን ለማከል ይበራል"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"የሚታመኑ መሣሪያዎች"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> መሣሪያዎች</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> መሣሪያዎች</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"የእርስዎ <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> በሚገናኝበት ጊዜ የእርስዎን መኪና ይከፍተዋል። የእርስዎን <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> የሆነ ሰው ከወሰደው፣ ይህን መሣሪያ ሊደርስበት ይችላል"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"ያረጋግጡ"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"የሚታመን መሣሪያን አስወግድ"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"ተከናውኗል"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"የታመነ መሣሪያ ለማቀናበር አጃቢ መተግበሪያን ይጠቀሙ። አንድ ጊዜ ካቀናበሩ በኋላ፣ የእርስዎ የተጠቃሚ መገለጫ የእርስዎ ስልክ ከተሽከርካሪው አቅራቢያ እንዳለ ሲደረስበት በራስ ሰር ይከፈታል።"</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. በእርስዎ ስልክ ላይ አጃቢውን መተግበሪያ ያውርዱ"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. መሣሪያዎቹን ለማጣመር በእርስዎ ስልክ ላይ <xliff:g id="CAR_NAME">%1$s</xliff:g> ን ይምረጡ"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"መኪናው ሲነሣ ከእርስዎ መኪና አቅራቢያ ያለ የታመነ መሣሪያ መኪናውን ይከፍታል፣ ምንም እንኳ መሣሪያውን የያዘው ሌላ ሰው ቢሆንም።"</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"እባክዎ የማጣመሪያ ኮዶች የሚዛመዱ መሆናቸውን ያረጋግጡ"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"ስልክ በተሳካ ሁኔታ ተመዝግቧል"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> መመዝገብ አልተሳካም"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"የታመነ መሣሪያን ማከል ቀጥለው የማረጋገጫ ዘዴን እንዲያክሉ ይፈልግብዎታል። የታመነ መሣሪያዎ ከእርስዎ ጋር ከሌለ መገለጫዎን ለመድረስ ማረጋገጫ ያስፈልጋል።"</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"የመሣሪያ ግንኙነት ተቋርጧል።"</string>
<string name="forget" msgid="3971143908183848527">"እርሳ"</string>
<string name="connect" msgid="5861699594602380150">"አገናኝ"</string>
<string name="disconnect" msgid="6140789953324820336">"ግንኙነት አቋርጥ"</string>
diff --git a/res/values-ar/arrays.xml b/res/values-ar/arrays.xml
new file mode 100644
index 0000000..6336fd4
--- /dev/null
+++ b/res/values-ar/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"اسأل"</item>
+ <item msgid="933409503308401889">"عدم السماح مطلقًا"</item>
+ <item msgid="1154273129608299386">"السماح دومًا"</item>
+ </string-array>
+</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index f3a6d43..e3782ce 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -31,9 +31,30 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"الوضع الليلي"</string>
<string name="network_and_internet" msgid="4229023630498537530">"الشبكة والإنترنت"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"شبكة الجوّال"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="zero"><xliff:g id="COUNT_1">%1$d</xliff:g> شريحة SIM</item>
+ <item quantity="two">شريحتا SIM <xliff:g id="COUNT_1">%1$d</xliff:g></item>
+ <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> شرائح SIM</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> شريحة SIM</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> شريحة SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> شريحة SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"مفعّلة / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"غير مفعّلة / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"مفعّلة / شريحة SIM التي تم تنزيلها"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"غير مفعّلة / شريحة SIM التي تم تنزيلها"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"إضافة المزيد"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"بيانات الجوّال"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"الوصول إلى البيانات باستخدام شبكة الجوّال"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"هل تريد إيقاف بيانات الجوّال؟"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"يجب الاختيار."</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"هل تريد بيانات الجوّال من <xliff:g id="CARRIER">%1$s</xliff:g>؟"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"أنت تستخدم <xliff:g id="CARRIER2_0">%2$s</xliff:g> للاتصال ببيانات الجوّال. عند التبديل إلى <xliff:g id="CARRIER1">%1$s</xliff:g>، لن يتم استخدام <xliff:g id="CARRIER2_1">%2$s</xliff:g> مرة أخرى للاتصال ببيانات الجوّال."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"استخدام <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"التجوال"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"الاتصال بخدمات البيانات عند التجوال"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"هل تريد السماح بتجوال البيانات؟"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"قد يكلّف ذلك رسومًا مرتفعة."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"استخدام البيانات"</string>
<string name="data_usage_title" msgid="2923515974389203812">"البيانات الأساسية"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"تم استخدام <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>."</string>
@@ -328,10 +349,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"يمكن أن تكلفك الرسائل القصيرة SMS المميزة بعض الرسوم، وستتم إضافة هذه الرسوم إلى فواتير مشغِّل شبكة الجوّال. وفي حال تفعيل الإذن لأحد التطبيقات، ستتمكن من إرسال رسائل قصيرة SMS مميزة باستخدام هذا التطبيق."</string>
<string name="usage_access_title" msgid="7153427122072303254">"الوصول إلى بيانات الاستخدام"</string>
<string name="usage_access_description" msgid="2413168719257435422">"يتيح الدخول إلى بيانات الاستخدام للتطبيق إمكانية تتبُّع التطبيقات الأخرى التي تستخدمها ومدى تكرار استخدامها ومشغّل شبكة الجوّال وإعدادات اللغة وغيرها من التفاصيل."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"الوصول إلى الدليل"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"التحكّم في شبكة Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"يسمح التحكم في شبكة Wi-Fi للتطبيق بتفعيل شبكات Wi-Fi أو إيقافها أو البحث عنها أو الاتصال بها أو إضافتها أو إزالتها أو بدء نقطة اتصال محلية فقط."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"المزيد"</string>
<string name="location_settings_title" msgid="901334356682423679">"الموقع الجغرافي"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"طلبات الموقع الجغرافي الأخيرة"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"لا توجد طلبات حديثة للموقع الجغرافي."</string>
@@ -344,7 +364,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"يمكنك السماح للتطبيقات والخدمات بالبحث عن الأجهزة المجاورة في أيّ وقت، حتى في حال إيقاف البلوتوث. ويمكن استخدام هذه البيانات مثلاً لتحسين الميزات والخدمات المستندة إلى الموقع الجغرافي."</string>
<string name="system_setting_title" msgid="6864599341809463440">"النظام"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"تحديثات النظام"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"القيمة غير متاحة"</string>
<string name="firmware_version" msgid="8491753744549309333">"إصدار Android"</string>
<string name="security_patch" msgid="4794276590178386903">"مستوى رمز تصحيح أمان Android"</string>
<string name="model_info" msgid="4966408071657934452">"الطراز"</string>
@@ -352,7 +371,6 @@
<string name="kernel_version" msgid="7327212934187011508">"إصدار النواة"</string>
<string name="build_number" msgid="3997326631001009102">"رقم الإصدار"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"عنوان البلوتوث"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"عنوان MAC لشبكة Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"غير متوفرة"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"الحالة"</string>
<string name="device_status" msgid="267298179806290920">"الحالة"</string>
@@ -646,6 +664,30 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"لا يُسمح باستخدام الترتيب التصاعدي أو التنازلي أو المكرر للأرقام."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"خيارات قفل الشاشة"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : قبل <xliff:g id="NUM_DAYS">%3$s</xliff:g> يوم"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"إضافة جهاز موثوق به"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"سيتم تفعيل البلوتوث لإضافة جهاز موثوق فيه."</string>
+ <string name="trusted_device" msgid="5637378361866787603">"الأجهزة الموثوق بها"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="zero"><xliff:g id="COUNT_1">%d</xliff:g> جهاز</item>
+ <item quantity="two">جهازان (<xliff:g id="COUNT_1">%d</xliff:g>)</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> أجهزة</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> جهازًا</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> جهاز</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> جهاز</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"سيتمكّن <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> من فتح هذه السيارة عند توصيله. وإذا حصل شخص على <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> التابع لك، قد يتمكّن من الدخول إلى هذا الجهاز."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"تأكيد"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"إزالة الجهاز الموثوق به"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"تم"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"استخدِم التطبيق المصاحب لإعداد جهاز موثوق به. بعد إعداد الجهاز، يتم إلغاء قفل الملف الشخصي للمستخدم تلقائيًا عند رصد هاتفك بالقرب من المركبة."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. تنزيل التطبيق المصاحب على هاتفك"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. اختيار <xliff:g id="CAR_NAME">%1$s</xliff:g> على هاتفك لإقران الأجهزة"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"يمكن لجهاز موثوق به قريب من سيارتك أن يلغي قفل الملف الشخصي للمستخدم عند تشغيل محركها، حتى وإن كان شخص غيرك يحمل الجهاز."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"يُرجى التأكُّد من تطابُق رموز الإقران."</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"تم تسجيل الهاتف بنجاح."</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"تعذّر تسجيل جهاز <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"سيتعيَّن عليك تحديد طريقة المصادقة بعد إضافة جهاز موثوق به. وإذا لم يكن بحوزتك جهازك الموثوق به، ستلزم المصادقة للوصول إلى ملفك الشخصي."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"تم قطع اتصال جهازك."</string>
<string name="forget" msgid="3971143908183848527">"حذف"</string>
<string name="connect" msgid="5861699594602380150">"اتصال"</string>
<string name="disconnect" msgid="6140789953324820336">"قطع اتصال"</string>
diff --git a/res/values-as/arrays.xml b/res/values-as/arrays.xml
new file mode 100644
index 0000000..c7500e7
--- /dev/null
+++ b/res/values-as/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"সোধক"</item>
+ <item msgid="933409503308401889">"কেতিয়াও অনুমতি নিদিব"</item>
+ <item msgid="1154273129608299386">"চিৰদিনৰ বাবে অনুমতি দিয়ক"</item>
+ </string-array>
+</resources>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index bbed3b2..ba24e37 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"নৈশ ম\'ড"</string>
<string name="network_and_internet" msgid="4229023630498537530">"নেটৱৰ্ক আৰু ইণ্টাৰনেট"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"ম’বাইল নেটৱৰ্ক"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> খন ছিম</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> খন ছিম</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"সক্রিয় / ছিম"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"নিষ্ক্ৰিয় / ছিম"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"সক্ৰিয় / ডাউনল’ড কৰা ছিম"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"নিষ্ক্ৰিয় / ডাউনল’ড কৰা ছিম"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"অধিক যোগ কৰক"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"ম’বাইল ডেটা"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"ম’বাইল নেটৱৰ্ক ব্যৱহাৰ কৰি ডেটা এক্সেছ কৰক"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"ম’বাইল ডেটা অফ কৰিবনে?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"বাছনি কৰা প্ৰয়োজন"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"ডেটাৰ বাবে <xliff:g id="CARRIER">%1$s</xliff:g> ব্যৱহাৰ কৰিবনে?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"আপুনি ম’বাইল ডেটাৰ বাবে <xliff:g id="CARRIER2_0">%2$s</xliff:g> ব্যৱহাৰ কৰি আছে। যদি আপুনি ইয়াৰ সলনি <xliff:g id="CARRIER1">%1$s</xliff:g> ব্যৱহাৰ কৰে তেন্তে, ম’বাইল ডেটাৰ বাবে আৰু <xliff:g id="CARRIER2_1">%2$s</xliff:g> ব্যৱহাৰ কৰা নহ’ব।"</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> ব্যৱহাৰ কৰক"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"ৰ’মিং"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"ৰ’মিঙৰ সময়ত ডেটা সেৱাৰ সৈতে সংযোগ কৰক"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"ডেটা ৰ’মিঙৰ অনুমতি দিবনে?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"আপুনি যথেষ্ট পৰিমাণৰ খৰচ বহন কৰিবলগীয়া হ’ব পাৰে।"</string>
<string name="data_usage_settings" msgid="7877132994777987848">"ডেটা ব্যৱহাৰ"</string>
<string name="data_usage_title" msgid="2923515974389203812">"মুখ্য ডেটা"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> ব্যৱহাৰ কৰা হৈছে"</string>
@@ -320,12 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"প্ৰিমিয়াম এছএমএছৰ কাৰণে আপুনি খৰচ বহন কৰিবলগীয়া হ’ব পাৰে যাৰ বাবে বাহকে আপোনালৈ পঠিওৱা বিলত দেয়ৰ পৰিমাণ বাঢ়িব পাৰে। আপুনি যদি কোনো এপক অনুমতি দিয়ে, তেন্তে আপুনি সেই এপটো ব্যৱহাৰ কৰি প্ৰিমিয়াম এছএমএছ পঠাব পাৰিব।"</string>
<string name="usage_access_title" msgid="7153427122072303254">"ব্যৱহাৰৰ এক্সেছ"</string>
<string name="usage_access_description" msgid="2413168719257435422">"ব্যৱহাৰৰ এক্সেছ সুবিধাই এটা এপক আপুনি আন কি এপ্ ব্যৱহাৰ কৰে আৰু সেইবোৰ কিমান সঘনাই ব্যৱহাৰ কৰে, লগতে আপোনাৰ বাহক, ভাষাৰ ছেটিংসমূহ আৰু অন্যান্য সবিশেষ ট্ৰেক কৰিবলৈ অনুমতি দিয়ে।"</string>
- <!-- no translation found for directory_access_title (7117264853202268740) -->
- <skip />
- <!-- no translation found for directory_on_volume (4947971311247097078) -->
- <skip />
<string name="wifi_control_title" msgid="5660436566907731929">"ৱাই-ফাই নিয়ন্ত্ৰণ"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"ৱাই-ফাই নিয়ন্ত্ৰণ সুবিধাই এটা এপক ৱাই-ফাই অন বা অফ কৰিবলৈ, স্কেন কৰিবলৈ আৰু ৱাই-ফাই নেটৱৰ্কৰ সৈতে সংযোগ কৰিবলৈ আৰু বা নেটৱৰ্ক আঁতৰাবলৈ, বা স্থানীয়-মাত্ৰ হটস্পট আৰম্ভ কৰিবলৈ অনুমতি দিয়ে।"</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"অধিক"</string>
<string name="location_settings_title" msgid="901334356682423679">"অৱস্থান"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"শেহতীয়া অৱস্থানৰ অনুৰোধ"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"শেহতীয়াকৈ কোনো এপে অৱস্থানৰ অনুৰোধ প্ৰেৰণ কৰা নাই"</string>
@@ -338,8 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ব্লুটুথ অফ থকা অৱস্থাতো এপ্ আৰু সেৱাসমূহক যিকোনো সময়ত নিকটৱৰ্তী ডিভাইচবোৰ স্কেন কৰিবলৈ দিয়ক। ইয়াক অৱস্থান-নিৰ্ভৰ সুবিধা আৰু সেৱাসমূহ উন্নত কৰা আদি কাৰ্যত ব্যৱহাৰ কৰিব পাৰি।"</string>
<string name="system_setting_title" msgid="6864599341809463440">"ছিষ্টেম"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"ছিষ্টেম আপডে’ট"</string>
- <!-- no translation found for status_unavailable (3737918179898732010) -->
- <skip />
<string name="firmware_version" msgid="8491753744549309333">"Android সংস্কৰণ"</string>
<string name="security_patch" msgid="4794276590178386903">"Android সুৰক্ষা পেচ্চ স্তৰ"</string>
<string name="model_info" msgid="4966408071657934452">"ম\'ডেল"</string>
@@ -347,8 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"কাৰ্ণেলৰ সংস্কৰণ"</string>
<string name="build_number" msgid="3997326631001009102">"বিল্ড নম্বৰ"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"ব্লুটুথৰ ঠিকনা"</string>
- <!-- no translation found for about_wifi_mac_address (3934228440550548053) -->
- <skip />
<string name="device_info_not_available" msgid="2095601973977376655">"উপলব্ধ নহয়"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"স্থিতি"</string>
<string name="device_status" msgid="267298179806290920">"স্থিতি"</string>
@@ -610,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"সংখ্যাবোৰৰ ঊৰ্ধ্বগামী, অধোগামী বা পুনৰাবৃত্তি ক্ৰমক অনুমতি দিয়া নহয়।"</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"স্ক্ৰীণ লক সম্পৰ্কীয় বিকল্প"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> দিন আগত"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"বিশ্বাসী ডিভাইচ যোগ কৰক"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"বিশ্বাসী ডিভাইচ যোগ কৰিবলৈ ব্লুটুথ অন কৰা হ’ব"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"বিশ্বাসী ডিভাইচ"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>টা ডিভাইচ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>টা ডিভাইচ</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"আপোনাৰ <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g>এ সংযোগ হ\'লে এই গাড়ীখন আনলক কৰিব। আপোনাৰ <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> ব্যৱহাৰ কৰা লোকসকলে এই ডিভাইচলৈ এক্সেছ পাব পাৰে"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"নিশ্চিত কৰক"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"বিশ্বাসী ডিভাইচ আঁতৰাওক"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"কৰা হ’ল"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"এটা বিশ্বাসী ডিভাইচ ছেট আপ কৰিবলৈ সহযোগী এপ্টো ব্যৱহাৰ কৰক। ছেট আপ কৰাৰ পিছত, গাড়ীখনৰ ওচৰত আপোনাৰ ফ’নটো চিনাক্ত কৰিলে আপোনাৰ ব্যৱহাৰকাৰী প্ৰ’ফাইলটো স্বয়ংক্ৰিয়ভাৱে আনলক হ\'ব।"</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"১. আপোনাৰ ফ’নটোত সহযোগী এপ্টো ডাউনল’ড কৰক"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"২. ডিভাইচকেইটা যোৰা লগাবলৈ আপোনাৰ ফ’নটোত <xliff:g id="CAR_NAME">%1$s</xliff:g> বাছনি কৰক"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"আপোনাৰ গাড়ীখনৰ আশে পাশে থকা কোনো বিশ্বাসী ডিভাইচে গাড়ীখন ষ্টার্ট হ\'লে ব্যৱহাৰকাৰী প্ৰ\'ফাইলটো আনলক কৰিব, আনকি অন্য কোনো লোকে ডিভাইচটো লৈ থাকিলেও।"</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"অনুগ্ৰহ কৰি যোৰা লগোৱা ক\'ডসমূহৰ মিল আছে বুলি নিশ্চিত কৰক"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"ফ\'নটো পঞ্জীয়ন কৰা হ\'ল"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> যোৰা লগাব পৰা নগ’ল"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"আপুনি কোনো বিশ্বাসী ডিভাইচ যোগ কৰিলে তাৰ পিছত এটা বিশ্বাসযোগ্যতা প্ৰমাণীকৰণ পদ্ধতি ছেট কৰাৰ প্ৰয়োজন হ’ব। যদি বিশ্বাসী ডিভাইচটো আপোনাৰ সৈতে নাই তেন্তে আপোনাৰ প্ৰ’ফাইলটো এক্সেছ কৰিবলৈ বিশ্বাসযোগ্যতা প্ৰমাণীকৰণৰ প্ৰয়োজন হ’ব।"</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"ডিভাইচৰ সংযোগ বিচ্ছিন্ন কৰা হ’ল।"</string>
<string name="forget" msgid="3971143908183848527">"পাহৰক"</string>
<string name="connect" msgid="5861699594602380150">"সংযোগ কৰক"</string>
<string name="disconnect" msgid="6140789953324820336">"সংযোগ বিচ্ছিন্ন কৰক"</string>
diff --git a/res/values-az/arrays.xml b/res/values-az/arrays.xml
new file mode 100644
index 0000000..17b22a4
--- /dev/null
+++ b/res/values-az/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Soruşun"</item>
+ <item msgid="933409503308401889">"Heç vaxt icazə verməyin"</item>
+ <item msgid="1154273129608299386">"Həmişə icazə verin"</item>
+ </string-array>
+</resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 19c8fcc..25512ce 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Gecə rejimi"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Şəbəkə və internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobil şəbəkə"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktiv / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Deaktiv / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktiv / Endirilən SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Deaktiv / Endirilən SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Daha çox əlavə edin"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobil data"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Mobil şəbəkədən istifadə edərək dataya daxil olun"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Mobil data söndürülsün?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Seçim tələb olunur"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Mobil data üçün <xliff:g id="CARRIER">%1$s</xliff:g> istifadə edilsin?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Mobil data üçün <xliff:g id="CARRIER2_0">%2$s</xliff:g> istifadə edirsiniz. <xliff:g id="CARRIER1">%1$s</xliff:g> operatoruna keçsəniz, <xliff:g id="CARRIER2_1">%2$s</xliff:g> artıq mobil data üçün istifadə olunmayacaq."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> istifadə edin"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Rominq"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Rouminq zamanı data xidmətlərinə qoşulun"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Data rouminqinə icazə verilsin?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Sizə əhəmiyyətli xərclər tətbiq edilə bilər."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Data istifadəsi"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Əsas data"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> istifadə edilib"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Premium SMS müəyyən məbləğ tuta bilər və mobil operator fakturasına əlavə oluna bilər. Tətbiq üçün icazəni aktiv etsəniz, həmin tətbiqdən istifadə edərək, Premium SMS göndərə biləcəksiniz."</string>
<string name="usage_access_title" msgid="7153427122072303254">"İstifadə girişi"</string>
<string name="usage_access_description" msgid="2413168719257435422">"İstifadə girişi başqa istifadə etdiyiniz tətbiqləri və istifadə tezliyini, həmçinin, operator, dil ayarları və digər detalları izləməyə imkan verir."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Kataloq girişi"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi idarəetməsi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi idarəetməsi tətbiqə Wi-Fi şəbəkəsini aktiv və ya deaktiv etmək, Wi-Fi şəbəkələrini skan etmək və onlara qoşulmaq, şəbəkə əlavə etmək və ya silmək, yaxud yalnız lokal olan hotspota qoşulmaq imkanı verir."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Daha çox"</string>
<string name="location_settings_title" msgid="901334356682423679">"Məkan"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Son Məkan Sorğuları"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Məkan sorğusu yoxdur"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Bluetooth deaktiv olsa belə, tətbiq və xidmətlərə yaxınlıqdakı cihazları istənilən zaman skan etməsinə icazə verin. Məsələn, bu, məkanla bağlı xüsusiyyət və xidmətləri təkmilləşdirmək üçün istifadə edilə bilər."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Sistem yenilənməsi"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Əlçatan deyil"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android versiyası"</string>
<string name="security_patch" msgid="4794276590178386903">"Android təhlükəsizlik gücləndirmə səviyyəsi"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kernel versiyası"</string>
<string name="build_number" msgid="3997326631001009102">"Versiya nömrəsi"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth ünvanı"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi MAC ünvanı"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Əlçatan deyil"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Artan, azalan və ya təkrarlanan rəqəm ardıcıllığı qadağandır."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekran kilidi seçimləri"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> gün əvvəl"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Güvənli cihaz əlavə edin"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Güvənli cihaz əlavə etmək üçün Bluetooth aktiv ediləcək"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Güvənli cihazlar"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> cihaz</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> cihaz</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> cihazınız qoşulduqda bu avtomobili kiliddən çıxaracaq. Kimsə <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> cihazınızı götürsə, bu cihaza daxil ola bilər"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Təsdiq"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Güvənli cihazı silin"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Hazırdır"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Etibarlı cihaz ayarlamaq üçün kompanyon tətbiq istifadə edin. Ayarlandıqdan sonra, telefonunuz avtomobil tərəfindən aşkarlandıqda istifadəçi profiliniz avtomatik kiliddən çıxarılacaq."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Telefonunuza kompanyon tətbiqini endirin"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Cihazları birləşdirmək üçün telefonda <xliff:g id="CAR_NAME">%1$s</xliff:g> seçin"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Avtomobilinizin yaxınında olan etibarlı cihaz başqasının əlində olsa belə, işə salma zamanı istifadəçi profilinin kilidini açacaq."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Birləşdirmə kodlarının uyğun gəldiyini təsdiqləyin"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Telefon uğurla qeydiyyata alındı"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> qeydiyyatı alınmadı"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Etibarlı cihaz əlavə etdikdən sonra doğrulama metodu təyin edilməlidir. Etibarlı cihazınız üzərinizdə deyilsə, profilinizə giriş üçün doğrulama tələb olunacaq."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Cihaz qoşulmayıb."</string>
<string name="forget" msgid="3971143908183848527">"Unudun"</string>
<string name="connect" msgid="5861699594602380150">"Qoşun"</string>
<string name="disconnect" msgid="6140789953324820336">"Ayırın"</string>
diff --git a/res/values-b+sr+Latn/arrays.xml b/res/values-b+sr+Latn/arrays.xml
new file mode 100644
index 0000000..84059a1
--- /dev/null
+++ b/res/values-b+sr+Latn/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Pitaj"</item>
+ <item msgid="933409503308401889">"Nikada ne dozvoli"</item>
+ <item msgid="1154273129608299386">"Uvek dozvoli"</item>
+ </string-array>
+</resources>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 688d7da..1e8f6e0 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -31,9 +31,27 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Noćni režim"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Mreža i internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobilna mreža"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM kartica</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM kartice</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM kartica</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktivno/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Neaktivno/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktivno/preuzeti SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Neaktivno/preuzeti SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Dodajte još"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobilni podaci"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Koristi podatke preko mobilne mreže"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Želite li da isključite mobilne podatke?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Treba da izaberete nešto"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Koristiti <xliff:g id="CARRIER">%1$s</xliff:g> za mob. podatke?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Koristite <xliff:g id="CARRIER2_0">%2$s</xliff:g> za mobilne podatke. Ako pređete na <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> se više neće koristiti za mobilne podatke."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Koristi <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Poveži sa uslugama za podatke u romingu"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Želite li da dozvolite prenos podataka u romingu?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Mogu da nastanu značajni troškovi."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Potrošnja podataka"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Primarni podaci"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> potrošeno"</string>
@@ -322,10 +340,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Premijum SMS-ovi mogu da koštaju i povećaće račune kod mobilnog operatera. Ako omogućite dozvolu za neku aplikaciju, moći ćete da šaljete premijum SMS-ove pomoću te aplikacije."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Pristup korišćenju"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Pristup korišćenju omogućava aplikaciji da prati koje druge aplikacije koristite i koliko često, kao i da vidi mobilnog operatera, jezička podešavanja i druge podatke."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Pristup direktorijumima"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Kontrola Wi-Fi mreže"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Kontrola Wi-Fi mreže omogućava aplikaciji da uključi ili isključi Wi-Fi, traži i povezuje se na Wi-Fi mreže, dodaje ili uklanja mreže ili pokreće samo lokalni hotspot."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Još"</string>
<string name="location_settings_title" msgid="901334356682423679">"Lokacija"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nedavni zahtevi za lokaciju"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nema nedavnih zahteva za lokaciju"</string>
@@ -338,7 +355,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Dozvolite aplikacijama i uslugama da traže uređaje u blizini u svakom trenutku, čak i kada je Bluetooth isključen. Ovo može da se koristi, na primer, za poboljšanje funkcija i usluga zasnovanih na lokaciji."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Ažuriranja sistema"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Nije dostupno"</string>
<string name="firmware_version" msgid="8491753744549309333">"Verzija Android-a"</string>
<string name="security_patch" msgid="4794276590178386903">"Nivo bezbednosne zakrpe za Android"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -346,7 +362,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Verzija jezgra"</string>
<string name="build_number" msgid="3997326631001009102">"Broj verzije"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth adresa"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi MAC adresa"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Nije dostupno"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -616,6 +631,27 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Rastući, opadajući ili ponovljeni niz cifara nije dozvoljen."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcije zaključavanja ekrana"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: pre <xliff:g id="NUM_DAYS">%3$s</xliff:g> dan(a)"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Dodaj pouzdani uređaj"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth se uključuje radi dodavanja pouzd. uređaja"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Pouzdani uređaji"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> uređaj</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> uređaja</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> uređaja</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> će otključati ovaj automobil kada se poveže. Ako vam neko uzme <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, možda će moći da pristupa ovom uređaju"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Potvrdi"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Ukloni pouzdani uređaj"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Gotovo"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Pouzdani uređaj podesite pomoću prateće aplikacije. Kada ga podesite, korisnički profil se automatski otključava kada se otkrije da je telefon blizu vozila."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Preuzmite prateću aplikaciju na telefonu"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Izaberite <xliff:g id="CAR_NAME">%1$s</xliff:g> na telefonu da biste uparili uređaje"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Pouzdani uređaj u blizini automobila otključava profil korisnika posle paljenja, čak i kada ga neko drugi drži."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Potvrdite da se kodovi za uparivanje podudaraju"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Telefon je registrovan"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Registracija uređaja <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nije uspela"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Za dodavanje pouzdanog uređaja sledeće što treba da uradite je da podesite metod potvrde identiteta. Ako nemate pouzdani uređaj sa sobom, potvrda identiteta će biti potrebna da biste pristupili profilu."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Prekinuta je veza sa uređajem."</string>
<string name="forget" msgid="3971143908183848527">"Zaboravi"</string>
<string name="connect" msgid="5861699594602380150">"Poveži"</string>
<string name="disconnect" msgid="6140789953324820336">"Prekini vezu"</string>
diff --git a/res/values-be/arrays.xml b/res/values-be/arrays.xml
new file mode 100644
index 0000000..14c1c5c
--- /dev/null
+++ b/res/values-be/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Запытваць"</item>
+ <item msgid="933409503308401889">"Ніколі не дазваляць"</item>
+ <item msgid="1154273129608299386">"Заўсёды дазваляць"</item>
+ </string-array>
+</resources>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index f9e5aa7..cc1096c 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -31,9 +31,28 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Начны рэжым"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Сетка і інтэрнэт"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Мабільная сетка"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-карта</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-карты</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-карт</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-карты</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Актывавана / SIM-карта"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Неактывавана / SIM-карта"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Актывавана / Спампаваная SIM-карта"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Неактывавана / Спампаваная SIM-карта"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Дадаць яшчэ"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мабільная перадача даных"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Доступ да даных па мабільнай сетцы"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Адключыць мабільную перадачу даных?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Трэба выбраць"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Выкарыстоўваць <xliff:g id="CARRIER">%1$s</xliff:g> для трафіка?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Вы карыстаецеся паслугамі аператара \"<xliff:g id="CARRIER2_0">%2$s</xliff:g>\" для мабільнай перадачы даных. Пры пераключэнні на аператара \"<xliff:g id="CARRIER1">%1$s</xliff:g>\", <xliff:g id="CARRIER2_1">%2$s</xliff:g> больш не будзе выкарыстоўвацца для мабільнай перадачы даных."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Выкарыстоўваць аператара <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Роўмінг"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Падключацца да сэрвісаў перадачы даных у роўмінгу"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Дазволіць перадачу даных у роўмінгу?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Гэта можа прывесці да значных выдаткаў."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Выкарыстанне трафіка"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Асноўны трафік"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Выкарыстана <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -324,10 +343,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"За доступ да платных SMS з вас можа спаганяцца аплата. Гэта павялічыць вашы рахункі за паслугі аператара. Калі вы ўключыце дазвол для праграмы, вы атрымаеце магчымасць адпраўляць з яе платныя SMS."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Доступ да даных выкарыстання"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Доступ да даных аб выкарыстанні дазваляе праграме адсочваць, якія яшчэ праграмы вы выкарыстоўваеце і як часта, а таксама атрымліваць даныя пра вашага аператара, моўныя налады і іншую інфармацыю."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Доступ да каталога"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Кіраванне наладамі Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Кантроль Wi-Fi дазваляе праграме ўключаць ці выключаць Wi-Fi, шукаць сеткі Wi-Fi і падключацца да іх, дадаваць або выдаляць сеткі ці запускаць лакальны хот-спот."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Яшчэ"</string>
<string name="location_settings_title" msgid="901334356682423679">"Месцазнаходжанне"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Нядаўнія запыты геаданых"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Няма нядаўніх запытаў геаданых"</string>
@@ -340,7 +358,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Дазвольце праграмам і сэрвісам шукаць прылады паблізу, нават калі Bluetooth выключаны. Гэта можна выкарыстоўваць, напрыклад, для паляпшэння функцый і сэрвісаў, якія выкарыстоўваюць геалакацыю."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Сістэма"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Абнаўленне сістэмы"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Недаступна"</string>
<string name="firmware_version" msgid="8491753744549309333">"Версія Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Абнаўленне сістэмы бяспекі Android"</string>
<string name="model_info" msgid="4966408071657934452">"Мадэль"</string>
@@ -348,7 +365,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Версія ядра"</string>
<string name="build_number" msgid="3997326631001009102">"Нумар зборкі"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Адрас Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"MAC-адрас сеткі Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Недаступнае"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Стан"</string>
<string name="device_status" msgid="267298179806290920">"Стан"</string>
@@ -626,6 +642,28 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Забаронена выкарыстоўваць паслядоўнасці з лічбаў, якія ідуць адна за адной або паўтараюцца."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Параметры блакіроўкі экрана"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> сут. таму назад"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Дадаць давераную прыладу"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Каб дадаць давераную прыладу, уключыцца Bluetooth"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Давераныя прылады"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> прылада</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> прылады</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> прылад</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> прылады</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Калі падключана, <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> зможа разблакіраваць гэты аўтамабіль. Калі <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> трапіць у рукі іншаму карыстальніку, той атрымае доступ да прылады"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Пацвердзіць"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Выдаліць давераную прыладу"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Гатова"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Для наладкі даверанай прылады выкарыстоўвайце спадарожную праграму. Пасля наладкі ваш карыстальніцкі профіль аўтаматычна разблакіруецца, калі ваш тэлефон будзе выяўлены паблізу ад аўтамабіля."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Спампуйце спадарожную праграму на тэлефон"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Каб спалучыць прылады, выберыце на тэлефоне назву \"<xliff:g id="CAR_NAME">%1$s</xliff:g>\""</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Давераная прылада паблізу ад вашага аўтамабіля разблакіруе профіль карыстальніка пасля запуску рухавіка, незалежна ад таго, хто кіруе прыладай."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Пацвердзіце, што коды спалучэння супадаюць"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Тэлефон паспяхова зарэгістраваны"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Не ўдалося зарэгістраваць прыладу \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\""</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Для дадавання даверанай прылады неабходна задаць спосаб аўтэнтыфікацыі. Ён спатрэбіцца для атрымання доступу да вашага профілю, калі давераная прылада не з вамі."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Прылада адключана."</string>
<string name="forget" msgid="3971143908183848527">"Забыць"</string>
<string name="connect" msgid="5861699594602380150">"Падключыцца"</string>
<string name="disconnect" msgid="6140789953324820336">"Адключыцца"</string>
diff --git a/res/values-bg/arrays.xml b/res/values-bg/arrays.xml
new file mode 100644
index 0000000..1de1476
--- /dev/null
+++ b/res/values-bg/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Извеждане на запитване"</item>
+ <item msgid="933409503308401889">"Никога да не се разрешава"</item>
+ <item msgid="1154273129608299386">"Разрешаване винаги"</item>
+ </string-array>
+</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index a107baf..bc6a5a8 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Нощен режим"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Мрежа и интернет"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Мобилна мрежа"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM карти</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM карта</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Активно/SIM карта"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Неактивно/SIM карта"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Активно/изтеглена SIM карта"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Неактивно/изтеглена SIM карта"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Добавяне на още"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобилни данни"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Достъп до данните през мобилната мрежа"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Да се изключат ли мобилните данни?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Изборът е задължителен"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Използване на <xliff:g id="CARRIER">%1$s</xliff:g> за моб. данни?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Използвате <xliff:g id="CARRIER2_0">%2$s</xliff:g> за мобилни данни. Ако превключите към <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> вече няма да се използва за мобилни данни."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Използване на <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Роуминг"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Свързване с услуги за данни при роуминг"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Да се разреши ли роуминг на данни?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Това може да доведе до високи такси."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Пренос на данни"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Основни данни"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Използвани данни: <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"SMS съобщенията, за които се таксува получателят, може да ви въвлекат в разходи и ще увеличат сметката към оператора ви. Ако дадете разрешението на дадено приложение, ще можете да изпращате такива съобщения чрез него."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Достъп до данни за ползването"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Достъпът до данните за ползването разрешава на приложението да проследява какви други приложения използвате и колко често, както и оператора ви, настройките ви за езика и други подробности."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Достъп до директорията"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Управление на Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Управлението на Wi-Fi разрешава на дадено приложение да включва и изключва Wi-Fi, да сканира за Wi-Fi мрежи и да се свързва с тях, да добавя или премахва мрежи и да стартира точки за достъп само на локално ниво."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Още"</string>
<string name="location_settings_title" msgid="901334356682423679">"Местоположение"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Скорошни заявки за местоположението"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Няма скорошни заявки за местоположението"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Разрешете на приложенията и услугите да сканират за устройства в близост по всяко време дори когато функцията за Bluetooth e изключена. Това може да послужи например за подобряване на базиращите се на местоположението функции и услуги."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Система"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Системни актуализации"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Не е налице"</string>
<string name="firmware_version" msgid="8491753744549309333">"Версия на Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Ниво на корекцията на сигурността под Android"</string>
<string name="model_info" msgid="4966408071657934452">"Модел"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Версия на ядрото"</string>
<string name="build_number" msgid="3997326631001009102">"Номер на версията"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Адрес на Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"MAC адрес на Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Не е налице"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Състояние"</string>
<string name="device_status" msgid="267298179806290920">"Състояние"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Възходящите, низходящите и повтарящите се поредици от цифри не са разрешени."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Опции за заключване на екрана"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : Преди <xliff:g id="NUM_DAYS">%3$s</xliff:g> дни"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Добав. на надеждно устройство"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth ще се вкл. за добавяне на надеждно у-во"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Надеждни устройства"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> устройства</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> устройство</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Устройството ви <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ще отключи този автомобил, когато е свързано. Ако някой вземе устройството ви <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, е възможно да осъществи достъп до него."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Потвърждаване"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Премахване на надеждното устройство"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Готово"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Използвайте придружаващото приложение, за да настроите надеждно устройство. След настройването потребителският ви профил ще се отключва автоматично, когато телефонът ви бъде открит в близост до превозното средство."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Изтеглете придружаващото приложение на телефона си."</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Изберете „<xliff:g id="CAR_NAME">%1$s</xliff:g>“ на телефона си, за да сдвоите устройствата."</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Надеждно устройство в близост до автомобила ви ще отключва потребителския профил при запалване дори ако друг човек държи устройството."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Моля, потвърдете, че кодовете за сдвояване съвпадат"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Телефонът е регистриран успешно"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Регистрацията на <xliff:g id="DEVICE_NAME">%1$s</xliff:g> не бе успешна"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"За добавянето на надеждно устройство се изисква да зададете метод на удостоверяване на следващия екран. Ако надеждното ви устройство не е у вас, удостоверяването ще се изисква за достъп до потребителския ви профил."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Връзката с устройството е прекъсната."</string>
<string name="forget" msgid="3971143908183848527">"Забравяне"</string>
<string name="connect" msgid="5861699594602380150">"Свързване"</string>
<string name="disconnect" msgid="6140789953324820336">"Прекрат. на връзката"</string>
diff --git a/res/values-bn/arrays.xml b/res/values-bn/arrays.xml
new file mode 100644
index 0000000..6ead7d8
--- /dev/null
+++ b/res/values-bn/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"জিজ্ঞাসা করুন"</item>
+ <item msgid="933409503308401889">"কখনও অনুমতি দেবেন না"</item>
+ <item msgid="1154273129608299386">"সর্বদা অনুমতি দিন"</item>
+ </string-array>
+</resources>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 8012acd..f674391 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"রাতের মোড"</string>
<string name="network_and_internet" msgid="4229023630498537530">"নেটওয়ার্ক এবং ইন্টারনেট"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"মোবাইল নেটওয়ার্ক"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g>টি সিম</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>টি সিম</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"অ্যাক্টিভ / সিম"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"অ্যাক্টিভ নয় এমন / সিম"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"অ্যাক্টিভ / ডাউনলোড করা সিম"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"অ্যাক্টিভ নয় এমন / ডাউনলোড করা সিম"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"আরও যোগ করুন"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"মোবাইল ডেটা"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"মোবাইল নেটওয়ার্ক ব্যবহার করে ডেটা অ্যাক্সেস করুন"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"মোবাইল ডেটা বন্ধ করবেন?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"বেছে নিতে হবে"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"মোবাইল ডেটার জন্য <xliff:g id="CARRIER">%1$s</xliff:g> ব্যবহার করবেন?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"মোবাইল ডেটার জন্য আপনি <xliff:g id="CARRIER2_0">%2$s</xliff:g> ব্যবহার করছেন। <xliff:g id="CARRIER1">%1$s</xliff:g>-এ পাল্টালে, মোবাইল ডেটার জন্য <xliff:g id="CARRIER2_1">%2$s</xliff:g> আর ব্যবহার করা হবে না।"</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> ব্যবহার করুন"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"রোমিং"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"রোমিংয়ে থাকাকালীন ডেটা পরিষেবাতে কানেক্ট করুন"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"ডেটা রোমিংয়ের অনুমতি দেবেন?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"আপনার ব্যালেন্স খরচ হতে পারে।"</string>
<string name="data_usage_settings" msgid="7877132994777987848">"ডেটার ব্যবহার"</string>
<string name="data_usage_title" msgid="2923515974389203812">"প্রাথমিক ডেটা"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> ব্যবহার করা হয়েছে"</string>
@@ -320,12 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"প্রিমিয়াম এসএমএসের জন্য অর্থ খরচ হতে পারে এবং আপনার পরিষেবা প্রদানকারীর বিলে যোগ করা হবে৷ আপনি যদি কোনও অ্যাপের জন্য অনুমতি চালু করেন তাহলে আপনি সেই অ্যাপ ব্যবহার করে প্রিমিয়াম এসএমএস পাঠাতে পারবেন।"</string>
<string name="usage_access_title" msgid="7153427122072303254">"ব্যবহারের তথ্যে অ্যাক্সেস"</string>
<string name="usage_access_description" msgid="2413168719257435422">"ব্যবহার অ্যাক্সেস ফিচারের মাধ্যমে কোনও অ্যাপ, আপনি কী কী অ্যাপ ব্যবহার করছেন এবং কত ঘন ঘন ব্যবহার করছেন তা ট্র্যাক করতে পারে, এর পাশাপাশি আপনার পরিষেবা প্রদানকারী, ভাষা সেটিংস, এবং অন্যান্য বিষয়ে বিবরণ দেখতে পারে।"</string>
- <!-- no translation found for directory_access_title (7117264853202268740) -->
- <skip />
- <!-- no translation found for directory_on_volume (4947971311247097078) -->
- <skip />
<string name="wifi_control_title" msgid="5660436566907731929">"ওয়াই-ফাই কন্ট্রোল"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"ওয়াই-ফাই কন্ট্রোল সুবিধাটি কোনও অ্যাপকে ওয়াই-ফাই চালু অথবা বন্ধ করতে, ওয়াই-ফাই নেটওয়ার্ক স্ক্যান করে তাতে কানেক্ট করতে, নেটওয়ার্ক যোগ করতে বা মুছে ফেলতে অথবা শুধুমাত্র স্থানীয় ব্যবহারের জন্য হটস্পট চালু করতে অনুমতি দেয়।"</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"আরও"</string>
<string name="location_settings_title" msgid="901334356682423679">"লোকেশন"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"সাম্প্রতিক লোকেশনের অনুরোধ"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"কোনও সাম্প্রতিক লোকেশনের অনুরোধ নেই"</string>
@@ -338,8 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ব্লুটুথ বন্ধ থাকলেও অ্যাপ এবং পরিষেবাগুলিকে যেকোনও সময় আশেপাশে থাকা অন্যান্য ডিভাইস স্ক্যান করার অনুমতি দিন। এটি বিভিন্ন ক্ষেত্রে কাজে লাগতে পারে, যেমন লোকেশন-ভিত্তিক বৈশিষ্ট্য এবং পরিষেবার উন্নতির জন্য।"</string>
<string name="system_setting_title" msgid="6864599341809463440">"সিস্টেম"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"সিস্টেম আপডেট"</string>
- <!-- no translation found for status_unavailable (3737918179898732010) -->
- <skip />
<string name="firmware_version" msgid="8491753744549309333">"Android ভার্সন"</string>
<string name="security_patch" msgid="4794276590178386903">"Android সুরক্ষার প্যাচ লেবেল"</string>
<string name="model_info" msgid="4966408071657934452">"মডেল"</string>
@@ -347,8 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"কার্নেল ভার্সন"</string>
<string name="build_number" msgid="3997326631001009102">"বিল্ড নম্বর"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"ব্লুটুথ অ্যাড্রেস"</string>
- <!-- no translation found for about_wifi_mac_address (3934228440550548053) -->
- <skip />
<string name="device_info_not_available" msgid="2095601973977376655">"উপলভ্য নয়"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"স্ট্যাটাস"</string>
<string name="device_status" msgid="267298179806290920">"স্ট্যাটাস"</string>
@@ -610,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ছোট থেকে বড়, বড় থেকে ছোট সংখ্যা অথবা নির্দিষ্ট কয়েকটি সংখ্যা বার বার লেখা যাবে না।"</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"স্ক্রিন লকের বিকল্প"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> দিন আগে"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"বিশ্বস্ত ডিভাইস যোগ করুন"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"বিশ্বস্ত ডিভাইস যোগ করার জন্য ব্লুটুথ চালু হবে"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"বিশ্বস্ত ডিভাইসগুলি"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g>টি ডিভাইস</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>টি ডিভাইস</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"এই গাড়ি কানেক্ট করা থাকলে <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> এটিকে আনলক করবে কেউ আপনার <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> নিলে, তারা আপনার ডিভাইস অ্যাক্সেস করতে পারবেন।"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"কনফার্ম করুন"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"বিশ্বস্ত ডিভাইস সরান"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"হয়ে গেছে"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"কোনও বিশ্বস্ত ডিভাইস সেট-আপ করতে কম্প্যানিয়ন অ্যাপ ব্যবহার করুন। সেট-আপ হয়ে যাওয়ার পরে গাড়ির আশেপাশে আপনার ফোন শনাক্ত হলে ব্যবহারকারী হিসেবে আপনার প্রোফাইল অটোমেটিক আনলক হয়ে যাবে।"</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"১. আপনার ফোনে কম্প্যানিয়ন অ্যাপ ডাউনলোড করুন"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"২. ডিভাইসের সাথে যোগ করতে <xliff:g id="CAR_NAME">%1$s</xliff:g> বেছে নিন"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"কোনও বিশ্বস্ত ডিভাইস আপনার গাড়ির আশেপাশে থাকলে বা ডিভাইসটি অন্য কারও কাছে থাকলে গাড়ি চালু করার সাথে সাথে এটি গাড়ি আনলক করবে।"</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"পেয়ারিং কোড মিলছে কিনা কনফার্ম করুন"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"ফোনটি নথিভুক্ত করা হয়েছে"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> নথিভুক্ত করা যায়নি"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"একটি বিশ্বস্ত ডিভাইস যোগ করার পর যাচাইকরণ পদ্ধতি সেট করতে হবে। যদি আপনার বিশ্বস্ত ডিভাইস হাতের কাছে না থাকে তাহলে আপনার প্রোফাইল অ্যাক্সেস করার জন্য যাচাইকরণ করা প্রয়োজন।"</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"ডিভাইস ডিসকানেক্ট করা হয়েছে।"</string>
<string name="forget" msgid="3971143908183848527">"ভুলে যান"</string>
<string name="connect" msgid="5861699594602380150">"কানেক্ট করুন"</string>
<string name="disconnect" msgid="6140789953324820336">"ডিসকানেক্ট করুন"</string>
diff --git a/res/values-bs/arrays.xml b/res/values-bs/arrays.xml
new file mode 100644
index 0000000..1f15d2d
--- /dev/null
+++ b/res/values-bs/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Pitaj"</item>
+ <item msgid="933409503308401889">"Nikada ne dozvoli"</item>
+ <item msgid="1154273129608299386">"Uvijek dozvoli"</item>
+ </string-array>
+</resources>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 664c6b0..746f1c2 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -31,9 +31,27 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Noćni način rada"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Mreža i internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobilna mreža"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-a</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-ova</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktivno/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Neaktivno/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktivno/preuzet SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Neaktivno/preuzeti SIM-ovi"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Dodaj još"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobilni podaci"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Pristupi podacima putem mobilne mreže"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Isključiti prijenos podataka na mobilnoj mreži?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Potrebno je odabrati"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Koristiti <xliff:g id="CARRIER">%1$s</xliff:g> za mobilne podatke?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Koristite <xliff:g id="CARRIER2_0">%2$s</xliff:g> za prijenos podataka na mobilnoj mreži. Ako se prebacite na operatera <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> se više neće koristiti za prijenos podataka na mobilnoj mreži."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Koristi <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Povezivanje na usluge prijenosa podataka u romingu"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Dozvoliti roming podataka?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Može doći do značajnih troškova."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Prijenos podataka"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Prim. plan prijenosa podataka"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Iskorišteno je <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -322,10 +340,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Moguće je da se usluga slanja premium SMS-ova dodatno plaća, a trošak će se dodati na račun operatera. Ako aplikaciji date odobrenje, moći ćete slati premium SMS-ove putem te aplikacije."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Pristup korištenju"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Pristup korištenju omogućava aplikaciji da prati koje druge aplikacije koristite i koliko često, kao i da vidi vašeg mobilnog operatera, postavke jezika i druge detalje."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Pristup direktorijima"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Upravljanje WiFi mrežom"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Kontroliranje WiFi mreže omogućava aplikaciji da uključi ili isključi WiFi, skenira i da se poveže na WiFi, doda ili ukloni mreže te pokrene lokalnu pristupnu tačku."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Više"</string>
<string name="location_settings_title" msgid="901334356682423679">"Lokacija"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nedavni zahtjevi za lokaciju"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nema nedavnih zahtjeva za lokaciju"</string>
@@ -338,7 +355,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Dozvolite aplikacijama i uslugama skeniranje uređaja u blizini u svakom trenutku, čak i kada je Bluetooth isključen. Ovim se, naprimjer, mogu poboljšati funkcije i usluge zasnovane na lokaciji."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Ažuriranja sistema"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Nedostupno"</string>
<string name="firmware_version" msgid="8491753744549309333">"Verzija Androida"</string>
<string name="security_patch" msgid="4794276590178386903">"Nivo sigurnosne zakrpe Androida"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -346,7 +362,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Osnovna verzija"</string>
<string name="build_number" msgid="3997326631001009102">"Broj međuverzije"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth adresa"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"MAC adresa WiFi mreže"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Nije dostupno"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -616,6 +631,27 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Nije dozvoljen rastući, opadajući ili ponavljajući niz cifri."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcije zaključavanja ekrana"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : prije <xliff:g id="NUM_DAYS">%3$s</xliff:g> dana"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Dodaj pouzdani uređaj"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth će se uklj. da se doda pouzdani uređaj"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Pouzdani uređaji"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> uređaj</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> uređaja</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> uređaja</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Uređaj <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> će otključati ovaj automobil kada se poveže. Ako neko uzme <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, može pristupiti ovom uređaju"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Potvrdi"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Ukloni pouzdani uređaj"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Gotovo"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Postavite pouzdani uređaj pomoću prateće aplikacije. Nakon što ga postavite, vaš će se korisnički profil automatski otključati kada se detektira da se telefon nalazi u blizini vozila."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Preuzmite prateću aplikaciju na svoj telefon"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Odaberite automobil <xliff:g id="CAR_NAME">%1$s</xliff:g> na telefonu da uparite uređaje"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Čak i ako neko drugi bude držao pouzdani uređaj u blizini vašeg automobila, automobil će pri paljenju otključati profil korisnika."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Potvrdite da se kodovi uparivanja podudaraju"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Telefon je uspješno prijavljen"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Prijava uređaja <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nije uspjela"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Nakon što dodate pouzdani uređaj, morate postaviti metodu autentifikacije. Autentifikacija će biti potrebna za pristup profilu u slučaju da kod sebe nemate pouzdani uređaj."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Veza s uređajem je prekinuta."</string>
<string name="forget" msgid="3971143908183848527">"Zaboravi"</string>
<string name="connect" msgid="5861699594602380150">"Poveži"</string>
<string name="disconnect" msgid="6140789953324820336">"Prekini vezu"</string>
diff --git a/res/values-ca/arrays.xml b/res/values-ca/arrays.xml
new file mode 100644
index 0000000..f2103ea
--- /dev/null
+++ b/res/values-ca/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Demana"</item>
+ <item msgid="933409503308401889">"No permetis mai"</item>
+ <item msgid="1154273129608299386">"Permet sempre"</item>
+ </string-array>
+</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 67e9258..da85894 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Mode nocturn"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Xarxa i Internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Xarxa mòbil"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> targetes SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> targeta SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Actiu / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inactiu / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Actiu / SIM baixada"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inactiu / SIM baixada"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Afegeix-ne més"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Dades mòbils"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Accedeix a les dades amb la xarxa mòbil"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Vols desactivar les dades mòbils?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Has de seleccionar una preferència"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Utilitzar <xliff:g id="CARRIER">%1$s</xliff:g> per a dades mòbils?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Estàs utilitzant <xliff:g id="CARRIER2_0">%2$s</xliff:g> per a les dades mòbils. Si canvies a <xliff:g id="CARRIER1">%1$s</xliff:g>, ja no es farà servir <xliff:g id="CARRIER2_1">%2$s</xliff:g> per a les dades mòbils."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Utilitza <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Itinerància"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Connecta\'t a serveis de dades en itinerància"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Vols permetre la itinerància de dades?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"És possible que s\'apliquin càrrecs elevats."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Ús de dades"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Dades principals"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Dades utilitzades: <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Els SMS prèmium et poden costar diners, i aquest import s\'afegirà a la facturació de l\'operador. Si actives el permís en una aplicació, podràs enviar SMS prèmium utilitzant-la."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Accés d\'ús"</string>
<string name="usage_access_description" msgid="2413168719257435422">"L\'accés a dades d\'ús permet que una aplicació pugui fer un seguiment de les altres aplicacions que utilitzes i la freqüència amb què ho fas, així com del teu operador de telefonia mòbil i de la configuració d\'idioma, entre d\'altres."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Accés al directori"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Control de la Wi‑Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"El control de la Wi‑Fi permet que una aplicació activi o desactivi la Wi‑Fi, cerqui xarxes Wi‑Fi, s\'hi connecti, n\'afegeixi o en suprimeixi, o que iniciï un punt d\'accés Wi‑Fi només local."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Més"</string>
<string name="location_settings_title" msgid="901334356682423679">"Ubicació"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Sol·licituds d\'ubicació recents"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No hi ha cap sol·licitud d\'ubicació recent"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Permet que les aplicacions i els serveis cerquin dispositius propers en qualsevol moment, fins i tot quan el Bluetooth estigui desactivat. Es pot utilitzar, per exemple, per millorar les funcions i els serveis basats en la ubicació."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Actualitzacions del sistema"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"No disponible"</string>
<string name="firmware_version" msgid="8491753744549309333">"Versió d\'Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Nivell de pedaç de seguretat d\'Android"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Versió de kernel"</string>
<string name="build_number" msgid="3997326631001009102">"Número de compilació"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Adreça Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Adreça MAC de Wi‑Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"No disponible"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Estat"</string>
<string name="device_status" msgid="267298179806290920">"Estat"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"No es permet cap seqüència de dígits ascendents, descendents ni repetits."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcions de bloqueig de pantalla"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: fa <xliff:g id="NUM_DAYS">%3$s</xliff:g> dies"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Afegeix dispositiu de confiança"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"S\'activarà Bluetooth per afegir disp. de confiança"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Disp. de confiança"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dispositius</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dispositiu</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"El <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> desbloquejarà el cotxe quan estigui connectat. Si algú t\'agafa el <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, és possible que puguin accedir-hi"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirma"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Suprimeix el dispositiu de confiança"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Fet"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Utilitza l\'aplicació complementària per configurar un dispositiu de confiança. Un cop configurat, el teu perfil d\'usuari es desbloquejarà automàticament quan el telèfon es detecti a prop del vehicle."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Baixa l\'aplicació complementària al telèfon"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Selecciona <xliff:g id="CAR_NAME">%1$s</xliff:g> al telèfon per vincular els dispositius"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Un dispositiu de confiança proper desbloquejarà el perfil d\'usuari en arrencar-lo, encara que sigui una altra persona qui sostingui el dispositiu."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Confirma que coincideixen els codis de sincronització"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"El telèfon s\'ha inscrit correctament."</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"No s\'ha pogut inscriure el dispositiu <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Per afegir un dispositiu de confiança, cal que defineixis un mètode d\'autenticació a continuació. Si no tens a mà el dispositiu de confiança, caldrà que utilitzis el mètode d\'autenticació per accedir al perfil."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"S\'ha desconnectat el dispositiu."</string>
<string name="forget" msgid="3971143908183848527">"Oblida"</string>
<string name="connect" msgid="5861699594602380150">"Connecta"</string>
<string name="disconnect" msgid="6140789953324820336">"Desconnecta"</string>
diff --git a/res/values-cs/arrays.xml b/res/values-cs/arrays.xml
new file mode 100644
index 0000000..9d0b27a
--- /dev/null
+++ b/res/values-cs/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Zeptat se"</item>
+ <item msgid="933409503308401889">"Nepovolit nikdy"</item>
+ <item msgid="1154273129608299386">"Vždy povolit"</item>
+ </string-array>
+</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 4706810..dab1770 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -31,9 +31,28 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Noční režim"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Síť a internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobilní síť"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM karty</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM karty</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM karet</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM karta</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktivní / SIM karta"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Neaktivní / SIM karta"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktivní / stažená SIM karta"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Neaktivní / stažená SIM karta"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Přidat další"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobilní data"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Přistupovat k datům přes mobilní síť"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Vypnout mobilní data?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Je vyžadován výběr"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Používat pro mobilní data <xliff:g id="CARRIER">%1$s</xliff:g>?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Pro mobilní data používáte <xliff:g id="CARRIER2_0">%2$s</xliff:g>. Pokud přepnete na operátora <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> už se používat nebude."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Použít <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Používat datové služby při roamingu"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Povolit datový roaming?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Mohou vám být účtovány vysoké poplatky."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Využití dat"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Primární data"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Využito <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -324,10 +343,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Prémiové SMS mohou být zpoplatněny a jejich cena se přičte k fakturaci operátora. Pokud aplikaci udělíte příslušné oprávnění, budete pomocí této aplikace moci odesílat prémiové SMS."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Přístup k údajům o využití"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Přístup k údajům o využití umožňuje aplikaci sledovat, které ostatní aplikace používáte, jak často je používáte, jakého máte operátora, nastavení jazyka a další podrobnosti."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Přístup k adresářům"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Ovládání sítí Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Ovládání sítí Wi-Fi této aplikaci umožňuje zapínat a vypínat Wi-Fi, vyhledávat sítě Wi-Fi a připojovat se k nim, přidávat nebo odstraňovat sítě nebo nastavit místní hotspot."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Více"</string>
<string name="location_settings_title" msgid="901334356682423679">"Poloha"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nedávné žádosti o určení polohy"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Žádné nedávné žádosti o určení polohy"</string>
@@ -340,7 +358,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Povolit aplikacím a službám vyhledávat zařízení v okolí kdykoliv, i když je rozhraní Bluetooth vypnuté. Tuto funkci lze využít například ke zlepšení funkcí a služeb založených na poloze."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Systém"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Aktualizace systému"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Není k dispozici"</string>
<string name="firmware_version" msgid="8491753744549309333">"Verze systému Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Úroveň opravy zabezpečení Android"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -348,7 +365,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Verze jádra"</string>
<string name="build_number" msgid="3997326631001009102">"Číslo sestavení"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Adresa Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Adresa MAC sítě Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Není k dispozici"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Stav"</string>
<string name="device_status" msgid="267298179806290920">"Stav"</string>
@@ -626,6 +642,28 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Posloupnost rostoucích, klesajících nebo opakujících se číslic není povolena."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Možnosti zámku obrazovky"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : před <xliff:g id="NUM_DAYS">%3$s</xliff:g> dny"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Přidat důvěryhodné zařízení"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Zapne se Bluetooth k přidání důvěryhod. zařízení"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Důvěryhodná zařízení"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> zařízení</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> zařízení</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> zařízení</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> zařízení</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Když zařízení <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> připojíte, odemkne tohle auto. Pokud vám zařízení <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> někdo vezme, bude mít přístup k tomuto zařízení."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Potvrdit"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Odstranit důvěryhodné zařízení"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Hotovo"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Nastavte důvěryhodné zařízení pomocí doprovodné aplikace. Jakmile bude nastaveno a poblíž vozidla bude zjištěn vás telefon, váš uživatelský profil se automaticky odemkne."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Stáhněte si do telefonu doprovodnou aplikaci"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. V telefonu vyberte <xliff:g id="CAR_NAME">%1$s</xliff:g> a zařízení spárujte"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Důvěryhodné zařízení poblíž auta může po nastartování odemknout uživatelský profil, i když zařízení bude držet někdo jiný."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Ověřte, zda se párovací kódy shodují"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Telefon byl úspěšně zaregistrován"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Registrace zařízení <xliff:g id="DEVICE_NAME">%1$s</xliff:g> se nezdařila"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Když přidáte důvěryhodné zařízení, bude nutné následně nastavit metodu ověření. Pokud důvěryhodné zařízení nemáte u sebe, před zobrazení profilu bude nutné provést ověření."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Zařízení bylo odpojeno."</string>
<string name="forget" msgid="3971143908183848527">"Odstranit"</string>
<string name="connect" msgid="5861699594602380150">"Připojit"</string>
<string name="disconnect" msgid="6140789953324820336">"Odpojit"</string>
diff --git a/res/values-da/arrays.xml b/res/values-da/arrays.xml
new file mode 100644
index 0000000..79d23c6
--- /dev/null
+++ b/res/values-da/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Spørg"</item>
+ <item msgid="933409503308401889">"Tillad aldrig"</item>
+ <item msgid="1154273129608299386">"Tillad altid"</item>
+ </string-array>
+</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 6b7bfd6..f1a2b87 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Nattilstand"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Netværk og internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobilnetværk"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-kort</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-kort</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktiv/knyttet til SIM-kort"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inaktiv/knyttet til SIM-kort"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktiv/knyttet til downloadet SIM-kort"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inaktiv/knyttet til downloadet SIM-kort"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Tilføj flere"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobildata"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Brug data via mobilnetværk"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Vil du deaktivere mobildata?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Du har ikke valgt endnu"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Vil du bruge <xliff:g id="CARRIER">%1$s</xliff:g> til mobildata?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Du bruger <xliff:g id="CARRIER2_0">%2$s</xliff:g> til mobildata. Hvis du skifter til <xliff:g id="CARRIER1">%1$s</xliff:g>, anvendes <xliff:g id="CARRIER2_1">%2$s</xliff:g> ikke længere til mobildata."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Brug <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Opret forbindelse til datatjenester under roaming"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Vil du tillade dataroaming?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Du kan risikere at skulle betale høje gebyrer."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Dataforbrug"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Primære data"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Der er brugt <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Overtakseret sms kan koste dig penge, som opkræves via din mobilregning. Hvis du aktiverer tilladelsen for en app, kan du sende overtakserede sms-beskeder ved hjælp af denne app."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Adgang til telefonbrug"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Med adgang til telefonbrug kan en app aflæse, hvilke andre apps du anvender og hvor ofte, samt dit mobilselskab, dine sprogindstillinger og andre oplysninger."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Mappeadgang"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Styring af Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi-styring giver en app tilladelse til at aktivere og deaktivere Wi-Fi, søge efter og oprette forbindelse til Wi-Fi-netværk, tilføje og fjerne netværk eller starte et lokalt hotspot."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Mere"</string>
<string name="location_settings_title" msgid="901334356682423679">"Placering"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Seneste placeringsanmodninger"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Der er ingen seneste placeringsanmodninger"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Tillad, at apps og tjenester altid kan søge efter enheder i nærheden, også selvom Bluetooth er deaktiveret. Dette kan f.eks. bruges til at forbedre stedbaserede funktioner og tjenester."</string>
<string name="system_setting_title" msgid="6864599341809463440">"System"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Systemopdateringer"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Ikke tilgængelig"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android-version"</string>
<string name="security_patch" msgid="4794276590178386903">"Seneste sikkerhedsopdatering i Android"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kernesystem"</string>
<string name="build_number" msgid="3997326631001009102">"Buildnummer"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-adresse"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"MAC-adresse for Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Ikke tilgængelig"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Stigende eller faldende talsekvens og gentagne tal er ikke tilladt."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Valgmuligheder for skærmlås"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> dage siden"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Tilføj godkendt enhed"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth aktiveres for at tilføje godkendt enhed"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Godkendte enheder"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> enhed</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> enheder</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Din <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> låser bilen op, når der er forbindelse til enheden. Hvis en anden person tager din <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, kan vedkommende muligvis få adgang til denne enhed"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Bekræft"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Fjern godkendt enhed"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Luk"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Brug den medfølgende app til at konfigurere en godkendt enhed. Når du har konfigureret enheden, aktiveres din profil automatisk, når din telefon er i nærheden af køretøjet."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Download den medfølgende app på din telefon"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Vælg <xliff:g id="CAR_NAME">%1$s</xliff:g> på telefonen for at parre enhederne"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Hvis der er en godkendt enhed i nærheden af bilen, når du starter motoren, får denne enhed adgang brugerprofilen – også selvom det er en anden, der holder enheden."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Bekræft, at parringskoderne stemmer overens"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Telefonen blev tilmeldt"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Tilmeldingen af <xliff:g id="DEVICE_NAME">%1$s</xliff:g> mislykkedes"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Hvis du vil tilføje en godkendt enhed, skal du først angive en godkendelsesmetode. Hvis du ikke har din godkendte enhed med dig, kræves der godkendelse, før du kan få adgang til din profil."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Forbindelsen til enheden blev afbrudt."</string>
<string name="forget" msgid="3971143908183848527">"Glem"</string>
<string name="connect" msgid="5861699594602380150">"Opret forbindelse"</string>
<string name="disconnect" msgid="6140789953324820336">"Afbryd forbindelse"</string>
diff --git a/res/values-de/arrays.xml b/res/values-de/arrays.xml
new file mode 100644
index 0000000..63301c0
--- /dev/null
+++ b/res/values-de/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Fragen"</item>
+ <item msgid="933409503308401889">"Nie zulassen"</item>
+ <item msgid="1154273129608299386">"Immer zulassen"</item>
+ </string-array>
+</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 69fcb18..45eb837 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Nachtmodus"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Netzwerk und Internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobilfunknetz"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-Karten</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM-Karte</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktiv/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inaktiv/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktiv/Heruntergeladene SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inaktiv/Heruntergeladene SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Weitere hinzufügen"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobile Daten"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Datenzugriff über Mobilfunknetz"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Mobile Daten deaktivieren?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Auswahl erforderlich"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"<xliff:g id="CARRIER">%1$s</xliff:g> für mobile Daten nutzen?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Du verwendest <xliff:g id="CARRIER2_0">%2$s</xliff:g> für mobile Daten. Wenn du zu <xliff:g id="CARRIER1">%1$s</xliff:g> wechselst, wird <xliff:g id="CARRIER2_1">%2$s</xliff:g> nicht mehr für mobile Daten verwendet."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> verwenden"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Mobile Daten auch bei Roaming nutzen"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Daten-Roaming zulassen?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Es können hohe Gebühren anfallen."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Datennutzung"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Primärdaten"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> verbraucht"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Bei Premium-SMS können Kosten entstehen, die über den Mobilfunkanbieter abgerechnet werden. Wenn du für eine App Premium-SMS zulässt, kannst du aus ihr Premium-SMS versenden."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Zugriff auf Nutzungsdaten"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Der Zugriff auf die Nutzungsdaten ermöglicht es einer App, verschiedene Informationen zu erfassen – welche anderen Apps du wie oft verwendest, welchen Mobilfunkanbieter du nutzt, welche Spracheinstellungen du festgelegt hast usw."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Verzeichniszugriff"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"WLAN-Steuerung"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Die WLAN-Steuerung erlaubt einer App, die WLAN-Funktion zu aktivieren oder zu deaktivieren, nach WLANs zu scannen und eine Verbindung zu ihnen herzustellen, Netzwerke hinzuzufügen oder zu entfernen oder einen lokal beschränkten Hotspot zu starten."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Mehr"</string>
<string name="location_settings_title" msgid="901334356682423679">"Standort"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Letzte Standortanfragen"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Keine letzten Standortanfragen"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Apps und Dienste dürfen immer nach Geräten in der Nähe suchen, auch wenn Bluetooth deaktiviert ist. Dadurch können beispielsweise standortbasierte Funktionen und Dienste verbessert werden."</string>
<string name="system_setting_title" msgid="6864599341809463440">"System"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Systemupdates"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Nicht verfügbar"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android-Version"</string>
<string name="security_patch" msgid="4794276590178386903">"Stand der Sicherheitsupdates"</string>
<string name="model_info" msgid="4966408071657934452">"Modell"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kernel-Version"</string>
<string name="build_number" msgid="3997326631001009102">"Build-Nummer"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-Adresse"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"WLAN-MAC-Adresse"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Nicht verfügbar"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Aufsteigende, absteigende oder sich wiederholende Ziffernfolgen sind unzulässig."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Optionen für die Displaysperre"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: vor <xliff:g id="NUM_DAYS">%3$s</xliff:g> Tagen"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Vertrauenswürdiges Gerät hinzufügen"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth wird aktiviert, um vertrauenswürdige Geräte hinzuzufügen"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Vertrauenswürdige Geräte"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> Geräte</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> Gerät</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> entsperrt dieses Auto, wenn eine Verbindung besteht. Wenn dein <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> in die Hände einer anderen Person gelangt, kann diese möglicherweise auf das Gerät zugreifen"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Bestätigen"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Vertrauenswürdiges Gerät entfernen"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Fertig"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Verwende die Companion App, um ein vertrauenswürdiges Gerät einzurichten. Danach wird dein Nutzerprofil entsperrt, sobald dein Smartphone in der Nähe des Fahrzeugs erkannt wird"</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Lade die Companion App auf dein Smartphone herunter"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2 Wähle auf deinem Smartphone \"<xliff:g id="CAR_NAME">%1$s</xliff:g>\" aus, um die Geräte zu koppeln"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Mit einem vertrauenswürdigen Gerät, das sich in der Nähe deines Autos befindet, wird dein Nutzerprofil beim Starten entsperrt. Dies gilt auch dann, wenn eine andere Person es in der Hand hält."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Bestätige bitte, dass die Kopplungscodes übereinstimmen"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Smartphone erfolgreich angemeldet"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Anmeldung von <xliff:g id="DEVICE_NAME">%1$s</xliff:g> fehlgeschlagen"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Wenn du ein vertrauenswürdiges Gerät hinzufügst, musst du danach eine Authentifizierungsmethode festlegen. Diese wird benötigt, um auf dein Konto zuzugreifen, wenn du dein vertrauenswürdiges Gerät nicht dabei hast."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Gerät getrennt."</string>
<string name="forget" msgid="3971143908183848527">"Entfernen"</string>
<string name="connect" msgid="5861699594602380150">"Verbinden"</string>
<string name="disconnect" msgid="6140789953324820336">"Trennen"</string>
diff --git a/res/values-el/arrays.xml b/res/values-el/arrays.xml
new file mode 100644
index 0000000..5dd28e0
--- /dev/null
+++ b/res/values-el/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Ερώτηση"</item>
+ <item msgid="933409503308401889">"Να μην επιτρέπεται ποτέ"</item>
+ <item msgid="1154273129608299386">"Να επιτρέπεται πάντα"</item>
+ </string-array>
+</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 462e3e7..830c7cf 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Νυχτερινή λειτουργία"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Δίκτυο και διαδίκτυο"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Δίκτυο κινητής τηλεφωνίας"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Ενεργή/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Ανενεργή/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Ενεργή/Ληφθείσα SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Ανενεργή/Ληφθείσα SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Προσθήκη περισσότερων"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Δεδομένα κινητής τηλεφωνίας"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Πρόσβαση σε δεδομένα μέσω δικτύου κινητής τηλεφ."</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Απενεργοποίηση δεδομένων κινητής τηλεφωνίας;"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Απαιτείται επιλογή"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Χρήση <xliff:g id="CARRIER">%1$s</xliff:g> για δεδoμένα κιν. τηλ.;"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Χρησιμοποιείτε <xliff:g id="CARRIER2_0">%2$s</xliff:g> για δεδομένα κινητής τηλεφωνίας. Εάν κάνετε εναλλαγή στην υπηρεσία <xliff:g id="CARRIER1">%1$s</xliff:g>, η υπηρεσία <xliff:g id="CARRIER2_1">%2$s</xliff:g> δεν θα χρησιμοποιείται πλέον για δεδομένα κινητής τηλεφωνίας."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Χρήση <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Περιαγωγή"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Σύνδεση στις υπηρεσίες δεδομένων κατά την περιαγωγή"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Να επιτρέπεται η περιαγωγή δεδομένων;"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Ενδέχεται να επιβαρυνθείτε με σημαντικές χρεώσεις."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Χρήση δεδομένων"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Κύρια δεδομένα"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Έχουν χρησιμοποιηθεί <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Τα SMS επιπλέον χρέωσης ενδέχεται να κοστίζουν χρήματα και θα αυξήσουν το συνολικό ποσό των λογαριασμών της εταιρείας κινητής τηλεφωνίας. Εάν ενεργοποιήσετε την πρόσβαση για μια εφαρμογή, θα μπορείτε να στέλνετε SMS επιπλέον χρέωσης χρησιμοποιώντας τη συγκεκριμένη εφαρμογή."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Πρόσβαση χρήσης"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Η πρόσβαση χρήσης επιτρέπει σε μια εφαρμογή να παρακολουθεί τις άλλες εφαρμογές που χρησιμοποιείτε, τη συχνότητα χρήσης τους, καθώς και την εταιρεία κινητής τηλεφωνίας σας, τις ρυθμίσεις γλώσσας και άλλες λεπτομέρειες."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Πρόσβαση στον κατάλογο"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Έλεγχος Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Ο έλεγχος Wi-Fi επιτρέπει σε μια εφαρμογή να ενεργοποιεί ή να απενεργοποιεί το Wi-Fi, να κάνει σάρωση για δίκτυα Wi-Fi και να συνδέεται σε αυτά, να προσθέτει ή να καταργεί δίκτυα ή να ξεκινά τοπικά σημεία πρόσβασης Wi-Fi."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Περισσότερα"</string>
<string name="location_settings_title" msgid="901334356682423679">"Τοποθεσία"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Πρόσφατα αιτήματα τοποθεσίας"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Δεν υπάρχουν πρόσφατα αιτήματα τοποθεσίας"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Επιτρέψτε σε εφαρμογές/υπηρεσίες να κάνουν σάρωση για κοντινές συσκευές, ακόμα και όταν το Bluetooth είναι ανενεργό. Η σάρωση μπορεί να χρησιμοποιηθεί, για παράδειγμα, για τη βελτίωση λειτουργιών/υπηρεσιών που εκτελούνται βάσει τοποθεσίας."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Σύστημα"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Ενημερώσεις συστήματος"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Μη διαθέσιμο"</string>
<string name="firmware_version" msgid="8491753744549309333">"Έκδοση Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Επίπεδο ενημέρωσης κώδικα ασφαλείας Android"</string>
<string name="model_info" msgid="4966408071657934452">"Μοντέλο"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Έκδοση Kernel"</string>
<string name="build_number" msgid="3997326631001009102">"Αριθμός έκδοσης"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Διεύθυνση Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Διεύθυνση MAC Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Μη διαθέσιμο"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Κατάσταση"</string>
<string name="device_status" msgid="267298179806290920">"Κατάσταση"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Δεν επιτρέπεται η αύξουσα, φθίνουσα ή επαναλαμβανόμενη ακολουθία ψηφίων."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Επιλογές κλειδώματος οθόνης"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ημέρες πριν"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Προσθήκη αξιόπιστης συσκευής"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Ενεργοπ. Bluetooth για προσθήκη αξιόπ. συσκευής"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Αξιόπιστες συσκευές"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> συσκευές</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> συσκευή</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Το <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> θα ξεκλειδώσει αυτό το αυτοκίνητο όταν συνδεθεί. Εάν κάποιος αποκτήσει το <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> σας, θα μπορεί να αποκτήσει πρόσβαση σε αυτήν τη συσκευή"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Επιβεβαίωση"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Κατάργηση αξιόπιστης συσκευής"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Τέλος"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Χρησιμοποιήστε τη συνοδευτική εφαρμογή για να ρυθμίσετε μια αξιόπιστη συσκευή. Μετά τη ρύθμιση, το προφίλ χρήστη θα ξεκλειδώνει αυτόματα όταν το τηλέφωνό σας εντοπίζεται κοντά στο όχημα."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Κατεβάστε τη συνοδευτική εφαρμογή στο τηλέφωνό σας"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Επιλέξτε το αυτοκίνητο <xliff:g id="CAR_NAME">%1$s</xliff:g> στο τηλέφωνό σας για να κάνετε σύζευξη των συσκευών"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Μια αξιόπιστη συσκευή κοντά στο αυτοκίνητό σας θα ξεκλειδώνει το προφίλ χρήστη κατά το ξεκίνημα, ακόμα και αν κάποιος άλλος κρατάει τη συσκευή."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Επιβεβαιώστε ότι υπάρχει αντιστοιχία μεταξύ κωδικών σύζευξης"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Η εγγραφή του τηλεφώνου ήταν επιτυχής"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Η εγγραφή της συσκευής <xliff:g id="DEVICE_NAME">%1$s</xliff:g> απέτυχε"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Η προσθήκη αξιόπιστης συσκευής απαιτεί να ορίσετε στη συνέχεια μια μέθοδο ελέγχου ταυτότητας. Εάν δεν έχετε μαζί σας την αξιόπιστη συσκευή σας, θα ζητηθεί έλεγχος ταυτότητας για την πρόσβαση στο προφίλ σας."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Η συσκευή αποσυνδέθηκε."</string>
<string name="forget" msgid="3971143908183848527">"Διαγραφή από μνήμη"</string>
<string name="connect" msgid="5861699594602380150">"Σύνδεση"</string>
<string name="disconnect" msgid="6140789953324820336">"Αποσύνδεση"</string>
diff --git a/res/values-en-rAU/arrays.xml b/res/values-en-rAU/arrays.xml
new file mode 100644
index 0000000..6768dfa
--- /dev/null
+++ b/res/values-en-rAU/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Ask"</item>
+ <item msgid="933409503308401889">"Never allow"</item>
+ <item msgid="1154273129608299386">"Always allow"</item>
+ </string-array>
+</resources>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index adeb0b9..c68531b 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Night mode"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Network & internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobile network"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIMs</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Active/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inactive/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Active/Downloaded SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inactive/Downloaded SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Add more"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobile data"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Access data using mobile network"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Turn off mobile data?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Selection required"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Use <xliff:g id="CARRIER">%1$s</xliff:g> for mobile data?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"You\'re using <xliff:g id="CARRIER2_0">%2$s</xliff:g> for mobile data. If you switch to <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> will no longer be used for mobile data."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Use <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Connect to data services when roaming"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Allow data roaming?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"You may incur significant charges."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Data usage"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Primary data"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> used"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Premium SMS may cost you money and will add up to your mobile bills. If you enable permission for an app, you will be able to send premium SMS using that app."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Usage access"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Usage access allows an app to track which other apps you\'re using and how often, as well as your operator, language settings and other details."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Directory access"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi control"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi control allows an app to turn Wi-Fi on or off, scan and connect to Wi-Fi networks add or remove networks, or start a local-only hotspot."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"More"</string>
<string name="location_settings_title" msgid="901334356682423679">"Location"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Recent Location Requests"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No recent location requests"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Allow apps and services to scan for nearby devices at any time, even when Bluetooth is off. This can be used, for example, to improve location-based features and services."</string>
<string name="system_setting_title" msgid="6864599341809463440">"System"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"System updates"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Unavailable"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android version"</string>
<string name="security_patch" msgid="4794276590178386903">"Android security patch level"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kernel version"</string>
<string name="build_number" msgid="3997326631001009102">"Build number"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth address"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi MAC Address"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Not available"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ascending, descending or repeated sequence of digits isn\'t allowed."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Screen lock options"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> days ago"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Add trusted device"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth will turn on to add trusted device"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Trusted devices"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> devices</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> device</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Your <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> will unlock this car when it\'s connected. If someone takes your <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, they may be able to access this device"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirm"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Remove trusted device"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Done"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Use the companion app to set up a trusted device. Once set up, your user profile will unlock automatically when your phone is detected near the vehicle."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Download the companion app on your phone"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Select <xliff:g id="CAR_NAME">%1$s</xliff:g> on your phone to pair the devices"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"A trusted device near your car will unlock the user profile upon ignition, even if someone else is holding the device."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Please confirm that the pairing codes match"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Phone has been enrolled successfully"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> enrolment failed"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Adding a trusted device requires you to set an authentication method next. If you do not have your trusted device with you, authentication will be required to access your profile."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Device disconnected."</string>
<string name="forget" msgid="3971143908183848527">"Forget"</string>
<string name="connect" msgid="5861699594602380150">"Connect"</string>
<string name="disconnect" msgid="6140789953324820336">"Disconnect"</string>
diff --git a/res/values-en-rCA/arrays.xml b/res/values-en-rCA/arrays.xml
new file mode 100644
index 0000000..6768dfa
--- /dev/null
+++ b/res/values-en-rCA/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Ask"</item>
+ <item msgid="933409503308401889">"Never allow"</item>
+ <item msgid="1154273129608299386">"Always allow"</item>
+ </string-array>
+</resources>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index adeb0b9..c68531b 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Night mode"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Network & internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobile network"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIMs</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Active/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inactive/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Active/Downloaded SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inactive/Downloaded SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Add more"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobile data"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Access data using mobile network"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Turn off mobile data?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Selection required"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Use <xliff:g id="CARRIER">%1$s</xliff:g> for mobile data?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"You\'re using <xliff:g id="CARRIER2_0">%2$s</xliff:g> for mobile data. If you switch to <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> will no longer be used for mobile data."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Use <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Connect to data services when roaming"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Allow data roaming?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"You may incur significant charges."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Data usage"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Primary data"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> used"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Premium SMS may cost you money and will add up to your mobile bills. If you enable permission for an app, you will be able to send premium SMS using that app."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Usage access"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Usage access allows an app to track which other apps you\'re using and how often, as well as your operator, language settings and other details."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Directory access"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi control"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi control allows an app to turn Wi-Fi on or off, scan and connect to Wi-Fi networks add or remove networks, or start a local-only hotspot."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"More"</string>
<string name="location_settings_title" msgid="901334356682423679">"Location"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Recent Location Requests"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No recent location requests"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Allow apps and services to scan for nearby devices at any time, even when Bluetooth is off. This can be used, for example, to improve location-based features and services."</string>
<string name="system_setting_title" msgid="6864599341809463440">"System"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"System updates"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Unavailable"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android version"</string>
<string name="security_patch" msgid="4794276590178386903">"Android security patch level"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kernel version"</string>
<string name="build_number" msgid="3997326631001009102">"Build number"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth address"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi MAC Address"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Not available"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ascending, descending or repeated sequence of digits isn\'t allowed."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Screen lock options"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> days ago"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Add trusted device"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth will turn on to add trusted device"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Trusted devices"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> devices</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> device</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Your <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> will unlock this car when it\'s connected. If someone takes your <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, they may be able to access this device"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirm"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Remove trusted device"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Done"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Use the companion app to set up a trusted device. Once set up, your user profile will unlock automatically when your phone is detected near the vehicle."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Download the companion app on your phone"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Select <xliff:g id="CAR_NAME">%1$s</xliff:g> on your phone to pair the devices"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"A trusted device near your car will unlock the user profile upon ignition, even if someone else is holding the device."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Please confirm that the pairing codes match"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Phone has been enrolled successfully"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> enrolment failed"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Adding a trusted device requires you to set an authentication method next. If you do not have your trusted device with you, authentication will be required to access your profile."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Device disconnected."</string>
<string name="forget" msgid="3971143908183848527">"Forget"</string>
<string name="connect" msgid="5861699594602380150">"Connect"</string>
<string name="disconnect" msgid="6140789953324820336">"Disconnect"</string>
diff --git a/res/values-en-rGB/arrays.xml b/res/values-en-rGB/arrays.xml
new file mode 100644
index 0000000..6768dfa
--- /dev/null
+++ b/res/values-en-rGB/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Ask"</item>
+ <item msgid="933409503308401889">"Never allow"</item>
+ <item msgid="1154273129608299386">"Always allow"</item>
+ </string-array>
+</resources>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index adeb0b9..c68531b 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Night mode"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Network & internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobile network"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIMs</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Active/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inactive/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Active/Downloaded SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inactive/Downloaded SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Add more"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobile data"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Access data using mobile network"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Turn off mobile data?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Selection required"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Use <xliff:g id="CARRIER">%1$s</xliff:g> for mobile data?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"You\'re using <xliff:g id="CARRIER2_0">%2$s</xliff:g> for mobile data. If you switch to <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> will no longer be used for mobile data."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Use <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Connect to data services when roaming"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Allow data roaming?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"You may incur significant charges."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Data usage"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Primary data"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> used"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Premium SMS may cost you money and will add up to your mobile bills. If you enable permission for an app, you will be able to send premium SMS using that app."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Usage access"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Usage access allows an app to track which other apps you\'re using and how often, as well as your operator, language settings and other details."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Directory access"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi control"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi control allows an app to turn Wi-Fi on or off, scan and connect to Wi-Fi networks add or remove networks, or start a local-only hotspot."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"More"</string>
<string name="location_settings_title" msgid="901334356682423679">"Location"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Recent Location Requests"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No recent location requests"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Allow apps and services to scan for nearby devices at any time, even when Bluetooth is off. This can be used, for example, to improve location-based features and services."</string>
<string name="system_setting_title" msgid="6864599341809463440">"System"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"System updates"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Unavailable"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android version"</string>
<string name="security_patch" msgid="4794276590178386903">"Android security patch level"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kernel version"</string>
<string name="build_number" msgid="3997326631001009102">"Build number"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth address"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi MAC Address"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Not available"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ascending, descending or repeated sequence of digits isn\'t allowed."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Screen lock options"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> days ago"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Add trusted device"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth will turn on to add trusted device"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Trusted devices"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> devices</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> device</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Your <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> will unlock this car when it\'s connected. If someone takes your <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, they may be able to access this device"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirm"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Remove trusted device"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Done"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Use the companion app to set up a trusted device. Once set up, your user profile will unlock automatically when your phone is detected near the vehicle."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Download the companion app on your phone"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Select <xliff:g id="CAR_NAME">%1$s</xliff:g> on your phone to pair the devices"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"A trusted device near your car will unlock the user profile upon ignition, even if someone else is holding the device."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Please confirm that the pairing codes match"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Phone has been enrolled successfully"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> enrolment failed"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Adding a trusted device requires you to set an authentication method next. If you do not have your trusted device with you, authentication will be required to access your profile."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Device disconnected."</string>
<string name="forget" msgid="3971143908183848527">"Forget"</string>
<string name="connect" msgid="5861699594602380150">"Connect"</string>
<string name="disconnect" msgid="6140789953324820336">"Disconnect"</string>
diff --git a/res/values-en-rIN/arrays.xml b/res/values-en-rIN/arrays.xml
new file mode 100644
index 0000000..6768dfa
--- /dev/null
+++ b/res/values-en-rIN/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Ask"</item>
+ <item msgid="933409503308401889">"Never allow"</item>
+ <item msgid="1154273129608299386">"Always allow"</item>
+ </string-array>
+</resources>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index adeb0b9..c68531b 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Night mode"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Network & internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobile network"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIMs</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Active/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inactive/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Active/Downloaded SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inactive/Downloaded SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Add more"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobile data"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Access data using mobile network"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Turn off mobile data?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Selection required"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Use <xliff:g id="CARRIER">%1$s</xliff:g> for mobile data?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"You\'re using <xliff:g id="CARRIER2_0">%2$s</xliff:g> for mobile data. If you switch to <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> will no longer be used for mobile data."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Use <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Connect to data services when roaming"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Allow data roaming?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"You may incur significant charges."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Data usage"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Primary data"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> used"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Premium SMS may cost you money and will add up to your mobile bills. If you enable permission for an app, you will be able to send premium SMS using that app."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Usage access"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Usage access allows an app to track which other apps you\'re using and how often, as well as your operator, language settings and other details."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Directory access"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi control"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi control allows an app to turn Wi-Fi on or off, scan and connect to Wi-Fi networks add or remove networks, or start a local-only hotspot."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"More"</string>
<string name="location_settings_title" msgid="901334356682423679">"Location"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Recent Location Requests"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No recent location requests"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Allow apps and services to scan for nearby devices at any time, even when Bluetooth is off. This can be used, for example, to improve location-based features and services."</string>
<string name="system_setting_title" msgid="6864599341809463440">"System"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"System updates"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Unavailable"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android version"</string>
<string name="security_patch" msgid="4794276590178386903">"Android security patch level"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kernel version"</string>
<string name="build_number" msgid="3997326631001009102">"Build number"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth address"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi MAC Address"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Not available"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ascending, descending or repeated sequence of digits isn\'t allowed."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Screen lock options"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> days ago"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Add trusted device"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth will turn on to add trusted device"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Trusted devices"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> devices</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> device</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Your <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> will unlock this car when it\'s connected. If someone takes your <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, they may be able to access this device"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirm"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Remove trusted device"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Done"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Use the companion app to set up a trusted device. Once set up, your user profile will unlock automatically when your phone is detected near the vehicle."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Download the companion app on your phone"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Select <xliff:g id="CAR_NAME">%1$s</xliff:g> on your phone to pair the devices"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"A trusted device near your car will unlock the user profile upon ignition, even if someone else is holding the device."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Please confirm that the pairing codes match"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Phone has been enrolled successfully"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> enrolment failed"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Adding a trusted device requires you to set an authentication method next. If you do not have your trusted device with you, authentication will be required to access your profile."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Device disconnected."</string>
<string name="forget" msgid="3971143908183848527">"Forget"</string>
<string name="connect" msgid="5861699594602380150">"Connect"</string>
<string name="disconnect" msgid="6140789953324820336">"Disconnect"</string>
diff --git a/res/values-en-rXC/arrays.xml b/res/values-en-rXC/arrays.xml
new file mode 100644
index 0000000..dddcb43
--- /dev/null
+++ b/res/values-en-rXC/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Ask"</item>
+ <item msgid="933409503308401889">"Never allow"</item>
+ <item msgid="1154273129608299386">"Always allow"</item>
+ </string-array>
+</resources>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index cd5948c..3953f34 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Night mode"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Network & internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobile network"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIMs</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Active / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inactive / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Active / Downloaded SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inactive / Downloaded SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Add more"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobile data"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Access data using mobile network"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Turn off mobile data?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Selection required"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Use <xliff:g id="CARRIER">%1$s</xliff:g> for mobile data?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"You\'re using <xliff:g id="CARRIER2_0">%2$s</xliff:g> for mobile data. If you switch to <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> will no longer be used for mobile data."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Use <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Connect to data services when roaming"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Allow data roaming?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"You may incur significant charges."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Data usage"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Primary data"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> used"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Premium SMS may cost you money and will add up to your carrier bills. If you enable permission for an app, you will be able to send premium SMS using that app."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Usage access"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Usage access allows an app to track what other apps you’re using and how often, as well as your carrier, language settings, and other details."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Directory access"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi control"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi control allows an app to turn Wi-Fi on or off, scan and connect to Wi-Fi networks, add or remove networks, or start a local-only hotspot."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"More"</string>
<string name="location_settings_title" msgid="901334356682423679">"Location"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Recent Location Requests"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No recent location requests"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Allow apps and services to scan for nearby devices at any time, even when Bluetooth is off. This can be used, for example, to improve location-based features and services."</string>
<string name="system_setting_title" msgid="6864599341809463440">"System"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"System updates"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Unavailable"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android version"</string>
<string name="security_patch" msgid="4794276590178386903">"Android security patch level"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kernel version"</string>
<string name="build_number" msgid="3997326631001009102">"Build number"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth address"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi MAC Address"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Not available"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ascending, descending, or repeated sequence of digits isn\'t allowed."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Screen lock options"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> days ago"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Add trusted device"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth will turn on to add trusted device"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Trusted devices"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> devices</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> device</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Your <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> will unlock this car when it\'s connected. If someone takes your <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, they may be able to access this device"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirm"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Remove trusted device"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Done"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Use the companion app to set up a trusted device. Once set up, your user profile will unlock automatically when your phone is detected near the vehicle."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Download the companion app on your phone"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Select <xliff:g id="CAR_NAME">%1$s</xliff:g> on your phone to pair the devices"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"A trusted device nearby your car will unlock the user profile upon ignition, even if someone else is holding the device."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Please confirm that the pairing codes match"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Phone has been enrolled successfully"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> enrollment failed"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Adding a trusted device requires you to set an authentication method next. If you do not have your trusted device with you, authentication will be required to access your profile."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Device disconnected."</string>
<string name="forget" msgid="3971143908183848527">"Forget"</string>
<string name="connect" msgid="5861699594602380150">"Connect"</string>
<string name="disconnect" msgid="6140789953324820336">"Disconnect"</string>
diff --git a/res/values-es-rUS/arrays.xml b/res/values-es-rUS/arrays.xml
new file mode 100644
index 0000000..1ee6785
--- /dev/null
+++ b/res/values-es-rUS/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Preguntar"</item>
+ <item msgid="933409503308401889">"No permitir nunca"</item>
+ <item msgid="1154273129608299386">"Permitir siempre"</item>
+ </string-array>
+</resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 2d7b8bf..1056d8c 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Modo nocturno"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Internet y red"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Red móvil"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Activo/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inactivo/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Activo/SIM descargada"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inactivo/SIM descargada"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Agregar más"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Datos móviles"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Acceder a los datos mediante la red móvil"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"¿Desactivar los datos móviles?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Debes seleccionar una opción"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"¿Usar <xliff:g id="CARRIER">%1$s</xliff:g> para datos móviles?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Estás usando <xliff:g id="CARRIER2_0">%2$s</xliff:g> para datos móviles. Si cambias a <xliff:g id="CARRIER1">%1$s</xliff:g>, ya no se utilizará <xliff:g id="CARRIER2_1">%2$s</xliff:g> para los datos móviles."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Usar <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Conectarse a servicios de datos en roaming"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"¿Permitir el roaming de datos?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Es posible que incurras en gastos importantes."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Uso de datos"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Datos principales"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Datos usados: <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"SMS Premium podría implicar cargos en la factura de tu proveedor. Si otorgaste permiso a alguna app, podrás enviar SMS premium con ella."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Acceso de uso"</string>
<string name="usage_access_description" msgid="2413168719257435422">"El acceso a los datos de uso permite que una app controle qué otras apps usas y con qué frecuencia, así como el operador, la configuración de idioma y otros detalles."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Acceso al directorio"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Control de Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Control de Wi-Fi permite que esta app active o desactive la conexión Wi-Fi, busque redes Wi-Fi y se conecte a ellas, agregue o quite redes, o inicie un hotspot de acceso local exclusivo."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Más"</string>
<string name="location_settings_title" msgid="901334356682423679">"Ubicación"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Solicitudes de ubicación recientes"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"No hay solicitudes de ubicación recientes"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Permite que apps y servicios busquen dispositivos cercanos en cualquier momento, aunque la conexión Bluetooth esté desactivada. Puede usarse, por ejemplo, para mejorar las funciones y los servicios basados en la ubicación."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Actualizaciones del sistema"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"No disponible"</string>
<string name="firmware_version" msgid="8491753744549309333">"Versión de Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Parche de seguridad de Android"</string>
<string name="model_info" msgid="4966408071657934452">"Modelo"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Versión de kernel"</string>
<string name="build_number" msgid="3997326631001009102">"Número de compilación"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Dirección de Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Dirección MAC de Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"No disponible"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Estado"</string>
<string name="device_status" msgid="267298179806290920">"Estado"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"No se permiten secuencias de dígitos ascendentes, descendentes ni repetidas."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opciones de bloqueo de pantalla"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> (hace <xliff:g id="NUM_DAYS">%3$s</xliff:g> días)"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Agregar disp. de confianza"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Se activará Bluetooth para agregar disp. confianza"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Disp. de confianza"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dispositivos</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dispositivo</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Tu <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> desbloqueará este vehículo cuando esté conectado. Si otra persona toma tu <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, es posible que pueda acceder a este dispositivo"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirmar"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Quitar dispositivo de confianza"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Listo"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Usa la aplicación complementaria para configurar un dispositivo de confianza. Una vez que lo hagas, tu perfil de usuario se desbloqueará automáticamente cuando se detecte que tu teléfono está cerca del vehículo."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Descarga la aplicación complementaria en el teléfono."</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Selecciona <xliff:g id="CAR_NAME">%1$s</xliff:g> en el teléfono para sincronizar los dispositivos."</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Un dispositivo de confianza cercano desbloqueará el perfil de usuario cuando enciendas tu vehículo, incluso aunque lo sostenga otra persona."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Confirma que coinciden los códigos de sincronización"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Se inscribió correctamente el teléfono"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Se ha producido un error al registrar <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Después de agregar un dispositivo de confianza, deberás establecer un método de autenticación. Ese método te permitirá acceder a tu perfil cuando no lleves contigo el dispositivo de confianza."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Se desconectó el dispositivo."</string>
<string name="forget" msgid="3971143908183848527">"Olvidar"</string>
<string name="connect" msgid="5861699594602380150">"Conectar"</string>
<string name="disconnect" msgid="6140789953324820336">"Desconectar"</string>
diff --git a/res/values-es/arrays.xml b/res/values-es/arrays.xml
new file mode 100644
index 0000000..1ee6785
--- /dev/null
+++ b/res/values-es/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Preguntar"</item>
+ <item msgid="933409503308401889">"No permitir nunca"</item>
+ <item msgid="1154273129608299386">"Permitir siempre"</item>
+ </string-array>
+</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index d2bebd2..bc72cf9 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Modo nocturno"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Redes e Internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Red móvil"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> tarjetas SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> tarjeta SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Activo/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inactivo/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Activo/SIM descargada"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inactivo/SIM descargada"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Añadir más"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Datos móviles"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Acceder a los datos con la red móvil"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"¿Desactivar los datos móviles?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Debes seleccionar una opción"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"¿Usar <xliff:g id="CARRIER">%1$s</xliff:g> para los datos móviles?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Estás utilizando <xliff:g id="CARRIER2_0">%2$s</xliff:g> para los datos móviles. Si cambias a <xliff:g id="CARRIER1">%1$s</xliff:g>, no se utilizará más a <xliff:g id="CARRIER2_1">%2$s</xliff:g> para los datos móviles."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Utilizar <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Itinerancia"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Conectarse a servicios de datos en itinerancia"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"¿Quieres permitir la itinerancia de datos?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"El coste de este servicio puede ser significativo."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Uso de datos"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Datos principales"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Datos usados: <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -305,7 +322,7 @@
<string name="app_link_open_ask" msgid="7242075065136237456">"Preguntar siempre"</string>
<string name="app_link_open_never" msgid="2173174327831792316">"No abrir en esta aplicación"</string>
<string name="app_launch_supported_domain_urls_title" msgid="7345116365785981158">"Enlaces compatibles"</string>
- <string name="special_access" msgid="5730278220917123811">"Acceso especial de aplicaciones"</string>
+ <string name="special_access" msgid="5730278220917123811">"Acceso especial de apps"</string>
<string name="show_system" msgid="4401355756969485287">"Mostrar apps del sistema"</string>
<string name="hide_system" msgid="8845453295584638040">"Ocultar apps del sistema"</string>
<string name="modify_system_settings_title" msgid="4596320571562433972">"Modificar ajustes del sistema"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Es posible que el envío de SMS premium te cueste dinero y el importe correspondiente se sume a las facturas de tu operador. Si habilitas el permiso para una aplicación, puedes enviar SMS premium con ella."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Acceso a datos de uso"</string>
<string name="usage_access_description" msgid="2413168719257435422">"El acceso a los datos de uso permite que una aplicación controle qué otras aplicaciones utilizas y con qué frecuencia, así como tu operador, los ajustes de idioma y otros detalles."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Acceso al directorio"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Control de la conexión Wi‑Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"El control de la conexión Wi‑Fi permite que una aplicación active o desactive la red Wi‑Fi, busque redes inalámbricas y se conecte a ellas, añada o quite redes o inicie un punto de acceso local."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Más"</string>
<string name="location_settings_title" msgid="901334356682423679">"Ubicación"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Solicitudes de ubicación recientes"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ninguna solicitud de ubicación reciente"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Permite que las aplicaciones y los servicios busquen dispositivos cercanos en cualquier momento aunque la conexión Bluetooth esté desactivada. Se utiliza, por ejemplo, para mejorar los servicios y funciones basados en la ubicación."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Actualizaciones del sistema"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"No disponible"</string>
<string name="firmware_version" msgid="8491753744549309333">"Versión de Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Nivel del parche de seguridad de Android"</string>
<string name="model_info" msgid="4966408071657934452">"Modelo"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Versión de kernel"</string>
<string name="build_number" msgid="3997326631001009102">"Número de compilación"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Dirección de Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Dirección MAC de la red Wi‑Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"No disponible"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Estado"</string>
<string name="device_status" msgid="267298179806290920">"Estado"</string>
@@ -515,7 +529,7 @@
%1$s</xliff:g>)"</string>
<string name="sync_button_sync_now" msgid="5767643057970371315">"Sincronizar"</string>
<string name="sync_button_sync_cancel" msgid="7739510554513641393">"Cancelar sincronización"</string>
- <string name="sync_is_failing" msgid="5766255460901806206">"En este momento hay problemas con la sincronización. Se restablecerá en breve."</string>
+ <string name="sync_is_failing" msgid="5766255460901806206">"No se puede sincronizar el dispositivo en este momento. Se restablecerá en breve."</string>
<string name="security_settings_title" msgid="6955331714774709746">"Seguridad"</string>
<string name="security_settings_subtitle" msgid="2244635550239273229">"Bloqueo de pantalla"</string>
<string name="security_lock_none" msgid="1054645093754839638">"Ninguno"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"No se permite utilizar una secuencia ascendente, descendente ni repetida de dígitos."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opciones de bloqueo de pantalla"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : hace <xliff:g id="NUM_DAYS">%3$s</xliff:g> días"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Añadir dispositivo de confianza"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Se activará Bluetooth para añadir disp. confianza"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Dispositivos de confianza"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dispositivos</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dispositivo</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Tu <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> desbloqueará este coche cuando esté conectado. Si alguien coge tu <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, es posible que pueda acceder a este dispositivo"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirmar"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Quitar dispositivo de confianza"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Listo"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Usa la aplicación complementaria para configurar un dispositivo de confianza. Una vez que lo hagas, tu perfil de usuario se desbloqueará automáticamente cuando el teléfono se detecte cerca del vehículo."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Descarga la aplicación complementaria en el teléfono"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Selecciona <xliff:g id="CAR_NAME">%1$s</xliff:g> en el teléfono para vincular los dispositivos"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Es posible que un dispositivo de confianza que se encuentre cerca pueda desbloquear el perfil del usuario al arrancar el coche, aunque lo esté sujetando otra persona."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Confirma que los códigos de sincronización coinciden"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"El teléfono se ha registrado correctamente"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> no se ha podido registrar"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Para añadir un dispositivo de confianza, debes definir un método de autenticación. Si no tienes el dispositivo de confianza a mano, tendrás que realizar el proceso de autenticación para acceder a tu perfil."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"El dispositivo se ha desconectado."</string>
<string name="forget" msgid="3971143908183848527">"Olvidar"</string>
<string name="connect" msgid="5861699594602380150">"Conectar"</string>
<string name="disconnect" msgid="6140789953324820336">"Desconectar"</string>
diff --git a/res/values-et/arrays.xml b/res/values-et/arrays.xml
new file mode 100644
index 0000000..3887b75
--- /dev/null
+++ b/res/values-et/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Küsi"</item>
+ <item msgid="933409503308401889">"Ära luba kunagi"</item>
+ <item msgid="1154273129608299386">"Luba alati"</item>
+ </string-array>
+</resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index b01edbd..8e6af32 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Öörežiim"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Võrk ja Internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobiilsidevõrk"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-kaarti</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM-kaart</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktiivne / SIM-kaart"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inaktiivne / SIM-kaart"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktiivne / allalaaditud SIM-kaart"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inaktiivne / allalaaditud SIM-kaart"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Lisage rohkem"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobiilne andmeside"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Andmesideühendus mobiilsidevõrgu abil"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Kas lülitada mobiilne andmeside välja?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Valik on nõutav"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Kas kasutada op. <xliff:g id="CARRIER">%1$s</xliff:g> andmesidet?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Kasutate operaatori <xliff:g id="CARRIER2_0">%2$s</xliff:g> mobiilset andmesidet. Kui aktiveerite operaatori <xliff:g id="CARRIER1">%1$s</xliff:g>, ei kasutata enam operaatori <xliff:g id="CARRIER2_1">%2$s</xliff:g> mobiilset andmesidet."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Kasuta operaatorit <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Rändlus"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Ühenda rändluse ajal andmesideteenustega"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Kas lubada andmesiderändlus?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Lisanduda võivad suured tasud."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Andmekasutus"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Peamine andmeside"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Kasutatud on <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Tasuliste SMS-ide saatmisel võidakse teilt nõuda tasu, mis lisatakse operaatori esitatud arvele. Kui annate rakendusele loa, on teil selle rakenduse abil võimalik tasulisi SMS-e saata."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Juurdepääs kasutusele"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Juurdepääs kasutusele võimaldab rakendusel jälgida, milliseid teisi rakendusi (ning kui sageli), operaatorit ja keeleseadeid kasutate, ning vaadata teisi üksikasju."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Juurdepääs kaustale"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"WiFi-seadete juhtimine"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"WiFi-seadete juhtimine lubab rakendusel WiFi sisse või välja lülitada, WiFi-võrke otsida ja nendega ühenduse luua, võrke lisada või eemaldada või kohaliku kuumkoha luua."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Rohkem"</string>
<string name="location_settings_title" msgid="901334356682423679">"Asukoht"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Hiljutised asukohapäringud"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ühtegi hiljutist asukohapäringut pole"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Lubage rakendustel ja teenustel alati otsida läheduses olevaid seadmeid isegi siis, kui Bluetooth on väljas. Seda saab kasutada näiteks asukohapõhiste funktsioonide ja teenuste täiustamiseks."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Süsteem"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Süsteemivärskendused"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Pole saadaval"</string>
<string name="firmware_version" msgid="8491753744549309333">"Androidi versioon"</string>
<string name="security_patch" msgid="4794276590178386903">"Androidi turvapaiga tase"</string>
<string name="model_info" msgid="4966408071657934452">"Mudel"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Tuuma versioon"</string>
<string name="build_number" msgid="3997326631001009102">"Järgunumber"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetoothi aadress"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"WiFi MAC-aadress"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Pole saadaval"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Olek"</string>
<string name="device_status" msgid="267298179806290920">"Olek"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Kasvavad, kahanevad või korduvad numbrijadad on keelatud."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekraaniluku valikud"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> päeva tagasi"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Lisa usaldusväärne seade"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth lülit. usaldusväärse seadme lisam. sisse"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Usaldusv. seadmed"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> seadet</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> seade</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Teie <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> avab selle auto, kui need on omavahel ühendatud. Kui keegi võtab teie telefoni <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, on tal võimalik sellele seadmele juurde pääseda"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Kinnita"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Eemalda usaldusväärne seade"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Valmis"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Kasutage usaldusväärse seadme seadistamiseks kaasrakendust. Kui see on seadistatud, avaneb teie kasutajaprofiil automaatselt, kui sõiduki läheduses tuvastatakse teie telefon."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Laadige oma telefonis alla kaasrakendus."</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Tehke seadmete sidumiseks oma telefonis valik <xliff:g id="CAR_NAME">%1$s</xliff:g>."</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Teie auto läheduses olev usaldusväärne seade avab käivitamisel kasutajaprofiili ka siis, kui seade on kellelgi teise käes."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Veenduge, et sidumiskoodid ühtiksid"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Telefoni registreerimine õnnestus"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Seadme <xliff:g id="DEVICE_NAME">%1$s</xliff:g> registreerimine ebaõnnestus"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Usaldusväärse seadme lisamiseks peate hiljem määrama autentimismeetodi. Kui usaldusväärne seade pole teie käes, nõutakse teie profiilile juurdepääsemiseks autentimist."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Seadme ühendus on katkestatud."</string>
<string name="forget" msgid="3971143908183848527">"Unusta"</string>
<string name="connect" msgid="5861699594602380150">"Ühenda"</string>
<string name="disconnect" msgid="6140789953324820336">"Katkesta ühendus"</string>
diff --git a/res/values-eu/arrays.xml b/res/values-eu/arrays.xml
new file mode 100644
index 0000000..0df0a60
--- /dev/null
+++ b/res/values-eu/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Galdetu"</item>
+ <item msgid="933409503308401889">"Ukatu beti"</item>
+ <item msgid="1154273129608299386">"Baimendu beti"</item>
+ </string-array>
+</resources>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index d840cc0..68074f1 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Gau modua"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Sareak eta Internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Sare mugikorra"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM txartel</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM txartel</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktibo / SIM txartela"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inaktibo / SIM txartela"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktibo / Deskargatutako SIM txartela"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inaktibo / Deskargatutako SIM txartela"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Gehitu beste batzuk"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Datu-konexioa"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Atzitu datuak datu-konexioaren bidez"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Datu-konexioa desaktibatu nahi duzu?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Hautatu egin behar da"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"<xliff:g id="CARRIER">%1$s</xliff:g> erabili nahi duzu datu-konexiorako?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"<xliff:g id="CARRIER2_0">%2$s</xliff:g> erabiltzen duzu datu-konexiorako. <xliff:g id="CARRIER1">%1$s</xliff:g> operadorea ezarriz gero, aurrerantzean ez da erabiliko <xliff:g id="CARRIER2_1">%2$s</xliff:g> datu-konexiorako."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Erabili <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Ibiltaritza"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Konektatu datu-zerbitzuetara ibiltaritzan"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Datu-ibiltaritza erabiltzeko baimena eman nahi duzu?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Baliteke kostu handiak ordaindu behar izatea."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Datuen erabilera"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Datu nagusiak"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> erabilita"</string>
@@ -312,20 +329,17 @@
<string name="modify_system_settings_description" msgid="5295023124419592452">"Baimen honekin, sistemaren ezarpenak alda ditzakete aplikazioek."</string>
<string name="notification_access_title" msgid="1467340098885813473">"Jakinarazpenetarako sarbidea"</string>
<string name="notification_listener_security_warning_title" msgid="2893273335175140895">"<xliff:g id="SERVICE">%1$s</xliff:g> zerbitzuari jakinarazpenetarako sarbidea eman nahi diozu?"</string>
- <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> aplikazioak jakinarazpen guztiak irakurri ahal izango ditu, informazio pertsonala (adibidez, kontaktuen izenak eta jasotako testu-mezuak) dutenak barne. Horrez gain, jakinarazpenak baztertu eta haietako ekintza-botoiak abiarazi ahal izango ditu.\n\nGainera, ez molestatzeko modua aktibatzeko eta desaktibatzeko aukera izango du aplikazioak, baita horrekin erlazionatutako ezarpenak aldatzekoa ere."</string>
- <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> aplikazioari jakinarazpenak atzitzeko aukera desaktibatzen badiozu, baliteke ez molestatzeko modurako sarbidea era desaktibatzea."</string>
+ <string name="notification_listener_security_warning_summary" msgid="7280197998063498125">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> aplikazioak jakinarazpen guztiak irakurri ahal izango ditu, informazio pertsonala (adibidez, kontaktuen izenak eta jasotako testu-mezuak) dutenak barne. Horrez gain, jakinarazpenak baztertu eta haietako ekintza-botoiak abiarazi ahal izango ditu.\n\nGainera, Ez molestatu modua aktibatzeko eta desaktibatzeko aukera izango du aplikazioak, baita horrekin erlazionatutako ezarpenak aldatzekoa ere."</string>
+ <string name="notification_listener_revoke_warning_summary" msgid="4904973394539125407">"<xliff:g id="NOTIFICATION_LISTENER_NAME">%1$s</xliff:g> aplikazioari jakinarazpenak atzitzeko aukera desaktibatzen badiozu, baliteke Ez molestatu modurako sarbidea era desaktibatzea."</string>
<string name="notification_listener_revoke_warning_confirm" msgid="2759583507454984812">"Desaktibatu"</string>
<string name="notification_listener_revoke_warning_cancel" msgid="4399941651358241154">"Utzi"</string>
<string name="premium_sms_access_title" msgid="1409118461646148686">"Premium SMSetarako sarbidea"</string>
<string name="premium_sms_access_description" msgid="7119026067677052169">"Premium SMSak ordaindu egin behar izan ditzakezu eta, hala bada, operadorearen fakturan gehituko da haien kostua. Aplikazioei baimen hau ematen badiezu, premium SMSak bidaltzeko gai izango dira."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Erabilera-datuetarako sarbidea"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Erabilera-datuek zer beste aplikazio eta zer maiztasunekin erabiltzen dituzun jakiteko baimena ematen die aplikazioei, baita zer operadore duzun, zer hizkuntza-ezarpen dituzun eta beste xehetasun batzuk ere."</string>
- <!-- no translation found for directory_access_title (7117264853202268740) -->
- <skip />
- <!-- no translation found for directory_on_volume (4947971311247097078) -->
- <skip />
<string name="wifi_control_title" msgid="5660436566907731929">"Wifi-konexioa kontrolatzea"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wifia kontrolatzeko baimenarekin, aplikazioak hauek egin ditzake: wifi-konexioa aktibatu edo desaktibatu, wifi-sareak bilatu eta haietara konektatu, sareak gehitu edo kendu, edota sare publiko lokalak sortu."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Gehiago"</string>
<string name="location_settings_title" msgid="901334356682423679">"Kokapena"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Azken kokapen-eskaerak"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ez da egin kokapen-eskaerarik azkenaldian"</string>
@@ -338,8 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Eman inguruko gailuak edozein unetan bilatzeko baimena aplikazioei eta zerbitzuei, baita Bluetooth konexioa desaktibatuta dagoenean ere. Kokapenean oinarritutako eginbideak eta zerbitzuak hobetzeko erabil daiteke hori, besteak beste."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Sistemaren eguneratzeak"</string>
- <!-- no translation found for status_unavailable (3737918179898732010) -->
- <skip />
<string name="firmware_version" msgid="8491753744549309333">"Android bertsioa"</string>
<string name="security_patch" msgid="4794276590178386903">"Android segurtasun-adabakiaren maila"</string>
<string name="model_info" msgid="4966408071657934452">"Modeloa"</string>
@@ -347,8 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kernel bertsioa"</string>
<string name="build_number" msgid="3997326631001009102">"Konpilazio-zenbakia"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth helbidea"</string>
- <!-- no translation found for about_wifi_mac_address (3934228440550548053) -->
- <skip />
<string name="device_info_not_available" msgid="2095601973977376655">"Ez dago erabilgarri"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Egoera"</string>
<string name="device_status" msgid="267298179806290920">"Egoera"</string>
@@ -610,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ezin da erabili goranzko, beheranzko edo errepikatutako digitu-sekuentziarik."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Pantaila blokeatzeko aukerak"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: duela <xliff:g id="NUM_DAYS">%3$s</xliff:g> egun"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Gehitu gailu fidagarria"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth konexioa aktibatu egingo da gailu fidagarria gehitzeko"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Gailu fidagarriak"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> gailu</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> gailu</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> gailuak autoa desblokeatuko du konektatzen denean. Beste norbaitek <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> autoa hartzen badu, agian gailua atzitu ahal izango du."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Berretsi"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Kendu gailu fidagarria"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Eginda"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Erabili aplikazio osagarria gailu fidagarri bat konfiguratzeko. Konfiguratu ostean, erabiltzaile-profila automatikoki desblokeatuko da telefonoa hautematen denean ibilgailuaren inguruan."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Deskargatu aplikazio osagarria telefonoan"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Gailuak parekatzeko, hautatu <xliff:g id="CAR_NAME">%1$s</xliff:g> telefonoan"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Autoaren inguruan dagoen gailu fidagarri batek erabiltzailearen profila desblokeatuko du motorra martxan jartzean, baita gailua darabilena zeu ez bazara ere."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Berretsi parekatze-kodeak bat datozela"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Erregistratu da telefonoa"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> gailuaren harpidetzeak huts egin du"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Gailu fidagarri bat gehitzen baduzu, autentifikazio-metodo bat ezartzea izango da hurrengo urratsa. Ez badaukazu gailu fidagarririk gertu, sistemak autentifikatzeko eskatuko dizu profila atzitzen duzunean."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Gailu deskonektatu egin da."</string>
<string name="forget" msgid="3971143908183848527">"Ahaztu"</string>
<string name="connect" msgid="5861699594602380150">"Konektatu"</string>
<string name="disconnect" msgid="6140789953324820336">"Deskonektatu"</string>
diff --git a/res/values-fa/arrays.xml b/res/values-fa/arrays.xml
new file mode 100644
index 0000000..8a70b92
--- /dev/null
+++ b/res/values-fa/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"سؤال شود"</item>
+ <item msgid="933409503308401889">"همیشه غیرمجاز"</item>
+ <item msgid="1154273129608299386">"همیشه مجاز"</item>
+ </string-array>
+</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 2245a1b..103e542 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"حالت شب"</string>
<string name="network_and_internet" msgid="4229023630498537530">"شبکه و اینترنت"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"شبکه تلفن همراه"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> سیمکارت</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> سیمکارت</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"فعال / سیمکارت"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"غیرفعال / سیمکارت"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"فعال / سیمکارت بارگیریشده"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"غیرفعال / سیمکارت بارگیریشده"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"افزودن موارد بیشتر"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"داده تلفن همراه"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"دسترسی به دادهها با استفاده از شبکه تلفن همراه"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"داده تلفن همراه خاموش شود؟"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"انتخاب ضروری است"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"استفاده از <xliff:g id="CARRIER">%1$s</xliff:g> برای داده همراه؟"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"برای داده تلفن همراه، از <xliff:g id="CARRIER2_0">%2$s</xliff:g> استفاده میکنید. اگر به <xliff:g id="CARRIER1">%1$s</xliff:g> جابهجا شوید، دیگر <xliff:g id="CARRIER2_1">%2$s</xliff:g> برای داده تلفن همراه استفاده نمیشود."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"استفاده از <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"فراگردی"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"اتصال به سرویسهای داده هنگام فراگردی"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"رومینگ داده مجاز است؟"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"شاید هزینه زیادی برای شما داشته باشد."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"مصرف داده"</string>
<string name="data_usage_title" msgid="2923515974389203812">"داده اصلی"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> مصرف شده است"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"ممکن است استفاده از «پیامک ممتاز» برای شما هزینه داشته باشد و مبلغ صورتحسابهای شرکت مخابراتیتان را افزایش دهد. اگر مجوز را برای برنامهای فعال کنید، میتوانید با استفاده از آن برنامه پیامک ممتاز ارسال کنید."</string>
<string name="usage_access_title" msgid="7153427122072303254">"دسترسی به استفاده"</string>
<string name="usage_access_description" msgid="2413168719257435422">"دسترسی به میزان استفاده، امکان ردیابی اینکه از چه برنامههای دیگری و چند وقت یکبار استفاده میکنید و همچنین شرکت مخابراتیتان، تنظیمات زبان و سایر جزئیات را به برنامه میدهد."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"دسترسی به فهرست راهنما"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"کنترل Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"کنترل Wi-Fi به برنامه اجازه میدهد Wi-Fi را روشن یا خاموش کند، شبکههای Wi-Fi را اسکن کند و به آنها متصل شود، شبکهها را اضافه یا حذف کند یا نقطه اتصالی فقط محلی راهاندازی کند."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"بیشتر"</string>
<string name="location_settings_title" msgid="901334356682423679">"مکان"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"درخواستهای اخیر مکان"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"درخواست مکان جدیدی وجود ندارد"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"به برنامهها و سرویسها اجازه دهید درهر زمانی (حتی وقتی «بلوتوث» خاموش است) دستگاههای اطراف را اسکن کنند. برای مثال این مورد ميتواند برای بهبود ویژگیها و سرویسهای مکانمبنا استفاده شود."</string>
<string name="system_setting_title" msgid="6864599341809463440">"سیستم"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"بهروزرسانیهای سیستم"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"دردسترس نیست"</string>
<string name="firmware_version" msgid="8491753744549309333">"نسخه Android"</string>
<string name="security_patch" msgid="4794276590178386903">"سطح وصله امنیتی Android"</string>
<string name="model_info" msgid="4966408071657934452">"مدل"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"نسخهٔ اصلی"</string>
<string name="build_number" msgid="3997326631001009102">"شمارهٔ ساخت"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"نشانی بلوتوث"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"نشانی Wi-Fi MAC"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"در دسترس نیست"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"وضعیت"</string>
<string name="device_status" msgid="267298179806290920">"وضعیت"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ترتیب صعودی، نزولی یا تکراری ارقام مجاز نیست."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"گزینههای قفل صفحه"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> روز پیش"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"افزودن دستگاه مطمئن"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"برای اضافه کردن دستگاه مطمئن، بلوتوث روشن خواهد شد"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"دستگاههای مطمئن"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> دستگاه</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> دستگاه</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> شما وقتی متصل شود، قفل این خودرو را باز میکند. اگر کسی <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> شما را بردارد، ممکن است بتواند به این دستگاه دسترسی پیدا کند"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"تأیید"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"حذف دستگاه مطمئن"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"تمام"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"از برنامه همراه برای راهاندازی دستگاه مطمئن استفاده کنید. پس از راهاندازی دستگاه مطمئن، وقتی تلفنتان اطراف خودرو شناسایی میشود، نمایه کاربریتان بهطور خودکار قفل خودرو را باز میکند."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"۱. برنامه همراه را در تلفنتان بارگیری کنید"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"۲. برای مرتبطسازی دستگاهها، <xliff:g id="CAR_NAME">%1$s</xliff:g> را در تلفنتان انتخاب کنید"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"اگر دستگاهی مطمئن در اطراف خودروتان وجود داشته باشد، بهمحض روشن شدن خودرو قفل نمایه کاربر باز میشود، حتی اگر دستگاه در اختیار فرد دیگری باشد."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"لطفاً تأیید کنید که کدهای مرتبطسازی مطابقت دارند"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"تلفن با موفقیت ثبتنام شد"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"ثبتنام <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ناموفق بود"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"افزودن دستگاه مطمئن مستلزم تنظیم روش احراز هویت در مرحله بعد است. اگر دستگاه مطمئنتان را با خود حمل نمیکنید، برای دسترسی به نمایهتان باید احراز هویت کنید."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"ارتباط دستگاه قطع شد."</string>
<string name="forget" msgid="3971143908183848527">"فراموش کردن"</string>
<string name="connect" msgid="5861699594602380150">"اتصال"</string>
<string name="disconnect" msgid="6140789953324820336">"قطع اتصال"</string>
diff --git a/res/values-fi/arrays.xml b/res/values-fi/arrays.xml
new file mode 100644
index 0000000..c6fe33b
--- /dev/null
+++ b/res/values-fi/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Kysy"</item>
+ <item msgid="933409503308401889">"Älä salli koskaan"</item>
+ <item msgid="1154273129608299386">"Salli aina"</item>
+ </string-array>
+</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index 8ed4c68..58f7620 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Yötila"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Verkko ja internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobiiliverkko"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-korttia</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM-kortti</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktiivinen / SIM-kortti"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Ei-aktiivinen / SIM-kortti"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktiivinen / Ladattu SIM-kortti"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Ei-aktiivinen / Ladattu SIM-kortti"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Lisää"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobiilidata"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Käytä mobiiliverkon dataa"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Poistetaanko mobiilidata käytöstä?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Valinta on pakollinen"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Käytetäänkö mobiilidataa (<xliff:g id="CARRIER">%1$s</xliff:g>)?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Käytät mobiilidataa (<xliff:g id="CARRIER2_0">%2$s</xliff:g>). Jos <xliff:g id="CARRIER1">%1$s</xliff:g> otetaan käyttöön, <xliff:g id="CARRIER2_1">%2$s</xliff:g> ei enää käytä mobiilidataa."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Valitse <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Yhdistä verkkoon roaming-tilassa."</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Sallitaanko roaming?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Tästä voi seurata huomattavia kuluja."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Datan käyttö"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Ensisijainen datapaketti"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> käytetty"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Premium-tekstiviestien käyttö saattaa olla maksullista, ja kulut lisätään operaattorisi laskuun. Jos annat sovellukselle käyttöoikeuden, voit lähettää premium-tekstiviestejä kyseisellä sovelluksella."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Käyttöoikeus"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Tämä käyttöoikeus antaa sovellukselle luvan seurata, mitä muita sovelluksia käytät ja kuinka usein, sekä nähdä operaattorisi, kieliasetuksesi ja muita tietoja."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Hakemiston käyttöoikeus"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi-hallinta"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi-hallinta antaa sovelluksen asettaa Wi-Fi päälle ja pois päältä, hakea Wi-Fi-verkkoja ja yhdistää niihin, lisätä ja poistaa verkkoja ja käynnistää paikallisen hotspotin."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Lisää"</string>
<string name="location_settings_title" msgid="901334356682423679">"Sijainti"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Viimeisimmät sijaintipyynnöt"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ei viimeaikaisia sijaintipyyntöjä"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Salli sovellusten ja palvelujen hakea lähellä olevia laitteita aina, vaikka Bluetooth olisi pois käytöstä. Näin voidaan esimerkiksi kehittää sijaintiin perustuvia ominaisuuksia ja palveluja."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Järjestelmä"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Järjestelmäpäivitykset"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Ei saatavilla"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android-versio"</string>
<string name="security_patch" msgid="4794276590178386903">"Androidin tietoturvakorjauksen taso"</string>
<string name="model_info" msgid="4966408071657934452">"Malli"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kernel-versio"</string>
<string name="build_number" msgid="3997326631001009102">"Koontiversion numero"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-osoite"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi-yhteyden MAC-osoite"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Ei saatavilla"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Tila"</string>
<string name="device_status" msgid="267298179806290920">"Tila"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Nousevat, laskevat tai toistuvat numerosarjat on kielletty."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Näytön lukitusvaihtoehdot"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> päivää sitten"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Lisää luotettu laite"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth käyttöön luotetun laitteen lisäämiseksi"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Luotetut laitteet"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> laitetta</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> laite</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> avaa auton lukituksen, kun yhteys on muodostettu. Jos <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> päätyy jonkun muun käsiin, kyseinen henkilö voi ehkä käyttää laitetta"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Vahvista"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Poista luotettu laite"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Valmis"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Määritä luotettu laite kumppanisovelluksen avulla. Määrityksen jälkeen käyttäjäprofiilisi lukitus avataan automaattisesti, kun puhelin havaitaan auton lähistöllä."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Lataa kumppanisovellus puhelimelle"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Muodosta laitepari valitsemalla <xliff:g id="CAR_NAME">%1$s</xliff:g> puhelimella"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Auton lähellä oleva luotettu laite avaa käyttäjäprofiilin lukituksen käynnistyksen yhteydessä, vaikka laite olisi jonkun muun käsissä."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Vahvista, että yhdistämiskoodit ovat samat"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Puhelin on lisätty"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Liittyminen epäonnistui: <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Kun olet lisännyt luotetun laitteen, sinun on määritettävä todennustapa. Jos luotetut laitteet eivät ole mukanasi, pääset käyttämään profiilia todennustavan avulla."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Ei yhteyttä laitteeseen"</string>
<string name="forget" msgid="3971143908183848527">"Unohda"</string>
<string name="connect" msgid="5861699594602380150">"Yhdistä"</string>
<string name="disconnect" msgid="6140789953324820336">"Katkaise yhteys"</string>
diff --git a/res/values-fr-rCA/arrays.xml b/res/values-fr-rCA/arrays.xml
new file mode 100644
index 0000000..98f96af
--- /dev/null
+++ b/res/values-fr-rCA/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Demander"</item>
+ <item msgid="933409503308401889">"Ne jamais autoriser"</item>
+ <item msgid="1154273129608299386">"Toujours autoriser"</item>
+ </string-array>
+</resources>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 86e7899..9f4e4de 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Mode Nuit"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Réseau et Internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Réseau cellulaire"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> carte SIM</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> cartes SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Services actifs/Carte SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Services inactifs/Carte SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Services actifs/Cartes SIM téléchargées"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Ser. inactifs/Cartes SIM téléchargées"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Ajouter"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Données mobiles"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Accéder aux données sur réseau cellulaire"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Désactiver les données mobiles?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Sélection requise"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Utiliser <xliff:g id="CARRIER">%1$s</xliff:g> pour donn. mob.?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Vous utilisez le réseau de <xliff:g id="CARRIER2_0">%2$s</xliff:g> pour les données mobiles. Si vous passez au réseau de <xliff:g id="CARRIER1">%1$s</xliff:g>, celui de <xliff:g id="CARRIER2_1">%2$s</xliff:g> ne sera plus utilisé pour les données mobiles."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Utiliser <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Itinérance"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Se connecter aux services de données lors de l\'itinérance"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Voulez-vous autoriser les données en itinérance?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Des frais importants peuvent s\'appliquer."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Utilisation de données"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Données principales"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> utilisés"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Les messages texte de cette catégorie peuvent être payants et s\'ajouter aux factures mensuelles de votre fournisseur de services. Si vous activez l\'autorisation pour une application, vous serez en mesure d\'envoyer des messages texte payants à l\'aide de cette dernière."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Accès aux données utilisation"</string>
<string name="usage_access_description" msgid="2413168719257435422">"L\'accès aux données d\'utilisation permet à une application d\'effectuer le suivi des applications que vous utilisez, de la fréquence d\'utilisation, du fournisseur de services, des paramètres de langue et d\'autres détails."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Accès à l\'annuaire"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Gestion du Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Le contrôle Wi-Fi permet d\'autoriser une application à activer ou à désactiver le Wi-Fi, à rechercher les réseaux Wi-Fi et à s\'y connecter, à ajouter ou supprimer des réseaux, ou à lancer un point d\'accès local uniquement."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Plus"</string>
<string name="location_settings_title" msgid="901334356682423679">"Lieu"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Récentes demandes de localisation"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Aucune demande de localisation récente"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Autorisez les applications et les services à rechercher les appareils à proximité en tout temps, même lorsque le Bluetooth est désactivé. Cette option peut, par exemple, être utilisée pour améliorer les fonctionnalités et les services qui utilisent la localisation."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Système"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Mises à jour système"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Indisponible"</string>
<string name="firmware_version" msgid="8491753744549309333">"Version d\'Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Niveau du correctif de sécurité Android"</string>
<string name="model_info" msgid="4966408071657934452">"Modèle"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Version du noyau"</string>
<string name="build_number" msgid="3997326631001009102">"Numéro de version"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Adresse Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Adresse MAC Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Indisponible"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"État"</string>
<string name="device_status" msgid="267298179806290920">"État"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Les suites croissantes, décroissantes ou répétitives de chiffres ne sont pas autorisées."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Options de verrouillage de l\'écran"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : il y a <xliff:g id="NUM_DAYS">%3$s</xliff:g> jours"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Ajouter un appareil de confiance"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth s\'activera pour ajout. app. confiance"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Appareils fiables"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> appareil</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> appareils</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Votre <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> déverrouillera votre voiture lorsqu\'il sera connecté. Si une personne prend votre <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, elle pourrait être en mesure d\'accéder à cet appareil."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirmer"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Supprimer l\'appareil de confiance"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"OK"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Utilisez l\'application compagnon pour configurer un appareil de confiance. Une fois configuré, votre profil utilisateur se déverrouillera automatiquement si votre téléphone est détecté à proximité de la voiture."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Téléchargez l\'application compagnon sur votre téléphone"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Sélectionnez <xliff:g id="CAR_NAME">%1$s</xliff:g> sur votre téléphone pour associer les appareils"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Au moment du démarrage du véhicule, un appareil de confiance à proximité de celui-ci déverrouillera le profil de l\'utilisateur, même si une autre personne le tient dans sa main."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Veuillez confirmer que les codes d\'association correspondent"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Le téléphone a été inscrit"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Échec de l\'inscription de l\'appareil <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"L\'ajout d\'un appareil de confiance nécessite ensuite la configuration d\'une méthode d\'authentification. Si vous n\'avez pas votre appareil de confiance avec vous, un processus d\'authentification sera nécessaire pour accéder à votre profil."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Appareil déconnecté."</string>
<string name="forget" msgid="3971143908183848527">"Oublier"</string>
<string name="connect" msgid="5861699594602380150">"Connexion"</string>
<string name="disconnect" msgid="6140789953324820336">"Déconnexion"</string>
diff --git a/res/values-fr/arrays.xml b/res/values-fr/arrays.xml
new file mode 100644
index 0000000..98f96af
--- /dev/null
+++ b/res/values-fr/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Demander"</item>
+ <item msgid="933409503308401889">"Ne jamais autoriser"</item>
+ <item msgid="1154273129608299386">"Toujours autoriser"</item>
+ </string-array>
+</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 97d50c9..4a0b2b2 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Mode Nuit"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Réseau et Internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Réseau mobile"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> carte SIM</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> cartes SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Actif/Carte SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inactif/Carte SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Actif/Carte SIM téléchargée"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inactif/Carte SIM téléchargée"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Ajouter"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Données mobiles"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Accéder aux données via le réseau mobile"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Désactiver les données mobiles ?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Sélection requise"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Utiliser <xliff:g id="CARRIER">%1$s</xliff:g> pour les données mobiles ?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Vous utilisez <xliff:g id="CARRIER2_0">%2$s</xliff:g> pour les données mobiles. Si vous basculez sur <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> ne sera plus utilisé pour les données mobiles."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Utiliser <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Itinérance"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Se connecter aux services de données lors de l\'itinérance"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Autoriser l\'itinérance des données ?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Des frais importants peuvent s\'appliquer."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Consommation des données"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Données principales"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> utilisés"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Les SMS premium peuvent être payants et s\'ajouter aux factures de votre opérateur. Si vous activez l\'autorisation pour une application, vous serez en mesure d\'envoyer des SMS premium à l\'aide de cette dernière."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Accès aux infos d\'utilisation"</string>
<string name="usage_access_description" msgid="2413168719257435422">"L\'accès aux données d\'utilisation permet à une application d\'effectuer le suivi des applications que vous utilisez, de la fréquence d\'utilisation, de l\'opérateur, des paramètres de langue et d\'autres détails."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Accès à l\'annuaire"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Contrôle Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Le contrôle Wi-Fi permet d\'autoriser une application à activer ou à désactiver le Wi-Fi, à rechercher les réseaux Wi-Fi et à s\'y connecter, à ajouter ou supprimer des réseaux, ou à lancer un point d\'accès local."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Plus"</string>
<string name="location_settings_title" msgid="901334356682423679">"Position"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Demandes de localisation récentes"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Aucune demande de localisation récente"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Autoriser les applications et les services à rechercher des appareils à proximité à tout moment, même si le Bluetooth est désactivé. Cette autorisation peut, par ex., améliorer les fonctionnalités et les services basés sur la localisation."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Système"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Mises à jour du système"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Non disponible"</string>
<string name="firmware_version" msgid="8491753744549309333">"Version d\'Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Mise à jour du correctif de sécurité Android"</string>
<string name="model_info" msgid="4966408071657934452">"Modèle"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Version du noyau"</string>
<string name="build_number" msgid="3997326631001009102">"Numéro de build"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Adresse Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Adresse MAC Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Indisponible"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"État"</string>
<string name="device_status" msgid="267298179806290920">"État"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Les suites de chiffres croissantes, décroissantes ou répétitives ne sont pas autorisées."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Options de verrouillage de l\'écran"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : il y a <xliff:g id="NUM_DAYS">%3$s</xliff:g> jours"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Ajouter un appareil vérifié"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"L\'appareil vérifié sera ajouté via le Bluetooth"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Appareils vérifiés"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> appareil</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> appareils</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Votre <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> déverrouille cette voiture lorsqu\'il y est connecté. Si une personne saisit votre <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, il est possible qu\'elle puisse accéder à cet appareil"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirmer"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Supprimer l\'appareil vérifié"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"OK"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Utilisez l\'application associée pour configurer un appareil vérifié. Une fois configuré, votre profil utilisateur permettra de déverrouiller automatiquement la voiture si votre téléphone est détecté à proximité de cette dernière."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Téléchargez l\'application associée sur votre téléphone"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Sélectionnez <xliff:g id="CAR_NAME">%1$s</xliff:g> sur votre téléphone pour associer les appareils"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Le profil utilisateur sera déverrouillé au démarrage de la voiture en présence d\'un appareil vérifié se trouvant à proximité, même si une autre personne le tient dans sa main."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Veuillez confirmer que les codes d\'association correspondent"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Le téléphone a bien été enregistré"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Échec de l\'inscription de <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Pour ajouter un appareil vérifié, vous devez définir une méthode d\'authentification à l\'étape suivante. Si vous n\'avez pas votre appareil vérifié avec vous, vous devrez obligatoirement passer par l\'étape d\'authentification pour accéder à votre profil."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Appareil déconnecté."</string>
<string name="forget" msgid="3971143908183848527">"Supprimer"</string>
<string name="connect" msgid="5861699594602380150">"Connecter"</string>
<string name="disconnect" msgid="6140789953324820336">"Déconnecter"</string>
diff --git a/res/values-gl/arrays.xml b/res/values-gl/arrays.xml
new file mode 100644
index 0000000..cd2786c
--- /dev/null
+++ b/res/values-gl/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Preguntar"</item>
+ <item msgid="933409503308401889">"Non permitir nunca"</item>
+ <item msgid="1154273129608299386">"Permitir sempre"</item>
+ </string-array>
+</resources>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 2c9c436..add7a89 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Modo nocturno"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Rede e Internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Rede de telefonía móbil"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Servizo activado/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Servizo desactivado/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Servizo activado/SIM descargada"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Servizo desactivado/SIM descargada"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Engadir máis"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Datos móbiles"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Acceder aos datos cunha rede de telefonía móbil"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Queres desactivar os datos móbiles?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"É necesario seleccionar unha opción"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Usar <xliff:g id="CARRIER">%1$s</xliff:g> para os datos móbiles?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Estás utilizando <xliff:g id="CARRIER2_0">%2$s</xliff:g> para os datos móbiles. Se cambias a <xliff:g id="CARRIER1">%1$s</xliff:g>, deixarase de utilizar <xliff:g id="CARRIER2_1">%2$s</xliff:g> para os datos móbiles."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Utilizar <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Itinerancia"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Conéctase a servizos de datos en itinerancia"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Queres permitir a itinerancia de datos?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"É posible que se apliquen cargos elevados."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Uso de datos"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Datos principais"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Datos usados: <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Podes ter que pagar polas mensaxes premium, cuxos custos se engadirán ás facturas do teu operador. Se activas o permiso para unha aplicación, poderás enviar SMS premium a través desa aplicación."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Acceso ao uso"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Co acceso ao uso unha aplicación poden realizar un seguimento das demais aplicacións que usas e de con que frecuencia as utilizas, así como do teu operador, da configuración do idioma e doutros detalles."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Acceso ao directorio"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Control da wifi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Co control da wifi, as aplicacións poden activar ou desactivar a wifi, buscar redes wifi, conectarse a elas, engadir ou eliminar redes e iniciar unha zona wifi local."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Máis"</string>
<string name="location_settings_title" msgid="901334356682423679">"Localización"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Solicitudes de localización recentes"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Non hai solicitudes de localización recentes"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Permite ás aplicacións e aos servizos buscar dispositivos próximos en calquera momento, mesmo cando o Bluetooth está desactivado. Esta opción pode utilizarse, por exemplo, para mellorar as funcións e os servizos baseados na localización."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Actualizacións do sistema"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Non dispoñible"</string>
<string name="firmware_version" msgid="8491753744549309333">"Versión de Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Nivel de parche de seguranza de Android"</string>
<string name="model_info" msgid="4966408071657934452">"Modelo"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Versión de kernel"</string>
<string name="build_number" msgid="3997326631001009102">"Número de compilación"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Enderezo de Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Enderezo MAC da wifi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Non dispoñible"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Estado"</string>
<string name="device_status" msgid="267298179806290920">"Estado"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Non se permite unha secuencia de díxitos ascendente, descendente nin repetida."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcións de bloqueo de pantalla"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: hai <xliff:g id="NUM_DAYS">%3$s</xliff:g> días"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Eng. dispositivo de confianza"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Activarase o Bluet. para engadir un disp. de conf."</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Disposit. confianza"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dispositivos</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dispositivo</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Cando o <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> estea conectado, poderase utilizar para desbloquear este coche. Se outra persoa colle o <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> pode acceder a este dispositivo"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirmar"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Quitar dispositivo de confianza"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Feito"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Utiliza a aplicación complementaria para configurar un dispositivo de confianza. Unha vez configurado, o teu perfil de usuario desbloquearase automaticamente cando se detecte o teu teléfono preto do vehículo."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Descarga a aplicación complementaria no teléfono"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Selecciona <xliff:g id="CAR_NAME">%1$s</xliff:g> no teléfono para vincular os dispositivos"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Un dispositivo de confianza próximo ao teu coche desbloqueará o perfil de usuario ao arrancalo, aínda que o estea suxeitando outra persoa."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Confirma que os códigos de confirmación coinciden"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"O teléfono inscribiuse correctamente"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Produciuse un erro durante a inscrición de <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Se engades un dispositivo de confianza, despois terás que definir un método de autenticación. Se non tes á man o dispositivo de confianza, deberás verificar a túa identidade para acceder ao teu perfil."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Desconectouse o dispositivo."</string>
<string name="forget" msgid="3971143908183848527">"Borrar"</string>
<string name="connect" msgid="5861699594602380150">"Conectar"</string>
<string name="disconnect" msgid="6140789953324820336">"Desconectar"</string>
diff --git a/res/values-gu/arrays.xml b/res/values-gu/arrays.xml
new file mode 100644
index 0000000..fa80e76
--- /dev/null
+++ b/res/values-gu/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"પૂછો"</item>
+ <item msgid="933409503308401889">"ક્યારેય મંજૂરી આપશો નહીં"</item>
+ <item msgid="1154273129608299386">"હંમેશા મંજૂરી આપો"</item>
+ </string-array>
+</resources>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 3d88972..0cdc970 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"રાત્રિ મોડ"</string>
<string name="network_and_internet" msgid="4229023630498537530">"નેટવર્ક અને ઇન્ટરનેટ"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"મોબાઇલ નેટવર્ક"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> સિમ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> સિમ</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"સક્રિય / સિમ"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"નિષ્ક્રિય / સિમ"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"સક્રિય / ડાઉનલોડ કરેલું સિમ"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"નિષ્ક્રિય / ડાઉનલોડ કરેલું સિમ"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"વધુ ઉમેરો"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"મોબાઇલ ડેટા"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"મોબાઇલ નેટવર્કનો ઉપયોગ કરીને ડેટા ઍક્સેસ કરો"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"મોબાઇલ ડેટા બંધ કરીએ?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"પસંદગી કરવી જરૂરી છે"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"મોબાઇલ ડેટા માટે <xliff:g id="CARRIER">%1$s</xliff:g>નો ઉપયોગ કરીએ?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"તમે મોબાઇલ ડેટા માટે <xliff:g id="CARRIER2_0">%2$s</xliff:g>નો ઉપયોગ કરી રહ્યા છો. જો તમે <xliff:g id="CARRIER1">%1$s</xliff:g> પર સ્વિચ કરશો, તો મોબાઇલ ડેટા માટે <xliff:g id="CARRIER2_1">%2$s</xliff:g>નો ઉપયોગ નહીં થઈ શકે."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g>નો ઉપયોગ કરો"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"રોમિંગ"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"જ્યારે રોમિંગ હોય ત્યારે ડેટા સેવાઓથી કનેક્ટ કરો"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"ડેટા રોમિંગને મંજૂરી આપીએ?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"તમારી પાસેથી કદાચ જરૂરી શુલ્ક વસૂલવામાં આવી શકે."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"ડેટા વપરાશ"</string>
<string name="data_usage_title" msgid="2923515974389203812">"પ્રાથમિક ડેટા"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> ડેટાનો વપરાશ થયો"</string>
@@ -320,12 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"તમને પ્રીમિયમ SMS માટે શુલ્ક લાગી શકે છે અને તે તમારા કૅરિઅર બિલમાં ઉમેરવામાં આવશે. જો તમે કોઇ ઍપ માટે પરવાનગી ચાલુ કરો છો, તો તમે તે ઍપનો ઉપયોગ કરીને પ્રીમિયમ SMS મોકલી શકશો."</string>
<string name="usage_access_title" msgid="7153427122072303254">"વપરાશનો ઍક્સેસ"</string>
<string name="usage_access_description" msgid="2413168719257435422">"વપરાશનો ઍક્સેસ કોઈ ઍપને તમે કઈ અન્ય ઍપનો અને કેટલીવાર ઉપયોગ કરી રહ્યાં છો, તેમજ તમારા કૅરિઅર, ભાષા સેટિંગ અને અન્ય વિગતોને ટ્રૅક કરવાની મંજૂરી આપે છે."</string>
- <!-- no translation found for directory_access_title (7117264853202268740) -->
- <skip />
- <!-- no translation found for directory_on_volume (4947971311247097078) -->
- <skip />
<string name="wifi_control_title" msgid="5660436566907731929">"વાઇ-ફાઇ નિયંત્રણ"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"વાઇ-ફાઇ નિયંત્રણ ઍપને વાઇ-ફાઇ ચાલુ અથવા બંધ કરવાની, વાઇ-ફાઇ નેટવર્કને સ્કૅન કરીને કનેક્ટ કરવાની, નેટવર્ક ઉમેરવાની કે કાઢી નાખવાની અથવા માત્ર-સ્થાનિક હૉટસ્પૉટ શરૂ કરવાની મંજૂરી આપે છે."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"વધુ"</string>
<string name="location_settings_title" msgid="901334356682423679">"સ્થાન"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"સ્થાન માટે તાજેતરની વિનંતીઓ"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"સ્થાન માટે તાજેતરમાં કોઈ વિનંતી નથી"</string>
@@ -338,8 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"જ્યારે બ્લૂટૂથ બંધ હોય ત્યારે પણ ગમે ત્યારે ઍપ અને સેવાઓને નજીકનાં ડિવાઇસ સ્કૅન કરવાની મંજૂરી આપો. ઉદાહરણ તરીકે, આનો ઉપયોગ સ્થાન આધારિત સુવિધાઓ અને સેવાઓને વધુ સારી બનાવવા માટે કરી શકાય છે."</string>
<string name="system_setting_title" msgid="6864599341809463440">"સિસ્ટમ"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"સિસ્ટમ અપડેટ"</string>
- <!-- no translation found for status_unavailable (3737918179898732010) -->
- <skip />
<string name="firmware_version" msgid="8491753744549309333">"Android વર્ઝન"</string>
<string name="security_patch" msgid="4794276590178386903">"Android સુરક્ષા પૅચ લેવલ"</string>
<string name="model_info" msgid="4966408071657934452">"મૉડલ"</string>
@@ -347,8 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"કર્નલ વર્ઝન"</string>
<string name="build_number" msgid="3997326631001009102">"બિલ્ડ નંબર"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"બ્લૂટૂથ ઍડ્રેસ"</string>
- <!-- no translation found for about_wifi_mac_address (3934228440550548053) -->
- <skip />
<string name="device_info_not_available" msgid="2095601973977376655">"ઉપલબ્ધ નથી"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"સ્ટેટસ"</string>
<string name="device_status" msgid="267298179806290920">"સ્ટેટસ"</string>
@@ -610,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"અંકોના ચઢતા ક્રમની, ઉતરતા ક્રમની અથવા પુનરાવર્તિત અનુક્રમની મંજૂરી નથી."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"સ્ક્રીન લૉકના વિકલ્પો"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> દિવસ પહેલાં"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"વિશ્વસનીય ડિવાઇસ ઉમેરો"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"વિશ્વસનીય ડિવાઇસ ઉમેરવા માટે બ્લૂટૂથ ચાલુ થશે"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"વિશ્વસનીય ડિવાઇસ"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ડિવાઇસ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ડિવાઇસ</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"જ્યારે તમારું <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> કનેક્ટ થયેલું હશે, ત્યારે આ કારને અનલૉક કરી શકશે જો કોઈ તમારી <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>કાર લઈ જશે, તો તેઓ આ ડિવાઇસને ઍક્સેસ કરી શકશે"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"કન્ફર્મ કરો"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"વિશ્વસનીય ડિવાઇસ કાઢી નાખો"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"થઈ ગયું"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"વિશ્વસનીય ડિવાઇસનું સેટઅપ કરવા માટે સાથી ઍપનો ઉપયોગ કરો. એકવાર સેટઅપ થઈ જાય પછી, જ્યારે તમારો ફોન વાહનની નજીક હોવાની જાણ થાય ત્યારે તમારી વપરાશકર્તા પ્રોફાઇલ ઑટોમૅટિક રીતે અનલૉક થઈ જશે."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. તમારા ફોન પર સાથી ઍપને ડાઉનલોડ કરો"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. ડિવાઇસને તમારા ફોન સાથે જોડાણ કરવા માટે <xliff:g id="CAR_NAME">%1$s</xliff:g>ને પસંદ કરો"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"જો અન્ય કોઈ વ્યક્તિએ તમારું વિશ્વસનીય ડિવાઇસ પકડી રાખ્યું હોય, તો પણ જ્યારે તે ડિવાઇસ તમારી કારની નજીક હશે, ત્યારે તે તમારી કારને ચાલુ કરતી વખતે વપરાશકર્તાની પ્રોફાઇલને અનલૉક કરી નાખશે."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"કૃપા કરીને કન્ફર્મ કરો કે જોડાણ કરવાનો કોડ મેળ ખાય છે"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"ફોનની સફળતાપૂર્વક નોંધણી કરી"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>ની નોંધણી નિષ્ફળ રહી"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"કોઈ વિશ્વસનીય ડિવાઇસ ઉમેરવા માટે, તમારે પહેલાં કોઈ પ્રમાણીકરણ પદ્ધતિ સેટ કરવી આવશ્યક છે. જો તમારી પાસે તમારું વિશ્વસનીય ડિવાઇસ ન હોય, તો તમારી પ્રોફાઇલને ઍક્સેસ કરવા માટે પ્રમાણીકરણ આવશ્યક રહેશે."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"ડિવાઇસ ડિસ્કનેક્ટ થયું."</string>
<string name="forget" msgid="3971143908183848527">"ભૂલી જાઓ"</string>
<string name="connect" msgid="5861699594602380150">"કનેક્ટ કરો"</string>
<string name="disconnect" msgid="6140789953324820336">"ડિસ્કનેક્ટ કરો"</string>
diff --git a/res/values-hi/arrays.xml b/res/values-hi/arrays.xml
new file mode 100644
index 0000000..e71b2bd
--- /dev/null
+++ b/res/values-hi/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"पूछें"</item>
+ <item msgid="933409503308401889">"कभी अनुमति ना दें"</item>
+ <item msgid="1154273129608299386">"हमेशा अनुमति दें"</item>
+ </string-array>
+</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 05e8987..30c95d3 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"रात वाला मोड"</string>
<string name="network_and_internet" msgid="4229023630498537530">"नेटवर्क और इंटरनेट"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"मोबाइल नेटवर्क"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> सिम</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> सिम</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"चालू / सिम"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"बंद / सिम"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"चालू / डाउनलोड किया गया सिम"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"बंद / डाउनलोड किया गया सिम"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"ज़्यादा जोड़ें"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"मोबाइल डेटा"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"मोबाइल नेटवर्क का इस्तेमाल करके डेटा ऐक्सेस करें"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"मोबाइल डेटा बंद करना चाहते हैं?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"चुनना ज़रूरी है"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"मोबाइल डेटा के लिए <xliff:g id="CARRIER">%1$s</xliff:g> इस्तेमाल करें?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"मोबाइल डेटा के लिए आप <xliff:g id="CARRIER2_0">%2$s</xliff:g> का इस्तेमाल कर रहे हैं. अगर आप <xliff:g id="CARRIER1">%1$s</xliff:g> का इस्तेमाल करते हैं, तो मोबाइल डेटा के लिए <xliff:g id="CARRIER2_1">%2$s</xliff:g> का इस्तेमाल नहीं किया जाएगा."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> का इस्तेमाल करें"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"रोमिंग"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"रोमिंग के समय डेटा सेवाएं कनेक्ट करें"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"डेटा रोमिंग की अनुमति दें?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"आपको बहुत ज़्यादा शुल्क देना पड़ सकता है."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"डेटा खर्च"</string>
<string name="data_usage_title" msgid="2923515974389203812">"प्राइमरी डेटा"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> डेटा इस्तेमाल किया गया"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"प्रीमियम मैसेज (एसएमएस) के लिए आपको पैसे चुकाने पड़ सकते हैं जिसे आपकी मोबाइल और इंटरनेट सेवा देने वाली कंपनी आपके बिल में जोड़ देगी. अगर आप किसी ऐप्लिकेशन के लिए यह अनुमति देते हैं, तो आप उस ऐप्लिकेशन का इस्तेमाल करके प्रीमियम मैसेज (एसएमएस) भेज सकते हैं."</string>
<string name="usage_access_title" msgid="7153427122072303254">"इस्तेमाल का ऐक्सेस"</string>
<string name="usage_access_description" msgid="2413168719257435422">"\'डेटा खर्च\' देखने की मंज़ूरी से कोई ऐप्लिकेशन इस बात पर नज़र रख पाता है कि आप कौनसे ऐप्लिकेशन चला रहे हैं और उन्हें कितनी बार इस्तेमाल करते हैं. साथ ही, ऐप्लिकेशन आपकी मोबाइल और इंटरनेट सेवा देने वाली कंपनी, भाषा सेटिंग और दूसरी जानकारी देख पाता है."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"डायरेक्ट्री का ऐक्सेस"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"वाई-फ़ाई नियंत्रण"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"वाई-फ़ाई का नियंत्रण किसी ऐप्लिकेशन को वाई-फ़ाई चालू या बंद करने, वाई-फ़ाई नेटवर्क ढूंढने और उससे जुड़ने की अनुमति देता है. साथ ही, नेटवर्क जोड़ने या हटाने या सिर्फ़ सीमित दायरे में इस्तेमाल होने वाला हॉटस्पॉट चालू करने की अनुमति देता है."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"ज़्यादा सेटिंग"</string>
<string name="location_settings_title" msgid="901334356682423679">"जगह"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"हाल ही में किए गए जगह के अनुरोध"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"हाल ही में जगह का कोई अनुरोध नहीं है"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ऐप्लिकेशन और सेवाओं को किसी भी समय आस-पास के डिवाइस स्कैन करने की मंज़ूरी दें, भले ही ब्लूटूथ बंद हो. इसका इस्तेमाल करके, जगह की जानकारी जैसी सुविधाओं और सेवाओं में सुधार किया जा सकता है."</string>
<string name="system_setting_title" msgid="6864599341809463440">"सिस्टम"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"सिस्टम अपडेट"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"उपलब्ध नहीं है"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android का वर्शन"</string>
<string name="security_patch" msgid="4794276590178386903">"Android सुरक्षा पैच लेवल"</string>
<string name="model_info" msgid="4966408071657934452">"मॉडल"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kernel का वर्शन"</string>
<string name="build_number" msgid="3997326631001009102">"बिल्ड नंबर"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"ब्लूटूथ का पता"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"वाई-फ़ाई का एमएसी (मैक) पता"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"उपलब्ध नहीं है"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"स्थिति"</string>
<string name="device_status" msgid="267298179806290920">"स्थिति"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"अंकों को बढ़ते, घटते या दोहराए गए क्रम में लिखने की मंज़ूरी नहीं है."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"स्क्रीन लॉक विकल्प"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> days ago"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"भरोसेमंद डिवाइस जोड़ें"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"भरोसेमंद डिवाइस जोड़ने के लिए ब्लूटूथ चालू हो जाएगा"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"भरोसेमंद डिवाइस"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> डिवाइस</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> डिवाइस</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"कनेक्ट होने पर आपका <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> इस कार को अनलॉक कर देगा. अगर किसी के पास आपका <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> है, तो वह इस डिवाइस को ऐक्सेस कर सकता है"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"पुष्टि करें"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"भरोसेमंद डिवाइस हटाएं"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"हो गया"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"भरोसेमंद डिवाइस सेट अप करने के लिए साथी ऐप्लिकेशन का इस्तेमाल करें. इसके सेट अप के बाद, जब भी आपका फ़ोन कार के आस-पास होगा, तब आपकी उपयोगकर्ता प्रोफ़ाइल अपने आप अनलॉक हो जाएगी."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. अपने फ़ोन पर साथी ऐप्लिकेशन डाउनलोड करें"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. डिवाइसों को जोड़ने के लिए अपने फ़ोन पर <xliff:g id="CAR_NAME">%1$s</xliff:g> चुनें"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"कार चालू हाेते ही इसके आस-पास मौजूद भरोसेमंद डिवाइस उपयाेगकर्ता की प्राेफ़ाइल अनलॉक कर देगा, भले ही वह डिवाइस किसी और के पास हो."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"कृपया पुष्टि करें कि जोड़ने के कोड का मिलान हो गया है"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"फ़ोन रजिस्टर हो गया है"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> का नाम दर्ज नहीं हो सका"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"इसके बाद एक भरोसेमंद डिवाइस जोड़ने के लिए आपको पुष्टि करने का तरीका सेट करना होगा. अगर भरोसेमंद डिवाइस आपके पास नहीं है, तो आपकी प्रोफ़ाइल ऐक्सेस करने के लिए पुष्टि करना ज़रूरी होगा."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"डिवाइस डिसकनेक्ट किया गया."</string>
<string name="forget" msgid="3971143908183848527">"भूल जाएं"</string>
<string name="connect" msgid="5861699594602380150">"कनेक्शन जोड़ें"</string>
<string name="disconnect" msgid="6140789953324820336">"कनेक्शन हटाएं"</string>
diff --git a/res/values-hr/arrays.xml b/res/values-hr/arrays.xml
new file mode 100644
index 0000000..2ecf44f
--- /dev/null
+++ b/res/values-hr/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Postavi pitanje"</item>
+ <item msgid="933409503308401889">"Ne dopuštaj nikada"</item>
+ <item msgid="1154273129608299386">"Dopusti uvijek"</item>
+ </string-array>
+</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index 80c5073..b72c927 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -31,9 +31,27 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Noćni način rada"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Mreža i internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobilna mreža"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-a</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-ova</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktivno/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Neaktivno/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktivno/preuzeti SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Neaktivno/preuzeti SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Dodajte više"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobilni podaci"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Pristupi podacima pomoću mobilne mreže"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Isključiti mobilne podatke?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Odabir je obvezan"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Koristiti <xliff:g id="CARRIER">%1$s</xliff:g> za mobilne podatke?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Koristite usluge mobilnog operatera <xliff:g id="CARRIER2_0">%2$s</xliff:g> za mobilne podatke. Ako prijeđete na mobilnog operatera <xliff:g id="CARRIER1">%1$s</xliff:g>, operater<xliff:g id="CARRIER2_1">%2$s</xliff:g> više se neće koristiti za mobilne podatke."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Koristi operatera <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Povezivanje s podatkovnim uslugama u roamingu"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Želite li dopustiti roaming podataka?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Možda ćete imati značajne dodatne troškove."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Potrošnja podataka"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Primarni podaci"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Iskorišteno: <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -322,10 +340,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"SMS-ovi s dodatnom naplatom mogu se dodatno naplaćivati i povećat će vaš račun. Ako nekoj aplikaciji date to dopuštenje, moći ćete slati SMS-ove s dodatnom naplatom pomoću te aplikacije."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Pristup upotrebi"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Pristup podacima o upotrebi omogućuje aplikaciji praćenje drugih aplikacija koje upotrebljavate i učestalosti njihove upotrebe, kao i praćenje mobilnog operatera, postavki jezika i ostalih pojedinosti."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Pristup direktoriju"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Upravljanje Wi-Fijem"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Upravljanje Wi-Fijem omogućuje aplikaciji da uključuje ili isključuje Wi-Fi, traži Wi-Fi mreže i povezuje se s njima, dodaje ili uklanja mreže te pokreće lokalnu žarišnu točku."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Više"</string>
<string name="location_settings_title" msgid="901334356682423679">"Lokacija"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nedavni zahtjevi za lokaciju"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nema nedavnih zahtjeva za lokaciju"</string>
@@ -338,7 +355,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Dopustite aplikacijama i uslugama da traže uređaje u blizini u bilo kojem trenutku, čak i kada je Bluetooth isključen. Na taj se način mogu, na primjer, poboljšati značajke i usluge koje se temelje na lokaciji."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sustav"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Ažuriranja sustava"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Nije dostupno"</string>
<string name="firmware_version" msgid="8491753744549309333">"verziju Androida"</string>
<string name="security_patch" msgid="4794276590178386903">"Razina Androidove sigurnosne zakrpe"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -346,7 +362,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Verzija jezgre"</string>
<string name="build_number" msgid="3997326631001009102">"Broj međuverzije"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth adresa"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"MAC adresa Wi-Fija"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Nije dostupno"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -616,6 +631,27 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Uzastopno rastući ili padajući slijed brojeva ili ponavljanje brojeva nisu dopušteni."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcije zaključavanja zaslona"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : prije <xliff:g id="NUM_DAYS">%3$s</xliff:g> dana"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Dodaj pouzdani uređaj"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth se uključuje da dodate pouzdani uređaj"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Pouzdani uređaji"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> uređaj</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> uređaja</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> uređaja</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Vaš uređaj <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> otključat će ovaj automobil kad se poveže. Ako vam netko uzme vaš uređaj <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, možda će moći pristupiti ovom uređaju"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Potvrdi"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Ukloni pouzdani uređaj"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Gotovo"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Za postavljanje pouzdanog uređaja upotrijebite popratnu aplikaciju. Nakon postavljanja vaš će se korisnički profil automatski otključati kada se otkrije da se vaš telefon nalazi u blizini vozila."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Preuzmite popratnu aplikaciju na telefon"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Odaberite automobil <xliff:g id="CAR_NAME">%1$s</xliff:g> na telefonu da biste uparili uređaje"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Pouzdani uređaj u blizini automobila otključat će korisnički profil nakon paljenja, čak i ako netko drugi drži taj uređaj."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Potvrdite da se kodovi za uparivanje podudaraju"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Telefon je uspješno prijavljen"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Upis uređaja <xliff:g id="DEVICE_NAME">%1$s</xliff:g> nije uspio"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Nakon što dodate pouzdani uređaj, morate postaviti način autentifikacije. Ako nemate pouzdani uređaj sa sobom, morat ćete se autentificirati da biste pristupili svojem profilu."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Uređaj je isključen."</string>
<string name="forget" msgid="3971143908183848527">"Zaboravi"</string>
<string name="connect" msgid="5861699594602380150">"Poveži"</string>
<string name="disconnect" msgid="6140789953324820336">"Prekini vezu"</string>
diff --git a/res/values-hu/arrays.xml b/res/values-hu/arrays.xml
new file mode 100644
index 0000000..df2d309
--- /dev/null
+++ b/res/values-hu/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Kérdezzen rá"</item>
+ <item msgid="933409503308401889">"Soha ne engedélyezze"</item>
+ <item msgid="1154273129608299386">"Mindig engedélyezze"</item>
+ </string-array>
+</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 29fb3d5..7c44aef 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Éjszakai mód"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Hálózat és internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobilhálózat"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktív / SIM-kártya"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inaktív / SIM-kártya"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktív / Letöltött SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inaktív / Letöltött SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Továbbiak hozzáadása"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobiladat"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Adathozzáférés a mobilhálózaton keresztül"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Kikapcsolja a mobiladatokat?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Kiválasztás szükséges"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"A(z) <xliff:g id="CARRIER">%1$s</xliff:g> szolgáltatót használja?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"A(z) <xliff:g id="CARRIER2_0">%2$s</xliff:g> szolgáltatót használja a mobiladat-kapcsolathoz. Ha a(z) <xliff:g id="CARRIER1">%1$s</xliff:g> szolgáltatóra vált, az eszköz többé nem használja a(z) <xliff:g id="CARRIER2_1">%2$s</xliff:g> szolgáltatót a mobiladat-kapcsolathoz."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> használata"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Csatlakozás adatszolgáltatásokhoz roaming során"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Engedélyezi az adatroamingot?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Lehet, hogy jelentős összeget számítanak fel érte."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Adathasználat"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Elsődleges adatcsomag"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> felhasználva"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"A Prémium SMS-ek használata pénzbe kerülhet Önnek, és a szolgáltatója által kiállított számlák végösszegét növeli. Ha engedélyt ad valamelyik alkalmazásnak, akkor azzal lehetősége lesz prémium SMS-eket küldeni."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Használati hozzáférés"</string>
<string name="usage_access_description" msgid="2413168719257435422">"A használati hozzáférés lehetővé teszi az alkalmazás számára a következők nyomon követését: Ön milyen más alkalmazásokat használ, milyen gyakran használja őket, valamint szolgáltatóit, nyelvi beállításit és egyéb részleteket."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Mappahozzáférés"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi-vezérlés"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"A Wi-Fi-vezérlés lehetővé teszi az alkalmazás számára a Wi-Fi be- és kikapcsolását, a Wi-Fi-hálózatok keresését és a hozzájuk való kapcsolódást, a hálózatok hozzáadását és eltávolítását, valamint a csak helyi hotspot indítását."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Több"</string>
<string name="location_settings_title" msgid="901334356682423679">"Hely"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Legutóbbi helylekérdezések"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nincsenek friss helylekérdezések"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Engedélyezi az alkalmazásoknak és szolgáltatásoknak, hogy közeli eszközöket keressenek még akkor is, ha ki van kapcsolva a Bluetooth. Ez például a helyalapú funkciók és szolgáltatások javítására használható."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Rendszer"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Rendszerfrissítések"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Nem áll rendelkezésre"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android-verzió"</string>
<string name="security_patch" msgid="4794276590178386903">"Androidos biztonsági hibajavító csomag szintje"</string>
<string name="model_info" msgid="4966408071657934452">"Modell"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kernel verziója"</string>
<string name="build_number" msgid="3997326631001009102">"Buildszám"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-cím"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi MAC-címe"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Nem hozzáférhető"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Állapot"</string>
<string name="device_status" msgid="267298179806290920">"Állapot"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Növekvő, csökkenő vagy ismétlődő számsor megadása nem engedélyezett."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"A képernyőzár beállításai"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> nappal ezelőtt"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Megbízható eszköz hozzáadása"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bekapcsol a Bluetooth az eszköz hozzáadásához"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Megbízható eszközök"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> eszköz</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> eszköz</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"A(z) <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> kapcsolódáskor feloldja az autózárat. Ha valaki elveszi a(z) <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> eszközét, akkor az illető hozzáférhet az eszközhöz"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Megerősítés"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Megbízható eszköz eltávolítása"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Kész"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Állítson be megbízható eszközt a társalkalmazással. A beállítást követően felhasználó profilja automatikusan feloldódik, amint azt észleljük, hogy a telefon a jármű közelében van."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Töltse le telefonjára a társalkalmazást."</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Az eszközök párosításához válassza a(z) <xliff:g id="CAR_NAME">%1$s</xliff:g> elemet a telefonon."</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Az autó közelében lévő megbízható eszközök indításkor feloldják a felhasználói profil zárolását, akkor is, ha éppen másnál van az eszköz."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Ellenőrizze, hogy egyeznek-e a párosítókódok"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"A telefon regisztrációja sikeresen megtörtént"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Nem sikerült a(z) <xliff:g id="DEVICE_NAME">%1$s</xliff:g> regisztrációja"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Ha megbízható eszközt szeretne hozzáadni, akkor a következő lépésben hitelesítési módot kell megadnia. Ha nincs Önnél megbízható eszköze, hitelesítésre lesz szükség a profiljához való hozzáféréshez."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Eszköz leválasztva."</string>
<string name="forget" msgid="3971143908183848527">"Elfelejtés"</string>
<string name="connect" msgid="5861699594602380150">"Csatlakozás"</string>
<string name="disconnect" msgid="6140789953324820336">"Leválasztás"</string>
diff --git a/res/values-hy/arrays.xml b/res/values-hy/arrays.xml
new file mode 100644
index 0000000..dfe8b73
--- /dev/null
+++ b/res/values-hy/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Հարցնել"</item>
+ <item msgid="933409503308401889">"Երբեք չթույլատրել"</item>
+ <item msgid="1154273129608299386">"Միշտ թույլատրել"</item>
+ </string-array>
+</resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 01f3a42..4e18f61 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Գիշերային ռեժիմ"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Ցանց և ինտերնետ"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Բջջային ցանց"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM քարտ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM քարտ</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Ակտիվ է/SIM քարտ"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Ակտիվ չէ/SIM քարտ"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Ակտիվ է/ներբեռնված SIM քարտ"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Ակտիվ չէ/ներբեռնված SIM քարտ"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Ավելացնել"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Բջջային ինտերնետ"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Օգտվել բջջային ինտերնետից"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Անջատե՞լ բջջային ինտերնետը"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Ընտրեք SIM քարտը"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Անցնե՞լ <xliff:g id="CARRIER">%1$s</xliff:g>-ի բջջային ինտերնետին"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Դուք օգտագործում եք <xliff:g id="CARRIER2_0">%2$s</xliff:g>-ի բջջային ինտերնետը։ Եթե անցնեք <xliff:g id="CARRIER1">%1$s</xliff:g>-ին, <xliff:g id="CARRIER2_1">%2$s</xliff:g>-ի բջջային ինտերնետն այլևս չի օգտագործվի։"</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Ընտրել <xliff:g id="CARRIER">%1$s</xliff:g>-ի ցանցը"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Ռոումինգ"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Միանալ տվյալների փոխանցման ծառայություններին ռոումինգում"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Թույլատրե՞լ տվյալների ռոումինգը"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Դրա համար ձեզանից կարող են խոշոր վճարներ գանձվել:"</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Թրաֆիկի օգտագործում"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Հիմնական փաթեթ"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Օգտագործվել է <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Վճարովի SMS-ները կարող են լրացուցիչ գանձումներ առաջացնել: Հավելվածին թույլտվություն տալու դեպքում կկարողանաք դրա միջոցով վճարովի SMS-ներ ուղարկել։"</string>
<string name="usage_access_title" msgid="7153427122072303254">"Օգտագ. տվյալների հասանելիութ."</string>
<string name="usage_access_description" msgid="2413168719257435422">"Օգտագործման մասին տվյալների հասանելիությունը հնարավորություն է տալիս հավելվածներին հավաքել տարբեր տեղեկություններ, օրինակ, այն մասին, թե ուրիշ ինչ հավելվածներ եք օգտագործում և ինչ հաճախականությամբ, որ օպերատորից եք օգտվում, լեզվի ինչ կարգավորումներ եք սահմանել և այլն:"</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Մուտք գրացուցակներ"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi-ի կառավար"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi-ի կառավարը հնարավորություն է տալիս հավելվածներին միացնել և անջատել Wi-Fi-ը, գտնել Wi-Fi ցանցեր և միանալ դրանց, ավելացնել և հեռացնել ցանցեր, միացնել միայն տեղային թեժ կետ:"</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Լրացուցիչ կարգավորումներ"</string>
<string name="location_settings_title" msgid="901334356682423679">"Տեղորոշում"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Տեղադրության տվյալների վերջին հարցումները"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Վերջերս տեղորոշման տվյալների հարցումներ չեն արվել"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Թույլ տալ հավելվածներին և ծառայություններին որոնել մոտակայքում գտնվող սարքեր, նույնիսկ եթե Bluetooth-ն անջատած է: Դա կարող է բարելավել տեղորոշում օգտագործող գործառույթների և ծառայությունների որակը։"</string>
<string name="system_setting_title" msgid="6864599341809463440">"Համակարգ"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Համակարգի թարմացումներ"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Հասանելի չէ"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android-ի տարբերակը"</string>
<string name="security_patch" msgid="4794276590178386903">"Անվտանգության համակարգի վերջին թարմացումը"</string>
<string name="model_info" msgid="4966408071657934452">"Մոդել"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Միջուկի տարբերակը"</string>
<string name="build_number" msgid="3997326631001009102">"Տարբերակի համարը"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-ի հասցե"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi‑Fi սարքի MAC հասցեն"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Հասանելի չէ"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Կարգավիճակ"</string>
<string name="device_status" msgid="267298179806290920">"Կարգավիճակ"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Թվանշանների աճող, նվազող կամ կրկնվող հաջորդականությունն արգելված է:"</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Էկրանի կողպման տարբերակներ"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> – <xliff:g id="NUM_DAYS">%3$s</xliff:g> օր առաջ"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Ավելացնել վստահելի սարք"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth-ը կմիանա, որ վստահելի սարք ավելացնեք"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Վստահելի սարքեր"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> սարք</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> սարք</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Միացված լինելու դեպքում ձեր <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> սարքը կկարողանա ապակողպել այս մեքենան: Եթե ձեր <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>-ը ինչ-որ մեկի մոտ հայտնվի, նա կկարողանա մտնել այս սարք:"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Հաստատել"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Հեռացնել վստահելի սարքը"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Փակել"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Ուղեկցող հավելվածի օգնությամբ կարգավորեք վստահելի սարքը։ Կարգավորումից հետո ձեր պրոֆիլն ավտոմատ կապակողպվի, երբ հեռախոսը միանա մեքենային։"</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Ներբեռնեք ուղեկցող հավելվածը հեռախոսում։"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Սարքերը զուգակցելու համար ընտրեք «<xliff:g id="CAR_NAME">%1$s</xliff:g>» մեքենան հեռախոսում։"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Շարժիչի գործարկումից հետո օգտատիրոջ պրոֆիլը կարող է ապակողպվել ավտոմեքենային մոտ գտնվող սարքի կողմից, նույնիսկ եթե այն մեկ այլ անձի ձեռքում է գտնվում:"</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Հաստատեք, որ զուգակցման կոդերը համընկնում են"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Հեռախոսը գրանցվեց"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Չհաջողվեց գրանցել «<xliff:g id="DEVICE_NAME">%1$s</xliff:g>» սարքը"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Վստահելի սարք ավելացնելու համար ընտրեք նույնականացման եղանակ: Եթե վստահելի սարքը ձեզ մոտ չէ, պրոֆիլ մուտք գործելու համար կպահանջվի նույնականացում:"</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Սարքն անջատված է։"</string>
<string name="forget" msgid="3971143908183848527">"Հեռացնել"</string>
<string name="connect" msgid="5861699594602380150">"Միանալ"</string>
<string name="disconnect" msgid="6140789953324820336">"Անջատել"</string>
diff --git a/res/values-in/arrays.xml b/res/values-in/arrays.xml
new file mode 100644
index 0000000..d40ab17
--- /dev/null
+++ b/res/values-in/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Tanya"</item>
+ <item msgid="933409503308401889">"Jangan pernah izinkan"</item>
+ <item msgid="1154273129608299386">"Selalu izinkan"</item>
+ </string-array>
+</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index c8b30f0..f860097 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Mode malam"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Jaringan & internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Jaringan seluler"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktif / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Tidak aktif / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktif / SIM yang didownload"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Tidak Aktif / SIM yang Didownload"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Tambahkan lainnya"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Kuota"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Akses data menggunakan jaringan seluler"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Nonaktifkan kuota?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Perlu memilih SIM"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Gunakan <xliff:g id="CARRIER">%1$s</xliff:g> untuk kuota?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Anda menggunakan <xliff:g id="CARRIER2_0">%2$s</xliff:g> untuk kuota. Jika Anda beralih ke <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> tidak akan digunakan lagi untuk kuota."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Gunakan <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Hubungkan ke layanan data saat roaming"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Izinkan roaming data?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Anda dapat dikenai biaya yang cukup besar."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Penggunaan data"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Kuota utama"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> digunakan"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"SMS Premium mungkin memerlukan biaya dan akan menambah tagihan operator. Jika izin aplikasi diaktifkan, Anda dapat mengirim SMS premium menggunakan aplikasi tersebut."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Akses penggunaan"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Akses penggunaan memungkinkan aplikasi melacak aplikasi lain yang Anda gunakan dan frekuensi penggunaannya, serta operator, setelan bahasa, dan detail lainnya."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Akses direktori"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Kontrol Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Kontrol Wi-Fi memungkinkan aplikasi mengaktifkan atau menonaktifkan Wi-Fi, memindai dan menghubungkan ke jaringan Wi-Fi, menambahkan atau menghapus jaringan, atau memulai hotspot khusus lokal."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Lainnya"</string>
<string name="location_settings_title" msgid="901334356682423679">"Lokasi"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Permintaan Lokasi Terbaru"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Tidak ada permintaan lokasi terbaru"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Izinkan aplikasi dan layanan memindai perangkat di sekitar kapan saja, meskipun Bluetooth nonaktif. Hal ini dapat dilakukan, misalnya, untuk menyempurnakan fitur dan layanan berbasis lokasi."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Update sistem"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Tidak tersedia"</string>
<string name="firmware_version" msgid="8491753744549309333">"Versi Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Tingkat patch keamanan Android"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Versi kernel"</string>
<string name="build_number" msgid="3997326631001009102">"Nomor versi"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Alamat bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Alamat MAC Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Tidak tersedia"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Urutan digit naik, turun, atau berulang tidak diizinkan."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opsi kunci layar"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> hari yang lalu"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Tambahkan perangkat tepercaya"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth akan aktif guna menambah perangkat dipercaya"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Perangkat tepercaya"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> perangkat</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> perangkat</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> akan membuka kunci mobil Anda saat terhubung. Jika seseorang mengambil <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> Anda, orang tersebut mungkin dapat mengakses perangkat ini"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Konfirmasi"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Hapus perangkat tepercaya"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Selesai"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Gunakan aplikasi pendamping untuk menyiapkan perangkat dipercaya. Setelah disiapkan, profil pengguna akan dibuka kuncinya secara otomatis saat ponsel terdeteksi di dekat kendaraan."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Download aplikasi pendamping di ponsel"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Pilih <xliff:g id="CAR_NAME">%1$s</xliff:g> di ponsel untuk menghubungkan perangkat"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Perangkat dipercaya di dekat mobil Anda akan membuka kunci profil pengguna setelah mobil distarter, meskipun orang lain memegang perangkat."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Konfirmasi bahwa kode penghubung cocok"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Ponsel telah berhasil didaftarkan"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Pendaftaran <xliff:g id="DEVICE_NAME">%1$s</xliff:g> gagal"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Menambahkan perangkat dipercaya mewajibkan Anda menetapkan metode autentikasi setelahnya. Jika Anda tidak membawa perangkat dipercaya, autentikasi akan diperlukan untuk mengakses profil Anda."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Perangkat tidak terhubung."</string>
<string name="forget" msgid="3971143908183848527">"Lupakan"</string>
<string name="connect" msgid="5861699594602380150">"Hubungkan"</string>
<string name="disconnect" msgid="6140789953324820336">"Putuskan hubungan"</string>
diff --git a/res/values-is/arrays.xml b/res/values-is/arrays.xml
new file mode 100644
index 0000000..b283cc2
--- /dev/null
+++ b/res/values-is/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Spyrja"</item>
+ <item msgid="933409503308401889">"Leyfa aldrei"</item>
+ <item msgid="1154273129608299386">"Leyfa alltaf"</item>
+ </string-array>
+</resources>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 91bb5d0..8cb04dc 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Næturstilling"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Netkerfi og internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Farsímakerfi"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-kort</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-kort</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Virk / SIM-kort"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Óvirk / SIM-kort"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Virk / sótt SIM-kort"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Óvirk / sótt SIM-kort"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Bæta fleiri við"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Farsímagögn"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Aðgangur að gögnum um farsímakerfi"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Slökkva á farsímagögnum?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Val er áskilið"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Nota <xliff:g id="CARRIER">%1$s</xliff:g> fyrir farsímagögn?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Þú ert að nota <xliff:g id="CARRIER2_0">%2$s</xliff:g> fyrir farsímagögn. Ef þú skiptir yfir í <xliff:g id="CARRIER1">%1$s</xliff:g> verður <xliff:g id="CARRIER2_1">%2$s</xliff:g> ekki lengur notað fyrir farsímagögn."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Nota <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Reiki"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Tengjast gagnaþjónustu í reiki"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Leyfa gagnareiki?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Þetta getur haft mikinn kostnað í för með sér."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Gagnanotkun"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Aðalgögn"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> notuð"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Sérstök SMS-skilaboð geta kostað þig peninga og munu bætast við símreikninginn þinn. Ef þú virkjar leyfi fyrir forrit geturðu sent sérstök SMS með því forriti."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Notkunaraðgangur"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Aðgangur að notkun gerir forriti kleift að fylgjast með því hvaða önnur forrit þú notar og hversu oft, sem og símafyrirtækinu þínu, tungumálastillingum og öðrum upplýsingum."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Aðgangur að skráasafni"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi stjórnun"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi stjórnun leyfir forriti að kveikja og slökkva á Wi-Fi, leita að og tengjast við Wi-Fi net, bæta við og fjarlægja net og búa til staðbundinn heitan reit."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Meira"</string>
<string name="location_settings_title" msgid="901334356682423679">"Staðsetning"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nýlegar staðsetningarbeiðnir"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Engar nýlegar staðsetningarbeiðnir"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Leyfa forritum og þjónustu að leita að nálægum tækjum hvenær sem er, jafnvel þegar slökkt er á Bluetooth. Sem dæmi er hægt að nota þetta til að bæta eiginleika og þjónustu sem byggja á staðsetningu."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Kerfi"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Kerfisuppfærslur"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Ekki í boði"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android útgáfa"</string>
<string name="security_patch" msgid="4794276590178386903">"Stig Android öryggisplásturs"</string>
<string name="model_info" msgid="4966408071657934452">"Gerð"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kjarnaútgáfa"</string>
<string name="build_number" msgid="3997326631001009102">"Útgáfunúmer smíðar"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-vistfang"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"MAC-vistfang Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Ekki í boði"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Staða"</string>
<string name="device_status" msgid="267298179806290920">"Staða"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Hækkandi, lækkandi eða endurtekin röð tölustafa er óheimil."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Valkostir skjálæsingar"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : Fyrir <xliff:g id="NUM_DAYS">%3$s</xliff:g> dögum"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Bæta við traustu tæki"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Kveikt verður á Bluetooth fyrir nýtt traust tæki"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Traust tæki"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> tæki</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> tæki</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> mun opna þennan bíl þegar það er tengt. Ef einhver kemst yfir <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> kann viðkomandi að geta fengið aðgang að þessu tæki"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Staðfesta"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Fjarlægja traust tæki"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Lokið"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Notaðu fylgiforritið til að setja upp traust tæki. Þegar það hefur verið sett upp mun notandaprófílinn þinn opnast sjálfkrafa þegar borið er kennsl á tækið nálægt ökutækinu."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Sæktu fylgiforritið í símann þinn"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Veldu <xliff:g id="CAR_NAME">%1$s</xliff:g> í símanum til að para tækin"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Traust tæki nálægt bílnum mun opna notandaprófílinn þegar bíllinn er gangsettur, jafnvel þótt einhver annar haldi á tækinu."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Staðfestu að pörunarkóðarnir stemmi"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Síminn hefur verið skráður"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Skráning <xliff:g id="DEVICE_NAME">%1$s</xliff:g> mistókst"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Ef þú bætir við traustu tæki verðurðu að stilla auðkenningarmáta. Ef þú ert ekki með traust tæki við höndina verður auðkenningar krafist til að fá aðgang að prófílnum þínum."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Tæki aftengt."</string>
<string name="forget" msgid="3971143908183848527">"Gleyma"</string>
<string name="connect" msgid="5861699594602380150">"Tengja"</string>
<string name="disconnect" msgid="6140789953324820336">"Aftengja"</string>
diff --git a/res/values-it/arrays.xml b/res/values-it/arrays.xml
new file mode 100644
index 0000000..a7c8a9a
--- /dev/null
+++ b/res/values-it/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Chiedi"</item>
+ <item msgid="933409503308401889">"Non consentire mai"</item>
+ <item msgid="1154273129608299386">"Consenti sempre"</item>
+ </string-array>
+</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 7fc65b1..2c2cfd1 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Modalità notturna"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Rete e Internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Rete mobile"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Attivo/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Non attivo/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Attivo/SIM scaricata"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Non attivo/SIM scaricata"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Aggiungi altri"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Dati mobili"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Accedi ai dati tramite la rete mobile"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Disattivare i dati mobili?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Fai una scelta"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Utilizzare <xliff:g id="CARRIER">%1$s</xliff:g> per i dati mobili?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Al momento utilizzi <xliff:g id="CARRIER2_0">%2$s</xliff:g> per i dati mobili. Se passi a <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> non verrà più utilizzato per i dati mobili."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Usa <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Connetti a servizi di dati in roaming"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Consentire il roaming dei dati?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"I costi potrebbero essere elevati."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Utilizzo dei dati"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Dati principali"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Dati utilizzati: <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Gli SMS premium potrebbero comportare costi, che verranno aggiunti alle fatture del tuo operatore. Se attivi l\'autorizzazione per un\'app, potrai utilizzare tale app per inviare SMS premium."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Accesso ai dati di utilizzo"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Accesso ai dati di utilizzo consente a un\'app di monitorare quali altre app utilizzi e con quale frequenza, oltre a informazioni come operatore, lingua impostata e altri dettagli."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Accesso alla directory"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Controllo del Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Controllo del Wi-Fi consente a un\'app di attivare o disattivare il Wi-Fi, cercare e connettersi a reti Wi-Fi, aggiungere e rimuovere reti oppure avviare un hotspot solo locale."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Altro"</string>
<string name="location_settings_title" msgid="901334356682423679">"Luogo"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Richieste di posizione recenti"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nessuna richiesta di posizione recente"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Consenti ad app e servizi di cercare dispositivi nelle vicinanze in qualsiasi momento, anche quando il Bluetooth non è attivo. Questa funzione è utile, ad esempio, per migliorare funzioni e servizi basati sulla posizione."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Aggiornamenti di sistema"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Non disponibile"</string>
<string name="firmware_version" msgid="8491753744549309333">"Versione Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Livello patch di sicurezza Android"</string>
<string name="model_info" msgid="4966408071657934452">"Modello"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Versione kernel"</string>
<string name="build_number" msgid="3997326631001009102">"Numero build"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Indirizzo Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Indirizzo MAC Wi‑Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Non disponibile"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Stato"</string>
<string name="device_status" msgid="267298179806290920">"Stato"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Non sono consentite sequenze di cifre in ordine crescente o decrescente oppure ripetute."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opzioni di blocco schermo"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> giorni fa"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Aggiungi dispos. attendibile"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth attivato per consentire disp. attend."</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Dispos. attendibili"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dispositivi</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dispositivo</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Il dispositivo <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> consente di sbloccare l\'auto quando è connesso. Se qualcuno prende il tuo dispositivo <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, potrebbe riuscire a eseguire l\'accesso."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Conferma"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Rimuovi dispositivo attendibile"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Fine"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Usa l\'app complementare per configurare un dispositivo attendibile. Dopo la configurazione, il tuo profilo utente viene sbloccato automaticamente quando il tuo telefono viene rilevato nelle vicinanze del veicolo."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Scarica l\'app companion sul tuo telefono"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Seleziona <xliff:g id="CAR_NAME">%1$s</xliff:g> sul tuo telefono per accoppiare i dispositivi"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Un dispositivo attendibile nelle vicinanze della tua auto sbloccherà il profilo utente all\'accensione, anche se non è in mano tua."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Conferma che i codici di accoppiamento corrispondono"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Il telefono è stato registrato"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Registrazione del dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g> non riuscita"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"L\'aggiunta di un dispositivo attendibile comporta necessariamente la successiva impostazione di un metodo di autenticazione. Se non hai con te il dispositivo attendibile, l\'autenticazione dovrà necessariamente accedere al tuo profilo."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Dispositivo disconnesso."</string>
<string name="forget" msgid="3971143908183848527">"Elimina"</string>
<string name="connect" msgid="5861699594602380150">"Collega"</string>
<string name="disconnect" msgid="6140789953324820336">"Scollega"</string>
diff --git a/res/values-iw/arrays.xml b/res/values-iw/arrays.xml
new file mode 100644
index 0000000..76f620c
--- /dev/null
+++ b/res/values-iw/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"יש לשאול"</item>
+ <item msgid="933409503308401889">"אף פעם לא לאפשר"</item>
+ <item msgid="1154273129608299386">"לאפשר תמיד"</item>
+ </string-array>
+</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 6ff7b90..8ecc147 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -31,9 +31,28 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"מצב לילה"</string>
<string name="network_and_internet" msgid="4229023630498537530">"רשת ואינטרנט"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"רשת סלולרית"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="two"><xliff:g id="COUNT_1">%1$d</xliff:g> כרטיסי SIM</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> כרטיסי SIM</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> כרטיסי SIM</item>
+ <item quantity="one">כרטיס SIM אחד (<xliff:g id="COUNT_0">%1$d</xliff:g>)</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"פעיל / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"לא פעיל / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"פעיל / SIM שהורדת"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"לא פעיל / SIM שהורדת"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"הוספה"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"חבילת גלישה"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"שימוש בחבילת הגלישה דרך הרשת הסלולרית"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"לכבות את חבילת הגלישה?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"עליך לבחור אפשרות כלשהי"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"להשתמש ב-<xliff:g id="CARRIER">%1$s</xliff:g> בשביל חבילת גלישה?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"חבילת הגלישה הנוכחית היא של <xliff:g id="CARRIER2_0">%2$s</xliff:g>. אחרי מעבר אל <xliff:g id="CARRIER1">%1$s</xliff:g>, יופסק השימוש בחבילת הגלישה של <xliff:g id="CARRIER2_1">%2$s</xliff:g>."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"שימוש ב-<xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"נדידה"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"חיבור לשירותי נתונים בנדידה"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"האם לאפשר נדידה?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"ייתכנו שיעורי חיוב גבוהים."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"שימוש בחבילת הגלישה"</string>
<string name="data_usage_title" msgid="2923515974389203812">"נתונים עיקריים"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"נעשה שימוש ב-<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -324,12 +343,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"החיובים תמורת שליחה של הודעות SMS בתשלום, אם יהיו, יצורפו לחשבונות הספק שלך. לאחר שמפעילים את ההרשאה לאפליקציה כלשהי, ניתן לשלוח באמצעותה הודעות SMS בתשלום."</string>
<string name="usage_access_title" msgid="7153427122072303254">"גישה לנתוני השימוש"</string>
<string name="usage_access_description" msgid="2413168719257435422">"גישה לנתוני השימוש מאפשרת לאפליקציה לעקוב אחר האפליקציות האחרות שנעשה בהן שימוש ואחר תדירות השימוש בהן. המידע כולל גם את זהות הספק, הגדרות השפה ופרטים אחרים."</string>
- <!-- no translation found for directory_access_title (7117264853202268740) -->
- <skip />
- <!-- no translation found for directory_on_volume (4947971311247097078) -->
- <skip />
<string name="wifi_control_title" msgid="5660436566907731929">"שליטה ב-Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"שליטה ב-Wi-Fi מאפשרת לאפליקציות להפעיל ולכבות חיבור Wi-Fi, לסרוק רשתות Wi-Fi ולהתחבר אליהן, להוסיף ולהסיר רשתות או להפעיל נקודה לשיתוף אינטרנט באופן מקומי בלבד."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"עוד"</string>
<string name="location_settings_title" msgid="901334356682423679">"מיקום"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"בקשות של מיקומים אחרונים"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"אין בקשות של מיקומים אחרונים"</string>
@@ -342,8 +358,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"אפליקציות ושירותים יוכלו לסרוק מכשירים בקרבת מקום בכל עת, גם כאשר ה-Bluetooth כבוי. ניתן להשתמש בכך, למשל, כדי לשפר תכונות ושירותים מבוססי מיקום."</string>
<string name="system_setting_title" msgid="6864599341809463440">"מערכת"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"עדכוני מערכת"</string>
- <!-- no translation found for status_unavailable (3737918179898732010) -->
- <skip />
<string name="firmware_version" msgid="8491753744549309333">"גרסת Android"</string>
<string name="security_patch" msgid="4794276590178386903">"רמת תיקון האבטחה ב-Android"</string>
<string name="model_info" msgid="4966408071657934452">"דגם"</string>
@@ -351,8 +365,6 @@
<string name="kernel_version" msgid="7327212934187011508">"גרסת ליבה"</string>
<string name="build_number" msgid="3997326631001009102">"מספר Build"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"כתובת Bluetooth"</string>
- <!-- no translation found for about_wifi_mac_address (3934228440550548053) -->
- <skip />
<string name="device_info_not_available" msgid="2095601973977376655">"לא זמין"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"סטטוס"</string>
<string name="device_status" msgid="267298179806290920">"סטטוס"</string>
@@ -630,6 +642,28 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"אין להגדיר רצף ספרות עולה, יורד או חוזר."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"אפשרויות נעילת מסך"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : לפני <xliff:g id="NUM_DAYS">%3$s</xliff:g> ימים"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"הוספת מכשיר מהימן"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth יופעל לצורך הוספת מכשיר מהימן"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"מכשירים מהימנים"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> מכשירים</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> מכשירים</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> מכשירים</item>
+ <item quantity="one">מכשיר אחד (<xliff:g id="COUNT_0">%d</xliff:g>)</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"ה-<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> שלך יבטל את נעילה המכונית הזו כשהוא מחובר. אם מישהו ייקח את ה-<xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, הוא יוכל לגשת אל המכשיר הזה"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"אישור"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"הסרת מכשיר מהימן"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"סיום"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"יש להשתמש באפליקציה הנלווית כדי להגדיר מכשיר מהימן. לאחר ההגדרה, הנעילה של פרופיל המשתמש תבוטל באופן אוטומטי כשהטלפון שלך יזוהה ליד הרכב."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. יש להוריד את האפליקציה הנלווית לטלפון שלך"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. יש לבחור את <xliff:g id="CAR_NAME">%1$s</xliff:g> בטלפון כדי להתאים את המכשירים"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"מכשיר מהימן בקרבת המכונית שלך יבטל את פרופיל המשתמש עם ההתנעה, גם אם המכשיר נמצא בידי מישהו אחר."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"יש לאשר שקודי ההתאמה תואמים"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"רישום הטלפון הסתיים בהצלחה"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"ההרשמה של <xliff:g id="DEVICE_NAME">%1$s</xliff:g> נכשלה"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"כדי להוסיף מכשיר מהימן, צריך להגדיר שיטת אימות בשלב הבא. אם המכשיר המהימן לא נמצא ברשותך, יידרש אימות כדי לקבל גישה לפרופיל שלך."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"המכשיר נותק."</string>
<string name="forget" msgid="3971143908183848527">"מחיקה"</string>
<string name="connect" msgid="5861699594602380150">"חיבור"</string>
<string name="disconnect" msgid="6140789953324820336">"ניתוק"</string>
diff --git a/res/values-ja/arrays.xml b/res/values-ja/arrays.xml
new file mode 100644
index 0000000..cec41ae
--- /dev/null
+++ b/res/values-ja/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"確認する"</item>
+ <item msgid="933409503308401889">"許可しない"</item>
+ <item msgid="1154273129608299386">"常に許可する"</item>
+ </string-array>
+</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index f38cfcf..32c434f 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"夜間モード"</string>
<string name="network_and_internet" msgid="4229023630498537530">"ネットワークとインターネット"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"モバイル ネットワーク"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other">SIM: <xliff:g id="COUNT_1">%1$d</xliff:g> 枚</item>
+ <item quantity="one">SIM: <xliff:g id="COUNT_0">%1$d</xliff:g> 枚</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"有効 / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"無効 / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"有効 / ダウンロード型 SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"無効 / ダウンロード型 SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"追加"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"モバイルデータ"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"モバイル ネットワーク経由でデータにアクセス"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"モバイルデータを OFF にしますか?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"選択してください"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"モバイルデータに <xliff:g id="CARRIER">%1$s</xliff:g> を使用?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"モバイルデータに <xliff:g id="CARRIER2_0">%2$s</xliff:g> を使用しています。<xliff:g id="CARRIER1">%1$s</xliff:g> に切り替えると、モバイルデータに <xliff:g id="CARRIER2_1">%2$s</xliff:g> は使用されなくなります。"</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> を使用"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"ローミング"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"ローミング中にデータサービスに接続する"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"データ ローミングを許可しますか?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"高額な通信料が発生することがあります。"</string>
<string name="data_usage_settings" msgid="7877132994777987848">"データ使用"</string>
<string name="data_usage_title" msgid="2923515974389203812">"メインデータ"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> 使用"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"プレミアム SMS で料金が発生した場合は、携帯通信会社の請求に加算されます。アプリで権限を有効にすると、そのアプリを使用してプレミアム SMS を送信できるようになります。"</string>
<string name="usage_access_title" msgid="7153427122072303254">"使用状況へのアクセス"</string>
<string name="usage_access_description" msgid="2413168719257435422">"「使用状況へのアクセス」により、アプリは他のアプリの使用状況、使用頻度、携帯通信会社、言語設定などの情報を追跡できるようになります。"</string>
- <string name="directory_access_title" msgid="7117264853202268740">"ディレクトリへのアクセス"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g>(<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi の管理"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"「Wi-Fi の管理」により、アプリは Wi-Fi のオン / オフ切り替え、Wi-Fi ネットワークのスキャンと接続、ネットワークの追加と削除、ローカル専用アクセス ポイントの起動を行えるようになります。"</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"その他"</string>
<string name="location_settings_title" msgid="901334356682423679">"位置情報"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"最近の位置情報リクエスト"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"最近の位置情報リクエストはありません"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"アプリやサービスに対し、Bluetooth が OFF の場合でも、常に付近のデバイスをスキャンすることを許可します。たとえば、位置情報を使用する機能やサービスの改善に役立ちます。"</string>
<string name="system_setting_title" msgid="6864599341809463440">"システム"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"システム アップデート"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"使用不可"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android のバージョン"</string>
<string name="security_patch" msgid="4794276590178386903">"Android セキュリティ パッチレベル"</string>
<string name="model_info" msgid="4966408071657934452">"モデル"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"カーネル バージョン"</string>
<string name="build_number" msgid="3997326631001009102">"ビルド番号"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth アドレス"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi MAC アドレス"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"該当なし"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"ステータス"</string>
<string name="device_status" msgid="267298179806290920">"ステータス"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"一連の数字を昇順や降順にしたり、繰り返したりすることはできません。"</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"画面ロックの方法"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> 日前"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"信頼できるデバイスを追加"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"信頼できるデバイスを追加(Bluetooth: ON)"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"信頼できるデバイス"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 台のデバイス</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 台のデバイス</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"接続すると、<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> によりこの車のロックが解除されます。<xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> が第三者の手に渡ると、このデバイスを利用されてしまうおそれがあります"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"確認"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"信頼できるデバイスを削除"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"完了"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"コンパニオン アプリを使用して、信頼できるデバイスをセットアップしてください。セットアップすると、車の近くでスマートフォンが検出されたときにユーザー プロフィールが自動的にロック解除されます。"</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. スマートフォンにコンパニオン アプリをダウンロードします"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. スマートフォンで、デバイスとペア設定する <xliff:g id="CAR_NAME">%1$s</xliff:g> を選択します"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"信頼できるデバイスが車の近くにある場合、第三者がそのデバイスを手に取っている場合でも、エンジン始動時にユーザー プロフィールがロック解除されます。"</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"ペア設定コードが一致していることをご確認ください"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"スマートフォンを登録しました"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> の登録に失敗しました"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"信頼できるデバイスを追加するには、次に認証方式を設定してください。信頼できるデバイスがない場合は、プロフィールにアクセスする際に認証が必要になります。"</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"デバイスの接続が解除されました。"</string>
<string name="forget" msgid="3971143908183848527">"削除"</string>
<string name="connect" msgid="5861699594602380150">"接続"</string>
<string name="disconnect" msgid="6140789953324820336">"接続を解除"</string>
diff --git a/res/values-ka/arrays.xml b/res/values-ka/arrays.xml
new file mode 100644
index 0000000..8031d70
--- /dev/null
+++ b/res/values-ka/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"შეკითხვა"</item>
+ <item msgid="933409503308401889">"არასოდეს დაშვება"</item>
+ <item msgid="1154273129608299386">"ყოველთვის დაშვება"</item>
+ </string-array>
+</resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 38c7a53..b958973 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"ღამის რეჟიმი"</string>
<string name="network_and_internet" msgid="4229023630498537530">"ქსელი და ინტერნეტი"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"მობილური ქსელი"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-ბარათი</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM-ბარათი</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"აქტიური / SIM ბარათი"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"არააქტიური / SIM ბარათი"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"აქტიური / ჩამოტვირთული SIM ბარათი"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"არააქტიური / ჩამოტვირთული SIM ბარათი"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"დამატება"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"მობილური ინტერნეტი"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"მონაცემებზე წვდომა მობილური ქსელით"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"გსურთ მობილური ინტერნეტის გამორთვა?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"არჩევა სავალდებულოა"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"გამოიყენებთ <xliff:g id="CARRIER">%1$s</xliff:g>-ს მობ. ინტ.-თვის?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"თქვენ იყენებთ <xliff:g id="CARRIER2_0">%2$s</xliff:g>-ს მობილური ინტერნეტისთვის. თუ <xliff:g id="CARRIER1">%1$s</xliff:g>-ზე გადაერთვებით, <xliff:g id="CARRIER2_1">%2$s</xliff:g> აღარ იქნება გამოყენებული მობილური ინტერნეტისთვის."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g>-ის გამოყენება"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"როუმინგი"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"როუმინგის დროს მონაცემთა სერვისებთან დაკავშირება"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"გსურთ, ჩაირთოს მობილური ინტერნეტის როუმინგი?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"ეს შეიძლება დიდ ხარჯებთან იყოს დაკავშირებული."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"მონაცემთა მოხმარება"</string>
<string name="data_usage_title" msgid="2923515974389203812">"ძირითადი მონაცემები"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"გამოყენებულია <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"პრემიუმ SMS შეტყობინებებისთვის შეიძლება დამატებითი საფასურის გადახდა მოგიწიოთ. აპისთვის ამ ნებართვის მიცემის შემთხვევაში, თქვენ მისი მეშვეობით პრემიუმ SMS შეტყობინებების გაგზავნას შეძლებთ."</string>
<string name="usage_access_title" msgid="7153427122072303254">"გამოყენებაზე წვდომა"</string>
<string name="usage_access_description" msgid="2413168719257435422">"გამოყენებაზე წვდომა საშუალებას აძლევს აპს, თვალყური ადევნოს, სხვა რომელ აპებს იყენებთ და რამდენად ხშირად, ასევე თქვენს ოპერატორს, ენის პარამეტრებსა და სხვა დეტალებს."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"კატალოგზე წვდომა"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi-ს მართვა"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi-ს მართვა საშუალებას აძლევს აპს, ჩართოს ან გამორთოს Wi-Fi, მოახდინოს სკანირება Wi-Fi ქსელების აღმოსაჩენად და მათთან დასაკავშირებლად, დაამატოს ან ამოშალოს ქსელები, ან გაუშვას მხოლოდ ადგილობრივი მოხმარების უსადენო ქსელი."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"მეტი"</string>
<string name="location_settings_title" msgid="901334356682423679">"მდებარეობა"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"მდებარეობის ბოლოდროინდელი მოთხოვნები"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"მდებარეობის ბოლოდროინდელი მოთხოვნები არ არის"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"აპებისა და სერვისებისთვის ახლომდებარე მოწყობილობების ნებისმიერ დროს სკანირების დაშვება, მაშინაც კი, როცა Bluetooth გამორთულია. მაგალითად, აღნიშნული გამოიყენება მდებარეობაზე დაფუძნებული ფუნქციებისა და სერვისების გასაუმჯობესებლად."</string>
<string name="system_setting_title" msgid="6864599341809463440">"სისტემა"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"სისტემის განახლებები"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"მიუწვდომელია"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android-ის ვერსია"</string>
<string name="security_patch" msgid="4794276590178386903">"Android-ის უსაფრთხოების ნაწილაკის დონე"</string>
<string name="model_info" msgid="4966408071657934452">"მოდელი"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"kernel-ის ვერსია"</string>
<string name="build_number" msgid="3997326631001009102">"ანაწყობის ნომერი"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth მისამართი"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi‑Fi MAC მისამართი"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"მიუწვდომელი"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"სტატუსი"</string>
<string name="device_status" msgid="267298179806290920">"სტატუსი"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ციფრების ზრდადი, კლებადი ან გამეორებადი მიმდევრობის გამოყენება ნებადართული არ არის."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ეკრანის დაბლოკვის ვარიანტები"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> დღის წინ"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"სანდო მოწყობილობის დამატება"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"სანდო მოწყობილ. დასამატებლად Bluetooth ჩაირთვება"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"სანდო მოწყობილობები"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> მოწყობილობა</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> მოწყობილობა</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"თქვენი <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> განბლოკავს ამ მანქანას, როცა ის დაკავშირებული იქნება. თუ თქვენი <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> სხვის ხელში აღმოჩნდება, ის შეძლებს ამ მოწყობილობაზე წვდომას."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"დადასტურება"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"სანდო მოწყობილობის ამოშლა"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"მზადაა"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"სანდო მოწყობილობის დასაყენებლად გამოიყენეთ კომპანიონი აპი. დაყენების შემდეგ თქვენი მომხმარებლის პროფილი ავტომატურად განიბლოკება, როცა თქვენ ტელეფონი ავტომობილთან ახლოს დაფიქსირდება."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. ჩამოტვირთეთ კომპანიონი აპი თქვენს ტელეფონზე"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. თქვენს ტელეფონზე აირჩიეთ <xliff:g id="CAR_NAME">%1$s</xliff:g> მოწყობილობების დასაწყვილებლად"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"თქვენს ავტომობილთან ახლოს მდებარე სანდო მოწყობილობა განბლოკავს მომხმარებლის პროფილს აალებისას, მაშინაც კი, თუ მოწყობილობა სხვას უკავია."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"გთხოვთ, დაადასტუროთ, რომ დაკავშირების კოდები ემთხვევა"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"ტელეფონი წარმატებით დარეგისტრირდა"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-ის რეგისტრაცია ვერ მოხერხდა"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"სანდო მოწყობილობის დასამატებლად მომდევნო ეტაპზე საჭირო იქნება ავტორიზაციის მეთოდის დაყენება. ავტორიზაცია საჭირო იქნება თქვენს პროფილზე წვდომისთვის, როცა სანდო მოწყობილობა თან არ გექნებათ."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"მოწყობილობის კავშირი გათიშულია."</string>
<string name="forget" msgid="3971143908183848527">"დავიწყება"</string>
<string name="connect" msgid="5861699594602380150">"დაკავშირება"</string>
<string name="disconnect" msgid="6140789953324820336">"კავშირის გაწყვეტა"</string>
diff --git a/res/values-kk/arrays.xml b/res/values-kk/arrays.xml
new file mode 100644
index 0000000..27c0187
--- /dev/null
+++ b/res/values-kk/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Сұрау"</item>
+ <item msgid="933409503308401889">"Ешқашан рұқсат бермеу"</item>
+ <item msgid="1154273129608299386">"Әрдайым рұқсат беру"</item>
+ </string-array>
+</resources>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index b2a0f5d..8df952b 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Түнгі режим"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Желі және интернет"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Мобильдік желі"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM картасы</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM картасы</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Іске қосулы/SIM картасы"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Іске қосылмаған/SIM картасы"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Іске қосулы/Жүктеп алынған SIM картасы"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Өшірулі/Жүктеп алынған SIM картасы"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Тағы енгізу"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобильдік интернет"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Деректерге мобильдік желі арқылы кіру"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Мобильдік интернет өшірілсін бе?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Таңдаңыз"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Мобильдік интернет үшін <xliff:g id="CARRIER">%1$s</xliff:g> қолданылсын ба?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Мобильдік интернет үшін <xliff:g id="CARRIER2_0">%2$s</xliff:g> операторын пайдаланып жатырсыз. Егер <xliff:g id="CARRIER1">%1$s</xliff:g> операторына ауыссаңыз, мобильдік интернет үшін <xliff:g id="CARRIER2_1">%2$s</xliff:g> бұдан әрі пайдаланылмайтын болады."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> операторын пайдалану"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Роуминг"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Роуминг кезінде дерек тасымалдау қызметтеріне қосылу"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Деректер роумингіне рұқсат етілсін бе?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Қомақты ақы алынуы мүмкін."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Дерек трафигі"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Негізгі деректер"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> пайдаланылды."</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Ақылы SMS жіберу үшін оператор тарифтеріне сәйкес ақы алынады. Егер қолданбаға рұқсат берсеңіз, сол қолданба арқылы ақылы SMS жібере аласыз."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Пайдалану тарихын көру"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Пайдалану тарихын көру мүмкіндігі қолданбаға сіз пайдаланатын басқа қолданбаларды және қаншалықты жиі пайдаланатыңыз туралы ақпаратты, сондай-ақ операторды, тіл параметрлерін және басқа мәліметтерді бақылауға мүмкіндік береді."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Каталогке кіру"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi желісін басқару"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi желісін басқару функциясы қолданбаға Wi-Fi желісін қосуға немесе өшіруге, Wi-Fi желілерін іздеуге және оларға жалғануға, желілерді енгізуге не өшіруге немесе тек жергілікті хотспотты іске қосуға рұқсат етеді."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Тағы"</string>
<string name="location_settings_title" msgid="901334356682423679">"Орналасқан жер"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Жақында жасалған орналасқан жерді анықтау сұраулары"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Орналасқан жерді анықтау сұраулары жақында жасалмаған"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Bluetooth өшірулі болса да, қолданбалар мен қызметтерге маңайдағы құрылғыларды іздеуге рұқсат беру. Бұл параметрді, мысалы, геодеректер негізіндегі функциялар мен қызметтерді жақсарту үшін пайдалануға болады."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Жүйе"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Жүйенің жаңа нұсқалары"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Қолжетімді емес"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android нұсқасы"</string>
<string name="security_patch" msgid="4794276590178386903">"Android қауіпсіздік түзетуінің деңгейі"</string>
<string name="model_info" msgid="4966408071657934452">"Үлгісі"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Ядро нұсқасы"</string>
<string name="build_number" msgid="3997326631001009102">"Жинақ нөмірі"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth мекенжайы"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi‑Fi MAC мекенжайы"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Қолжетімді емес"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Күйі"</string>
<string name="device_status" msgid="267298179806290920">"Күйі"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Сандардың артатын, кемитін немесе қайталанатын ретіне рұқсат берілмейді"</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Экранды құлыптау опциялары"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> күн бұрын"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Сенімді құрылғыны қосу"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Сенімді құрылғы енгізу үшін Bluetooth қосылады"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Сенімді құрылғылар"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> құрылғы</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> құрылғы</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> жалғанған кезде, ол көлігіңіздің құлпын ашады. Әлдекім <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> құрылғыңызды алса, оған осы құрылғыға кіре алады."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Растау"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Сенімді құрылғыны өшіру"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Дайын"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Сенімді құрылғыны реттеу үшін қосымша қолданбаны пайдаланыңыз. Реттелгеннен кейін, телефонды көлік анықтаған кезде, пайдаланушы профилі автоматты түрде ашылады."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Телефоныңызға қосымша қолданбаны жүктеп алыңыз."</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Құрылғыларды жұптау үшін телефоныңыздан <xliff:g id="CAR_NAME">%1$s</xliff:g> көлігін таңдаңыз."</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Көліктің маңайындағы сенімді құрылғы басқа біреуде болса да, пайдаланушы профилінің құлпын ашады."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Жұптау кодтарының сәйкес екенін растаңыз"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Телефон сәтті тіркелді"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> тіркелмеді."</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Сенімді құрылғыны енгізу үшін аутентификация әдісін орнату қажет. Сенімді құрылғыңыз болмаса, профильге кіру үшін аутентификация керек."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Құрылғы ажыратылды."</string>
<string name="forget" msgid="3971143908183848527">"Ұмыту"</string>
<string name="connect" msgid="5861699594602380150">"Жалғау"</string>
<string name="disconnect" msgid="6140789953324820336">"Ажырату"</string>
diff --git a/res/values-km/arrays.xml b/res/values-km/arrays.xml
new file mode 100644
index 0000000..e68f971
--- /dev/null
+++ b/res/values-km/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"សួរ"</item>
+ <item msgid="933409503308401889">"កុំអនុញ្ញាតឱ្យសោះ"</item>
+ <item msgid="1154273129608299386">"អនុញ្ញាតជានិច្ច"</item>
+ </string-array>
+</resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 080fbdd..c079180 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"មុខងារយប់"</string>
<string name="network_and_internet" msgid="4229023630498537530">"បណ្តាញ និងអ៊ីនធឺណិត"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"បណ្ដាញទូរសព្ទចល័ត"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other">ស៊ីម <xliff:g id="COUNT_1">%1$d</xliff:g></item>
+ <item quantity="one">ស៊ីម <xliff:g id="COUNT_0">%1$d</xliff:g></item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"សកម្ម / ស៊ីម"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"អសកម្ម / ស៊ីម"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"សកម្ម / ស៊ីមដែលបានទាញយក"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"អសកម្ម / ស៊ីមដែលបានទាញយក"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"បញ្ចូលបន្ថែមទៀត"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"ទិន្នន័យទូរសព្ទចល័ត"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"ចូលប្រើទិន្នន័យដោយប្រើបណ្ដាញទូរសព្ទចល័ត"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"បិទទិន្នន័យទូរសព្ទចល័ត?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"តម្រូវឱ្យមានការជ្រើសរើស"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"ប្រើ <xliff:g id="CARRIER">%1$s</xliff:g> សម្រាប់ទិន្នន័យទូរសព្ទចល័ត?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"អ្នកកំពុងប្រើប្រាស់ <xliff:g id="CARRIER2_0">%2$s</xliff:g> សម្រាប់ទិន្នន័យទូរសព្ទចល័ត។ ប្រសិនបើអ្នកប្ដូរទៅ <xliff:g id="CARRIER1">%1$s</xliff:g> <xliff:g id="CARRIER2_1">%2$s</xliff:g> នឹងមិនត្រូវបានប្រើសម្រាប់ទិន្នន័យទូរសព្ទចល័តទៀតទេ។"</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"ប្រើ <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"រ៉ូមីង"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"ភ្ជាប់សេវាកម្មទិន្នន័យ នៅពេលរ៉ូមីង"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"អនុញ្ញាតឱ្យប្រើការរ៉ូមីងទិន្នន័យ?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"អាចនឹងមានការគិតថ្លៃខ្ពស់ពីអ្នក។"</string>
<string name="data_usage_settings" msgid="7877132994777987848">"ការប្រើទិន្នន័យ"</string>
<string name="data_usage_title" msgid="2923515974389203812">"ទិន្នន័យចម្បង"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"បានប្រើអស់ <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"សេវាកម្ម SMS បង់ប្រាក់អាចនឹងគិតថ្លៃពីអ្នក ហើយបញ្ចូលតម្លៃនោះទៅក្នុងការគិតថ្លៃតាមក្រុមហ៊ុនសេវាទូរសព្ទរបស់អ្នក។ ប្រសិនបើអ្នកបើកការអនុញ្ញាតសម្រាប់កម្មវិធី នោះអ្នកនឹងអាចផ្ញើសេវាកម្ម SMS បង់ប្រាក់ដោយប្រើកម្មវិធីនោះ។"</string>
<string name="usage_access_title" msgid="7153427122072303254">"ការចូលប្រើប្រាស់"</string>
<string name="usage_access_description" msgid="2413168719257435422">"ការចូលប្រើប្រាស់អនុញ្ញាតឱ្យកម្មវិធីតាមដានកម្មវិធីផ្សេងទៀតដែលអ្នកកំពុងប្រើ និងប្រើប្រាស់ញឹកញាប់កម្រិតណា ហើយវាក៏តាមដានក្រុមហ៊ុនសេវាទូរសព្ទ ការកំណត់ភាសា និងព័ត៌មានលម្អិតផ្សេងទៀតរបស់អ្នកផងដែរ។"</string>
- <string name="directory_access_title" msgid="7117264853202268740">"ការចូលប្រើបញ្ជី"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"ការគ្រប់គ្រង Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"ការគ្រប់គ្រង Wi-Fi អនុញ្ញាតឱ្យកម្មវិធីបើក ឬបិទ Wi-Fi ស្កេន និងភ្ជាប់បណ្តាញ Wi-Fi បញ្ចូល ឬលុបបណ្តាញ ឬចាប់ផ្តើមតែហតស្ប៉តមូលដ្ឋានប៉ុណ្ណោះ។"</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"ច្រើនទៀត"</string>
<string name="location_settings_title" msgid="901334356682423679">"ទីតាំង"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"សំណើទីតាំងថ្មីៗ"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"គ្មានសំណើទីតាំងថ្មីៗទេ"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"អនុញ្ញាតឱ្យកម្មវិធី និងសេវាកម្មស្កេនរកឧបករណ៍ដែលនៅជិតបានគ្រប់ពេល ទោះបីជាប៊្លូធូសបិទក៏ដោយ។ ឧទាហរណ៍ សកម្មភាពនេះអាចត្រូវបានប្រើ ដើម្បីកែលម្អមុខងារ និងសេវាកម្មនានាដែលផ្អែកលើទីតាំង។"</string>
<string name="system_setting_title" msgid="6864599341809463440">"ប្រព័ន្ធ"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"បច្ចុប្បន្នភាពប្រព័ន្ធ"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"មិនមាន"</string>
<string name="firmware_version" msgid="8491753744549309333">"កំណែ Android"</string>
<string name="security_patch" msgid="4794276590178386903">"កម្រិតបំណះសុវត្ថិភាព Android"</string>
<string name="model_info" msgid="4966408071657934452">"ម៉ូដែល"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"កំណែខឺណែល"</string>
<string name="build_number" msgid="3997326631001009102">"លេខកំណែបង្កើត"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"អាសយដ្ឋានប៊្លូធូស"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"អាសយដ្ឋាន Wi‑Fi MAC"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"មិនមានទេ"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"ស្ថានភាព"</string>
<string name="device_status" msgid="267298179806290920">"ស្ថានភាព"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"មិនអនុញ្ញាតឱ្យមានលេខលំដាប់ឡើង ចុះ ឬដដែលៗទេ។"</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ជម្រើសការចាក់សោអេក្រង់"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\nថ្ងៃ <xliff:g id="DATE">%2$s</xliff:g>៖ <xliff:g id="NUM_DAYS">%3$s</xliff:g> ថ្ងៃមុន"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"បញ្ចូលឧបករណ៍ដែលទុកចិត្ត"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"ប៊្លូធូសនឹងបើក ដើម្បីបញ្ចូលឧបករណ៍ដែលទុកចិត្ត"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"ឧបករណ៍ដែលទុកចិត្ត"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other">ឧបករណ៍ <xliff:g id="COUNT_1">%d</xliff:g></item>
+ <item quantity="one">ឧបករណ៍ <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> របស់អ្នកនឹងដោះសោរថយន្តនេះ នៅពេលភ្ជាប់។ ប្រសិនបើនរណាម្នាក់យក <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> របស់អ្នក បុគ្គលនោះអាចនឹងចូលប្រើឧបករណ៍នេះបាន"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"បញ្ជាក់"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"លុបឧបករណ៍ដែលទុកចិត្ត"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"រួចរាល់"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"ប្រើកម្មវិធីដៃគូ ដើម្បីរៀបចំឧបករណ៍ដែលទុកចិត្ត។ បន្ទាប់ពីរៀបចំរួចហើយ កម្រងព័ត៌មានអ្នកប្រើប្រាស់របស់អ្នកនឹងដោះសោដោយស្វ័យប្រវត្តិ នៅពេលចាប់បានទូរសព្ទរបស់អ្នកនៅជិតយានជំនិះ។"</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. ទាញយកកម្មវិធីដៃគូនៅលើទូរសព្ទរបស់អ្នក"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. ជ្រើសរើស <xliff:g id="CAR_NAME">%1$s</xliff:g> នៅលើទូរសព្ទរបស់អ្នក ដើម្បីផ្គូផ្គងឧបករណ៍"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"ឧបករណ៍ទុកចិត្តដែលនៅជិតរថយន្តរបស់អ្នកនឹងដោះសោកម្រងព័ត៌មានអ្នកប្រើប្រាស់នៅពេលបញ្ឆេះរថយន្ត ទោះបីជាអ្នកផ្សេងកំពុងកាន់ឧបករណ៍នោះក៏ដោយ។"</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"សូមបញ្ជាក់ថាកូដផ្គូផ្គងមានភាពត្រូវគ្នា"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"បានចុះឈ្មោះទូរសព្ទដោយជោគជ័យ"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"មិនអាចចុះឈ្មោះ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> បានទេ"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"ការបញ្ចូលឧបករណ៍ដែលទុកចិត្តតម្រូវឱ្យអ្នកកំណត់វិធីផ្ទៀងផ្ទាត់បន្ទាប់។ ប្រសិនបើអ្នកគ្មានឧបករណ៍ដែលទុកចិត្តជាប់ខ្លួនអ្នកទេ នោះនឹងតម្រូវឱ្យមានការផ្ទៀងផ្ទាត់ ដើម្បីចូលប្រើកម្រងព័ត៌មានរបស់អ្នក។"</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"បានផ្តាច់ឧបករណ៍។"</string>
<string name="forget" msgid="3971143908183848527">"បំភ្លេច"</string>
<string name="connect" msgid="5861699594602380150">"ភ្ជាប់"</string>
<string name="disconnect" msgid="6140789953324820336">"ផ្ដាច់"</string>
diff --git a/res/values-kn/arrays.xml b/res/values-kn/arrays.xml
new file mode 100644
index 0000000..e4fc3ea
--- /dev/null
+++ b/res/values-kn/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"ಕೇಳಿ"</item>
+ <item msgid="933409503308401889">"ಎಂದಿಗೂ ಅನುಮತಿಸಬೇಡಿ"</item>
+ <item msgid="1154273129608299386">"ಯಾವಾಗಲೂ ಅನುಮತಿಸಿ"</item>
+ </string-array>
+</resources>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index ba32375..5711879 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"ರಾತ್ರಿ ಮೋಡ್"</string>
<string name="network_and_internet" msgid="4229023630498537530">"ನೆಟ್ವರ್ಕ್ ಮತ್ತು ಇಂಟರ್ನೆಟ್"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ಸಿಮ್ಗಳು</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ಸಿಮ್ಗಳು</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"ಸಕ್ರಿಯ / ಸಿಮ್"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"ಸಕ್ರಿಯವಾಗಿರದ / ಸಿಮ್"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"ಸಕ್ರಿಯ / ಡೌನ್ಲೋಡ್ ಮಾಡಿದ SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"ಸಕ್ರಿಯವಾಗಿರದ / ಡೌನ್ಲೋಡ್ ಮಾಡಿದ ಸಿಮ್"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"ಇನ್ನಷ್ಟು ಸೇರಿಸಿ"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"ಮೊಬೈಲ್ ಡೇಟಾ"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್ ಬಳಸಿ ಡೇಟಾ ಪ್ರವೇಶಿಸಿ"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"ಮೊಬೈಲ್ ಡೇಟಾ ಆಫ್ ಮಾಡಬೇಕೆ?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"ಆಯ್ಕೆ ಅಗತ್ಯವಿದೆ"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"ಮೊಬೈಲ್ ಡೇಟಾಗಾಗಿ <xliff:g id="CARRIER">%1$s</xliff:g> ಬಳಸುವುದೇ?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"ಮೊಬೈಲ್ ಡೇಟಾಗಾಗಿ ನೀವು <xliff:g id="CARRIER2_0">%2$s</xliff:g> ಬಳಸುತ್ತಿರುವಿರಿ. ನೀವು <xliff:g id="CARRIER1">%1$s</xliff:g> ಗೆ ಬದಲಾಯಿಸಿದರೆ, ಇನ್ನು ಮುಂದೆ <xliff:g id="CARRIER2_1">%2$s</xliff:g> ಅನ್ನು ಮೊಬೈಲ್ ಡೇಟಾಗಾಗಿ ಬಳಸಲಾಗುವುದಿಲ್ಲ."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> ಅನ್ನು ಬಳಸಿ"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"ರೋಮಿಂಗ್"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"ರೋಮಿಂಗ್ನಲ್ಲಿರುವಾಗ ಡೇಟಾ ಸೇವೆಗಳಿಗೆ ಸಂಪರ್ಕಿಸಿ"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"ಡೇಟಾ ರೋಮಿಂಗ್ ಅನುಮತಿಸುವುದೇ?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"ನೀವು ಗಣನೀಯವಾಗಿ ಶುಲ್ಕಗಳನ್ನು ತೆರಬೇಕಾಗಬಹುದು."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"ಡೇಟಾ ಬಳಕೆ"</string>
<string name="data_usage_title" msgid="2923515974389203812">"ಪ್ರಾಥಮಿಕ ಡೇಟಾ"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> ಬಳಸಲಾಗಿದೆ"</string>
@@ -320,12 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"ಪ್ರೀಮಿಯಂ SMS ನಿಮ್ಮ ವೆಚ್ಚಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು ಮತ್ತು ಇದನ್ನು ನಿಮ್ಮ ವಾಹಕ ಬಿಲ್ಗಳಿಗೆ ಸೇರಿಸಲಾಗುತ್ತದೆ. ನೀವು ಆ್ಯಪ್ಗೆ ಅನುಮತಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿದರೆ, ಆ್ಯಪ್ ಬಳಸಿಕೊಂಡು ಪ್ರೀಮಿಯಂ SMS ಕಳುಹಿಸಲು ನಿಮಗೆ ಸಾಧ್ಯವಾಗುತ್ತದೆ."</string>
<string name="usage_access_title" msgid="7153427122072303254">"ಬಳಕೆಯ ಡೇಟಾಗೆ ಪ್ರವೇಶ"</string>
<string name="usage_access_description" msgid="2413168719257435422">"ಬಳಕೆ ಪ್ರವೇಶವು, ನೀವು ಇತರ ಯಾವ ಆ್ಯಪ್ಗಳನ್ನು ಬಳಸುತ್ತಿರುವಿರಿ ಮತ್ತು ಎಷ್ಟು ಬಾರಿ ಎಂಬುದನ್ನು ಅಲ್ಲದೆ ನಿಮ್ಮ ವಾಹಕ, ಭಾಷೆ ಸೆಟ್ಟಿಂಗ್ಗಳು ಹಾಗೂ ಇತರ ವಿವರಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ."</string>
- <!-- no translation found for directory_access_title (7117264853202268740) -->
- <skip />
- <!-- no translation found for directory_on_volume (4947971311247097078) -->
- <skip />
<string name="wifi_control_title" msgid="5660436566907731929">"ವೈ-ಫೈ ನಿಯಂತ್ರಣ"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"ವೈ-ಫೈ ನಿಯಂತ್ರಣವು, ವೈ-ಫೈ ಅನ್ನು ಆನ್ ಅಥವಾ ಆಫ್ ಮಾಡಲು, ವೈ-ಫೈ ನೆಟ್ವರ್ಕ್ಗಳನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡಲು ಮತ್ತು ಸಂಪರ್ಕಿಸಲು, ನೆಟ್ವರ್ಕ್ಗಳನ್ನು ಸೇರಿಸಲು ಅಥವಾ ತೆಗೆದುಹಾಕಲು ಹಾಗೂ ಸ್ಥಳೀಯವಾದ ಹಾಟ್ಸ್ಪಾಟ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು ಈ ಆ್ಯಪ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"ಇನ್ನಷ್ಟು"</string>
<string name="location_settings_title" msgid="901334356682423679">"ಸ್ಥಳ"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"ಇತ್ತೀಚಿನ ಸ್ಥಳ ವಿನಂತಿಗಳು"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ಯಾವುದೇ ಇತ್ತೀಚಿನ ಸ್ಥಳ ವಿನಂತಿಗಳು ಇಲ್ಲ"</string>
@@ -338,8 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ಬ್ಲೂಟೂತ್ ಆಫ್ ಆಗಿದ್ದರೂ ಸಹ, ಯಾವ ಸಮಯದಲ್ಲಾದರೂ ಸಮೀಪದ ಸಾಧನಗಳಿಗೆ ಸ್ಕ್ಯಾನ್ ಮಾಡಲು ಅಪ್ಲಿಕೇಶನ್ಗಳು ಮತ್ತು ಸೇವೆಗಳನ್ನು ಅನುಮತಿಸಿ. ಉದಾಹರಣೆಗೆ, ಸ್ಥಳ ಆಧಾರಿತ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಮತ್ತು ಸೇವೆಗಳನ್ನು ಸುಧಾರಿಸಲು ಇದನ್ನು ಬಳಸಬಹುದಾಗಿದೆ."</string>
<string name="system_setting_title" msgid="6864599341809463440">"ಸಿಸ್ಟಂ"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"ಸಿಸ್ಟಂ ಅಪ್ಡೇಟ್ಗಳು"</string>
- <!-- no translation found for status_unavailable (3737918179898732010) -->
- <skip />
<string name="firmware_version" msgid="8491753744549309333">"Android ಆವೃತ್ತಿ"</string>
<string name="security_patch" msgid="4794276590178386903">"Android ಭದ್ರತೆ ಪ್ಯಾಚ್ ಮಟ್ಟ"</string>
<string name="model_info" msgid="4966408071657934452">"ಮಾಡೆಲ್"</string>
@@ -347,8 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"ಕೆರ್ನಲ್ ಆವೃತ್ತಿ"</string>
<string name="build_number" msgid="3997326631001009102">"ಬಿಲ್ಡ್ ಸಂಖ್ಯೆ"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"ಬ್ಲೂಟೂತ್ ವಿಳಾಸ"</string>
- <!-- no translation found for about_wifi_mac_address (3934228440550548053) -->
- <skip />
<string name="device_info_not_available" msgid="2095601973977376655">"ಲಭ್ಯವಿಲ್ಲ"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"ಸ್ಥಿತಿ"</string>
<string name="device_status" msgid="267298179806290920">"ಸ್ಥಿತಿ"</string>
@@ -610,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ಅಂಕಿಗಳ ಆರೋಹಣ, ಅವರೋಹಣ ಅಥವಾ ಪುನರಾವರ್ತಿತ ಅನುಕ್ರಮವನ್ನು ನಿಷೇಧಿಸಲಾಗಿದೆ."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಆಯ್ಕೆಗಳು"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ದಿನಗಳ ಹಿಂದೆ"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನ ಸೇರಿಸಿ"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನ ಸೇರಿಸಲು ಬ್ಲೂಟೂತ್ ಆನ್ ಆಗುತ್ತದೆ"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನಗಳು"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ಸಾಧನಗಳು</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ಸಾಧನಗಳು</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"ನಿಮ್ಮ <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ಸಂಪರ್ಕಿತಗೊಂಡಾಗ ಈ ಕಾರ್ ಅನ್ನು ಅನ್ಲಾಕ್ ಮಾಡುತ್ತದೆ. ಒಂದು ವೇಳೆ ನಿಮ್ಮ <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> ಅನ್ನು ಯಾರಾದರೂ ತೆಗೆದುಕೊಂಡರೆ, ಅವರಿಗೆ ಈ ಸಾಧನವನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಾಗಬಹುದು"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"ದೃಢೀಕರಿಸಿ"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನವನ್ನು ತೆಗೆದುಹಾಕಿ"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"ಮುಗಿದಿದೆ"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನವನ್ನು ಸೆಟಪ್ ಮಾಡಲು ಕಂಪ್ಯಾನಿಯನ್ ಆ್ಯಪ್ ಬಳಸಿ. ಸೆಟಪ್ ಮಾಡಿದ ನಂತರ, ನಿಮ್ಮ ಫೋನ್ ವಾಹನದ ಬಳಿ ಕಂಡುಬಂದಾಗ ನಿಮ್ಮ ಬಳಕೆದಾರರ ಪ್ರೊಫೈಲ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅನ್ಲಾಕ್ ಆಗುತ್ತದೆ."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. ನಿಮ್ಮ ಫೋನ್ನಲ್ಲಿರುವ ಕಂಪ್ಯಾನಿಯನ್ ಆ್ಯಪ್ ಅನ್ನು ಡೌನ್ಲೋಡ್ ಮಾಡಿ"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. ಸಾಧನಗಳನ್ನು ಜೋಡಿಸಲು ನಿಮ್ಮ ಫೋನ್ನಲ್ಲಿರುವ <xliff:g id="CAR_NAME">%1$s</xliff:g> ಆಯ್ಕೆಮಾಡಿ"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"ಬೇರೊಬ್ಬರು ಸಾಧನವನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಂಡಿದ್ದರೂ ಸಹ, ನಿಮ್ಮ ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನವು ಬಳಕೆದಾರರ ಪ್ರೊಫೈಲ್ ಸಮೀಪದಲ್ಲಿದ್ದಾಗ, ಅದು ಪ್ರಾರಂಭಿಸಿದ ನಂತರ ಅದನ್ನು ಅನ್ಲಾಕ್ ಮಾಡುತ್ತದೆ."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"ಜೋಡಣೆ ಕೋಡ್ಗಳು ಹೊಂದಾಣಿಕೆಯಾಗಿವೆಯೇ ಎಂದು ದೃಢೀಕರಿಸಿ"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"ಫೋನ್ ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ನೋಂದಣಿ ಮಾಡಲಾಗಿದೆ"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ನೋಂದಣಿ ವಿಫಲವಾಗಿದೆ"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನವನ್ನು ಸೇರಿಸುವುದು ನೀವು ಪ್ರಮಾಣೀಕರಣ ವಿಧಾನವನ್ನು ಹೊಂದಿಸುವ ಅಗತ್ಯವಿದೆ. ನೀವು ವಿಶ್ವಾಸಾರ್ಹ ಸಾಧನವನ್ನು ನಿಮ್ಮೊಂದಿಗೆ ಹೊಂದಿಲ್ಲದೇ ಇದ್ದರೆ, ನಿಮ್ಮ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಪ್ರಮಾಣೀಕರಣದ ಅಗತ್ಯವಿದೆ."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"ಸಾಧನದ ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಲಾಗಿದೆ."</string>
<string name="forget" msgid="3971143908183848527">"ಮರೆಯಿರಿ"</string>
<string name="connect" msgid="5861699594602380150">"ಸಂಪರ್ಕಿಸಿ"</string>
<string name="disconnect" msgid="6140789953324820336">"ಸಂಪರ್ಕ ಕಡಿತಗೊಳಿಸಿ"</string>
diff --git a/res/values-ko/arrays.xml b/res/values-ko/arrays.xml
new file mode 100644
index 0000000..96bba98
--- /dev/null
+++ b/res/values-ko/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"전송 전에 확인"</item>
+ <item msgid="933409503308401889">"허용 안함"</item>
+ <item msgid="1154273129608299386">"항상 허용"</item>
+ </string-array>
+</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 6d644d2..8f2f389 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"야간 모드"</string>
<string name="network_and_internet" msgid="4229023630498537530">"네트워크 및 인터넷"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"모바일 네트워크"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other">SIM <xliff:g id="COUNT_1">%1$d</xliff:g>개</item>
+ <item quantity="one">SIM <xliff:g id="COUNT_0">%1$d</xliff:g>개</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"활성/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"비활성/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"활성/다운로드한 SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"비활성/다운로드한 SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"추가"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"모바일 데이터"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"모바일 네트워크를 사용하여 데이터 액세스"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"모바일 데이터를 사용 중지하시겠습니까?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"선택 필요"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"<xliff:g id="CARRIER">%1$s</xliff:g>의 모바일 데이터를 사용하시겠습니까?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"<xliff:g id="CARRIER2_0">%2$s</xliff:g> 모바일 데이터를 사용하고 있습니다. <xliff:g id="CARRIER1">%1$s</xliff:g>(으)로 전환하면 <xliff:g id="CARRIER2_1">%2$s</xliff:g> 모바일 데이터를 더 이상 사용하지 않게 됩니다."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> 사용"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"로밍"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"로밍 시 데이터 서비스에 연결"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"데이터 로밍을 허용하시겠습니까?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"요금이 많이 부과될 수 있습니다."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"데이터 사용량"</string>
<string name="data_usage_title" msgid="2923515974389203812">"기본 데이터"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g><xliff:g id="ID_2">^2</xliff:g> 사용됨"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"프리미엄 SMS는 요금이 부과될 수 있으며 이는 이동통신사 요금에 추가됩니다. 앱에 권한을 부여하면 해당 앱을 사용하여 프리미엄 SMS를 사용할 수 있게 됩니다."</string>
<string name="usage_access_title" msgid="7153427122072303254">"사용 기록에 액세스"</string>
<string name="usage_access_description" msgid="2413168719257435422">"앱에서 사용 기록에 액세스하도록 허용하면 사용 중인 다른 앱의 종류와 사용 빈도, 이동통신사, 언어 설정, 기타 세부정보를 추적할 수 있게 됩니다."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"디렉터리 액세스"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="DIRECTORY">%2$s</xliff:g>(<xliff:g id="VOLUME">%1$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi 제어"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi 제어를 사용하면 앱에서 Wi-Fi를 사용 또는 사용 중지하고, Wi-Fi 네트워크를 검색 및 연결하고, 네트워크를 추가 또는 제거하며, 로컬 전용 핫스팟을 시작하도록 허용합니다."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"더보기"</string>
<string name="location_settings_title" msgid="901334356682423679">"위치"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"최근 위치 요청"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"최근 위치 요청 없음"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"블루투스가 꺼져 있을 때도 항상 앱과 서비스에서 주변 기기를 검색하도록 허용합니다. 이 설정은 예를 들면 위치 기반 기능 및 서비스를 개선하는 데 사용될 수 있습니다."</string>
<string name="system_setting_title" msgid="6864599341809463440">"시스템"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"시스템 업데이트"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"사용할 수 없음"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android 버전"</string>
<string name="security_patch" msgid="4794276590178386903">"Android 보안 패치 수준"</string>
<string name="model_info" msgid="4966408071657934452">"모델"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"커널 버전"</string>
<string name="build_number" msgid="3997326631001009102">"빌드 번호"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"블루투스 주소"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi MAC 주소"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"사용할 수 없음"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"상태"</string>
<string name="device_status" msgid="267298179806290920">"상태"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"연속으로 올라가거나 내려가는 숫자 또는 반복되는 숫자의 배열은 허용되지 않습니다."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"화면 잠금 옵션"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g>일 전"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"신뢰할 수 있는 기기 추가"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"신뢰할 수 있는 기기를 추가하기 위해 블루투스가 사용 설정됩니다."</string>
+ <string name="trusted_device" msgid="5637378361866787603">"신뢰할 수 있는 기기"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other">기기 <xliff:g id="COUNT_1">%d</xliff:g>대</item>
+ <item quantity="one">기기 <xliff:g id="COUNT_0">%d</xliff:g>대</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g>이(가) 연결되면 차량을 잠금 해제합니다. 누군가 <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>을(를) 가져가면 이 차량에 액세스할 수도 있습니다."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"확인"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"신뢰할 수 있는 기기 삭제"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"완료"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"호환 앱을 사용해 신뢰할 수 있는 기기를 설정하세요. 설정이 완료되면 차량 근처에서 휴대전화가 감지된 경우 사용자 프로필이 자동으로 잠금 해제됩니다."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. 휴대전화에 호환 앱을 다운로드합니다."</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. 휴대전화에서 <xliff:g id="CAR_NAME">%1$s</xliff:g>을(를) 선택하여 기기를 페어링합니다."</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"차량 근처에 신뢰할 수 있는 기기가 있는 경우 다른 사람이 기기를 들고 있어도 시동을 걸면 사용자 프로필이 잠금 해제됩니다."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"페어링 코드가 일치하는지 확인하세요."</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"휴대전화를 등록했습니다."</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>을(를) 등록하는 데 실패했습니다."</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"신뢰할 수 있는 기기를 추가하면 다음번에 인증 수단을 설정해야 합니다. 신뢰할 수 있는 기기가 없으면 인증 과정을 거쳐야 내 프로필에 액세스할 수 있습니다."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"기기 연결이 끊어졌습니다."</string>
<string name="forget" msgid="3971143908183848527">"삭제"</string>
<string name="connect" msgid="5861699594602380150">"연결"</string>
<string name="disconnect" msgid="6140789953324820336">"연결 해제"</string>
diff --git a/res/values-ky/arrays.xml b/res/values-ky/arrays.xml
new file mode 100644
index 0000000..ce983c4
--- /dev/null
+++ b/res/values-ky/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Суроо"</item>
+ <item msgid="933409503308401889">"Эч качан уруксат жок"</item>
+ <item msgid="1154273129608299386">"Дайым уруксат"</item>
+ </string-array>
+</resources>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 08066ba..9504f54 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Түнкү режим"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Тармак жана Интернет"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Мобилдик тармак"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM карта</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM карта</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Активдүү / SIM-карта"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Активдүү эмес / SIM-карта"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Активдүү / Жүктөлүп алынган SIM-карта"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Активдүү эмес / Жүктөлүп алынган SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Дагы кошуу"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобилдик Интернет"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Интернетке мобилдик тармак аркылуу чыгуу"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Мобилдик Интернетти өчүрөсүзбү?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Тандоо керек"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"<xliff:g id="CARRIER">%1$s</xliff:g> Интернети колдонулсунбу?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Мобилдик Интернет үчүн <xliff:g id="CARRIER2_0">%2$s</xliff:g> операторун колдонуп жатасыз. Эгер <xliff:g id="CARRIER1">%1$s</xliff:g> операторуна которулсаңыз, <xliff:g id="CARRIER2_1">%2$s</xliff:g> мобилдик Интернет үчүн колдонулбай калат."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> операторун колдонуу"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Роуминг"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Роуминг учурунда мобилдик Интернетке туташат"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Интернет-роумингди иштетесизби?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Көп акча төлөп калышыңыз мүмкүн."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Дайындардын колдонулушу"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Негизги тарифтик план"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> колдонулду"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Артыкчылыктуу SMS үчүн сизден акы алынып, ал операторуңуздун эсептерине кошулушу мүмкүн. Эгер кайсы бир колдонмого уруксат берсеңиз, ошол колдонмо аркылуу артыкчылыктуу SMS жөнөтө аласыз."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Колдонуу таржымалын көрүү"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Колдонуу таржымалы аркылуу кайсы колдонмолор канчалык көп колдонула турганын, ошондой эле байланыш операторуңузду, тил жөндөөлөрүн жана башка параметрлерди көрө аласыз."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Каталогго мүмкүнчүлүк алуу"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi\'ды көзөмөлдөө"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi\'ды көзөмөлдөө колдонмого Wi-Fi\'ды өчүрүп же күйгүзүүгө, Wi-Fi тармактарын издеп, аларга туташууга, тармактарды кошуп же алып салууга же жергиликтүү туташуу түйүнүн иштетүүгө уруксат берет."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Дагы"</string>
<string name="location_settings_title" msgid="901334356682423679">"Жайгашкан жер"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Жакында изделген жерлер"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Жакында изделген жерлер жок"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Bluetooth өчүп турса да, колдонмолор менен кызматтарга жакын жердеги түзмөктөрдү издегенге уруксат бересиз. Бул параметр менен жайгашкан жерди тагыраак аныктоого болот."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Тутум"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Тутум жаңыртуулары"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Жеткиликсиз"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android версиясы"</string>
<string name="security_patch" msgid="4794276590178386903">"Коопсуздук тутумунун жаңыртуусу:"</string>
<string name="model_info" msgid="4966408071657934452">"Үлгү"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Өзөктүн версиясы"</string>
<string name="build_number" msgid="3997326631001009102">"Курама номери"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth дареги"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi MAC дареги"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Жеткиликтүү эмес"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Абалы"</string>
<string name="device_status" msgid="267298179806290920">"Абалы"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Сандар чоңойгон, кичирейген же кайталанган ыраатта болбошу керек."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Экранды кулпулоо ыкмалары"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> күн мурун"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Ишенимдүү түзмөк кошуу"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth ишенимдүү түзмөктү кошуу үчүн күйгүзүлөт"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Ишенимдүү түзмөктөр"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> түзмөк</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> түзмөк</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> түзмөгүңүз туташып турганда, унаанын кулпусун ачат. Эгер <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> түзмөгү кимдир бирөөнүн колуна тийсе, ал ушул түзмөктү да ача алат"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Ырастоо"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Ишенимдүү түзмөктү өчүрүү"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Бүттү"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Ишенимдүү түзмөктү жөндөө үчүн, коштомо колдонмону пайдаланыңыз. Жөндөлгөндөн кийин, телефонуңуз унаанын жанында аныкталганда, колдонуучу профилиңиздин кулпусу автоматтык түрдө ачылат."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Телефонуңузга коштомо колдонмону жүктөп алыңыз"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Түзмөктөрдү жупташтыруу үчүн, телефонуңуздан <xliff:g id="CAR_NAME">%1$s</xliff:g> унаасын тандаңыз"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Ишенимдүү түзмөктү унааңыздын жанында сиз же башка бирөө күйгүзгөн учурда да, колдонуучу профилиңиздин кулпусу ачылат."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Жупташтыруучу коддор дал келгендигин ырастаңыз"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Телефон ийгиликтүү катталды"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> катталган жок"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Ишенимдүү түзмөктү кошууда аутентификация ыкмасын кошуу талап кылынат. Эгер ишенимдүү түзмөк жаныңызда болбосо, профилге кирүү үчүн аутентификациядан өтүү керек болот."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Түзмөк ажыратылды."</string>
<string name="forget" msgid="3971143908183848527">"Унутулсун"</string>
<string name="connect" msgid="5861699594602380150">"Туташтыруу"</string>
<string name="disconnect" msgid="6140789953324820336">"Ажыратуу"</string>
diff --git a/res/values-lo/arrays.xml b/res/values-lo/arrays.xml
new file mode 100644
index 0000000..5b5a2ae
--- /dev/null
+++ b/res/values-lo/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"ຖາມ"</item>
+ <item msgid="933409503308401889">"ບໍ່ອະນຸຍາດ"</item>
+ <item msgid="1154273129608299386">"ອະນຸຍາດທຸກເທື່ອ"</item>
+ </string-array>
+</resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 7f07ddc..d0c667e 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"ໂໝດກາງຄືນ"</string>
<string name="network_and_internet" msgid="4229023630498537530">"ເຄືອຂ່າຍ ແລະ ອິນເຕີເນັດ"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"ເຄືອຂ່າຍມືຖື"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"ນຳໃຊ້ຢູ່ / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"ບໍ່ໄດ້ນຳໃຊ້ / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"ນຳໃຊ້ຢູ່ / SIM ທີ່ດາວໂຫລດແລ້ວ"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"ບໍ່ໄດ້ນຳໃຊ້ / SIM ທີ່ດາວໂຫລດແລ້ວ"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"ເພີ່ມອີກ"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"ອິນເຕີເນັດມືຖື"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"ເຂົ້າເຖິງອິນເຕີເນັດໂດຍໃຊ້ເຄືອຂ່າຍມືຖື"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"ປິດອິນເຕີເນັດມືຖືບໍ?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"ຈໍາເປັນຕ້ອງເລືອກ"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"ໃຊ້ <xliff:g id="CARRIER">%1$s</xliff:g> ສຳລັບອິນເຕີເນັດມືຖືບໍ?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"ທ່ານກຳລັງໃຊ້ <xliff:g id="CARRIER2_0">%2$s</xliff:g> ສຳລັບອິນເຕີເນັດມືຖື. ຫາກທ່ານປ່ຽນໄປໃຊ້ <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> ຈະບໍ່ຖືກໃຊ້ສຳລັບອິນເຕີເນັດມືຖືອີກຕໍ່ໄປ."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"ໃຊ້ <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"ໂຣມມິງ"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"ເຊື່ອມຕໍ່ກັບການບໍລິການອິນເຕີເນັດເມື່ອໂຣມມິງ"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"ອະນຸຍາດໃຫ້ໂຣມມິງຂໍ້ມູນບໍ?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"ທ່ານອາດຈະເສຍຄ່າໃຊ້ຈ່າຍຫຼາຍ."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"ການໃຊ້ຂໍ້ມູນ"</string>
<string name="data_usage_title" msgid="2923515974389203812">"ຂໍ້ມູນຫຼັກ"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"ໃຊ້ໄປແລ້ວ <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"SMS ແບບພຣີມຽມອາດຈະເຮັດໃຫ້ທ່ານເສຍເງິນ ແລະ ຈະເພີ່ມໃສ່ໃບບິນຜູ້ໃຫ້ບໍລິການຂອງທ່ານ. ຖ້າທ່ານເປີດໃຊ້ການອະນຸຍາດສຳລັບແອັບໃດໜຶ່ງ, ທ່ານຈະສາມາດສົ່ງ SMS ແບບພຣີມຽມໂດຍໃຊ້ແອັບນັ້ນໄດ້."</string>
<string name="usage_access_title" msgid="7153427122072303254">"ການເຂົ້າເຖິງການນຳໃຊ້"</string>
<string name="usage_access_description" msgid="2413168719257435422">"ການເຂົ້າເຖິງການນຳໃຊ້ອະນຸຍາດໃຫ້ແອັບຕິດຕາມເບິ່ງວ່າທ່ານກຳລັງໃຊ້ແອັບອື່ນໃດແດ່ ແລະ ໃຊ້ເລື້ອຍໆສໍ່າໃດ, ເຊັ່ນດຽວກັນກັບຜູ້ໃຫ້ບໍລິການ, ການຕັ້ງຄ່າພາສາ ແລະ ລາຍລະອຽດອື່ນໆຂອງທ່ານ."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"ການເຂົ້າເຖິງແຟ້ມ"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"ການຄວບຄຸມ Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"ການຄວບຄຸມ Wi-Fi ອະນຸຍາດໃຫ້ແອັບເປີດ ຫຼື ປິດ Wi-Fi, ສະແກນ ແລະ ເຊື່ອມຕໍ່ກັບເຄືອຂ່າຍ Wi-Fi, ເພີ່ມ ຫຼື ລຶບເຄືອຂ່າຍອອກ ຫຼື ເລີ່ມຮັອດສະປອດສະເພາະພື້ນທີ່ໄດ້."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"ເພີ່ມເຕີມ"</string>
<string name="location_settings_title" msgid="901334356682423679">"ສະຖານທີ່"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"ຄຳຂໍຂໍ້ມູນສະຖານທີ່ຫຼ້າສຸດ"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ບໍ່ມີຄຳຂໍຂໍ້ມູນສະຖານທີ່ຫຼ້າສຸດ"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ອະນຸຍາດໃຫ້ແອັບ ແລະ ການບໍລິການຕ່າງໆສະແກນຫາອຸປະກອນທີ່ຢູ່ໃກ້ຄຽງໄດ້ທຸກເມື່ອ, ເຖິງແມ່ນໃນເວລາທີ່ Bluetooth ປິດຢູ່ກໍຕາມ. ສາມາດໃຊ້ຄຸນສົມບັດນີ້ເພື່ອປັບປຸງຄຸນສົມບັດ ແລະ ການບໍລິການຕ່າງໆທີ່ອີງໃສ່ສະຖານທີ່ໄດ້."</string>
<string name="system_setting_title" msgid="6864599341809463440">"ລະບົບ"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"ການອັບເດດລະບົບ"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"ບໍ່ສາມາດໃຊ້ໄດ້"</string>
<string name="firmware_version" msgid="8491753744549309333">"ເວີຊັນ Android"</string>
<string name="security_patch" msgid="4794276590178386903">"ລະດັບໂປຣແກຣມແກ້ໄຂຄວາມປອດໄພ Android"</string>
<string name="model_info" msgid="4966408071657934452">"ລຸ້ນ"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"ເວີຊັນ Kernel"</string>
<string name="build_number" msgid="3997326631001009102">"ເລກທີລຸ້ນ"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"ທີ່ຢູ່ Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"ທີ່ຢູ່ Wi-Fi MAC"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"ບໍ່ສາມາດໃຊ້ໄດ້"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"ສະຖານະ"</string>
<string name="device_status" msgid="267298179806290920">"ສະຖານະ"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ຊຸດຕົວເລກລຽງກັນແຕ່ນ້ອຍຫາໃຫຍ່, ໃຫຍ່ຫານ້ອຍ ຫຼື ຊຸດຕົວເລກຊ້ຳກັນ."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ຕົວເລືອກການລັອກໜ້າຈໍ"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ມື້ກ່ອນ"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"ເພີ່ມອຸປະກອນທີ່ເຊື່ອຖືໄດ້"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth ຈະເປີດເພື່ອເພີ່ມອຸປະກອນທີ່ເຊື່ອຖືໄດ້"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"ອຸປະກອນທີ່ເຊື່ອຖືໄດ້"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ອຸປະກອນ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ອຸປະກອນ</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ຂອງທ່ານຈະປົດລັອກລົດນີ້ ເມື່ອມັນເຊື່ອມຕໍ່. ຖ້າຄົນອື່ນເອົາ <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> ຂອງທ່ານ, ພວກເຂົາຈະສາມາດເຂົ້າເຖິງອຸປະກອນນີ້ໄດ້"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"ຢືນຢັນ"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"ລຶບອຸປະກອນທີ່ເຊື່ອຖືໄດ້ອອກ"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"ແລ້ວໆ"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"ໃຊ້ແອັບຊ່ວຍເຫຼືອເພື່ອຕັ້ງຄ່າອຸປະກອນທີ່ເຊື່ອຖືໄດ້. ເມື່ອຕັ້ງຄ່າແລ້ວ, ໂປຣໄຟລ໌ຜູ້ໃຊ້ຂອງທ່ານຈະປົດລັອກໂດຍອັດຕະໂນມັດ ເມື່ອພາຫານະທີ່ຢູ່ໃກ້ຄຽງກວດພົບໂທລະສັບຂອງທ່ານ."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. ດາວໂຫຼດແອັບຊ່ວຍເຫຼືອໃນໂທລະສັບຂອງທ່ານ"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. ເລືອກ <xliff:g id="CAR_NAME">%1$s</xliff:g> ໃນໂທລະສັບຂອງທ່ານເພື່ອຈັບຄູ່ອຸປະກອນ"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"ອຸປະກອນທີ່ເຊື່ອຖືໄດ້ທີ່ຢູ່ໃກ້ກັບລົດຂອງທ່ານຈະປົດລັອກໂປຣໄຟລ໌ຜູ້ໃຊ້ຫຼັງຈາກຕິດເຄື່ອງແລ້ວ, ເຖິງແມ່ນວ່າຄົນອື່ນກຳລັງຖືອຸປະກອນໄວ້ຢູ່ກໍຕາມ."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"ກະລຸນາຢືນຢັນວ່າລະຫັດຈັບຄູ່ກົງກັນ"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"ລົງທະບຽນໂທລະສັບສຳເລັດແລ້ວ"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"ການລົງທະບຽນ <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ບໍ່ສຳເລັດ"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"ການເພີ່ມອຸປະກອນທີ່ເຊື່ອຖືໄດ້ກຳນົດໃຫ້ທ່ານຕ້ອງຕັ້ງຄ່າວິທີການກວດຮັບຮອງຄວາມຖືກຕ້ອງເປັນຂັ້ນຕອນຕໍ່ໄປ. ຖ້າທ່ານບໍ່ມີອຸປະກອນທີ່ເຊື່ອຖືໄດ້ຢູ່ນຳທ່ານ, ຈໍາເປັນຕ້ອງມີການກວດຮັບຮອງຄວາມຖືກຕ້ອງເພື່ອເຂົ້າເຖິງໂປຣໄຟລ໌ຂອງທ່ານ."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"ຕັດການເຊື່ອມຕໍ່ອຸປະກອນແລ້ວ"</string>
<string name="forget" msgid="3971143908183848527">"ລືມ"</string>
<string name="connect" msgid="5861699594602380150">"ເຊື່ອມຕໍ່"</string>
<string name="disconnect" msgid="6140789953324820336">"ຕັດການເຊື່ອມຕໍ່"</string>
diff --git a/res/values-lt/arrays.xml b/res/values-lt/arrays.xml
new file mode 100644
index 0000000..3da7fa8
--- /dev/null
+++ b/res/values-lt/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Klausti"</item>
+ <item msgid="933409503308401889">"Niekada neleisti"</item>
+ <item msgid="1154273129608299386">"Visada leisti"</item>
+ </string-array>
+</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index f1a4dbf..b698e8c 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -31,9 +31,28 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Naktinis režimas"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Tinklas ir internetas"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobiliojo ryšio tinklas"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM kortelė</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM kortelės</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM kortelės</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM kortelių</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktyvi / SIM kortelė"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Neaktyvi / SIM kortelė"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktyvi / atsisiųsta SIM kortelė"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Neaktyvi / atsisiųsta SIM kortelė"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Pridėti daugiau"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobiliojo ryšio duomenys"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Prieiga prie duomenų naud. mobiliojo ryšio tinklą"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Išjungti mobiliojo ryšio duomenis?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Būtina pasirinkti"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Naudoti „<xliff:g id="CARRIER">%1$s</xliff:g>“ mob. ryšio duomen.?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Naudojate „<xliff:g id="CARRIER2_0">%2$s</xliff:g>“ mobiliojo ryšio duomenims. Jei perjungsite į „<xliff:g id="CARRIER1">%1$s</xliff:g>“, „<xliff:g id="CARRIER2_1">%2$s</xliff:g>“ paslaugos nebebus naudojamos mobiliojo ryšio duomenims."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Naudoti „<xliff:g id="CARRIER">%1$s</xliff:g>“"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Tarptinklinis ryšys"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Veikiant tarptinkliniam ryšiui, prisij. prie duomenų pasl."</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Leisti tarptinklinį duomenų ryšį?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Gali būti taikomi dideli mokesčiai."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Duomenų naudojimas"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Pirminiai duomenys"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Išnaudota: <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -324,10 +343,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Išskirtiniai SMS gali būti mokami ir į operatoriaus sąskaitas gali būti įtraukta papildomų mokesčių. Jei įgalinsite programos leidimą, galėsite siųsti išskirtinius SMS naudodami tą programą."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Naudojimo prieiga"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Taikant naudojimo prieigą programa gali stebėti, kokias kitas programas naudojate ir kaip dažnai jas naudojate bei išsamią operatoriaus, kalbos nustatymų ir kitą informaciją."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Prieiga prie katalogo"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> („<xliff:g id="DIRECTORY">%2$s</xliff:g>“)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"„Wi-Fi“ valdymas"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"„Wi-Fi“ valdymo funkcija leidžia šiai programai įjungti arba išjungti „Wi-Fi“, nuskaityti „Wi-Fi“ tinklus ir prisijungti prie jų, pridėti ar pašalinti tinklus arba paleisti tik vietinį viešosios interneto prieigos tašką."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Daugiau"</string>
<string name="location_settings_title" msgid="901334356682423679">"Vietovė"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Pastarosios vietovės užklausos"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nėra jokių pastarųjų vietovių užklausų"</string>
@@ -340,7 +358,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Leisti programoms ir paslaugoms bet kuriuo metu nuskaityti ieškant netoliese esančių įrenginių, net kai „Bluetooth“ išjungtas. Tai galima naudoti norint, pvz., tobulinti pagal vietovę teikiamas funkcijas ir paslaugas."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Sistemos naujiniai"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Nepasiekiama"</string>
<string name="firmware_version" msgid="8491753744549309333">"„Android“ versija"</string>
<string name="security_patch" msgid="4794276590178386903">"„Android“ saugos pataisos lygis"</string>
<string name="model_info" msgid="4966408071657934452">"Modelis"</string>
@@ -348,7 +365,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Branduolio versija"</string>
<string name="build_number" msgid="3997326631001009102">"Versijos numeris"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"„Bluetooth“ adresas"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"„Wi-Fi“ MAC adresas"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Nepasiekiama"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Būsena"</string>
<string name="device_status" msgid="267298179806290920">"Būsena"</string>
@@ -626,6 +642,28 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Didėjanti, mažėjanti ar pasikartojanti skaitmenų seka neleidžiama."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekrano užrakto parinktys"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: prieš <xliff:g id="NUM_DAYS">%3$s</xliff:g> d."</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Pridėti patikimą įrenginį"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bus įj. „Bluetooth“, kad b. gal. pr. patik. įreng."</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Patikimi įrenginiai"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> įrenginys</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> įrenginiai</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> įrenginio</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> įrenginių</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"„<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g>“ įrenginys atrakins šį automobilį, kai šis bus prijungtas. Jei koks nors asmuo paims „<xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>“ įrenginį, jis galės pasiekti šį įrenginį"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Patvirtinti"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Pašalinti patikimą įrenginį"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Atlikta"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Naudokite papildomą programą, kad nustatytumėte patikimą įrenginį. Jį nustačius jūsų naudotojo profilis bus atrakintas automatiškai, kai telefonas bus aptiktas netoli transporto priemonės."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Atsisiųskite papildomą programą telefone"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Pasirinkite automobilį „<xliff:g id="CAR_NAME">%1$s</xliff:g>“ telefone, kad susietumėte įrenginius"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Netoli jūsų automobilio esantis patikimas įrenginys atrakins naudotojo profilį užvedus automobilį, net jei įrenginį laiko kažkas kitas."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Patvirtinkite, kad susiejimo kodai atitinka"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Telefonas sėkmingai užregistruotas"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"„<xliff:g id="DEVICE_NAME">%1$s</xliff:g>“ įrenginio registracija nepavyko"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Pridėję patikimą įrenginį, paskui turėsite nustatyti autentifikavimo metodą. Jei su savimi patikimo įrenginio neturite, autentifikavimas bus būtinas norint pasiekti profilį."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Įrenginys atjungtas."</string>
<string name="forget" msgid="3971143908183848527">"Pamiršti"</string>
<string name="connect" msgid="5861699594602380150">"Prisijungti"</string>
<string name="disconnect" msgid="6140789953324820336">"Atsijungti"</string>
diff --git a/res/values-lv/arrays.xml b/res/values-lv/arrays.xml
new file mode 100644
index 0000000..44a9f8b
--- /dev/null
+++ b/res/values-lv/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Vaicāt"</item>
+ <item msgid="933409503308401889">"Nekad neatļaut"</item>
+ <item msgid="1154273129608299386">"Vienmēr atļaut"</item>
+ </string-array>
+</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index f200035..44b9059 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -31,9 +31,27 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Nakts režīms"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Tīkls un internets"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobilais tīkls"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="zero"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM karšu</item>
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM karte</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM kartes</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktīvs/SIM karte"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Neaktīvs/SIM karte"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktīvs/lejupielādēta SIM karte"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Neaktīvs/lejupielādēta SIM karte"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Pievienot vēl"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobilie dati"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Piekļuve datiem, izmantojot mobilo tīklu"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Vai izslēgt mobilos datus?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Jāveic atlase"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Vai mobilajiem datiem lietot <xliff:g id="CARRIER">%1$s</xliff:g>?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Mobilajiem datiem jūs izmantojat <xliff:g id="CARRIER2_0">%2$s</xliff:g>. Pārslēdzoties uz <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> SIM vairs netiks izmantota mobilajiem datiem."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Izmantot operatoru <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Viesabonēšana"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Viesabonēšanā izveidot savienojumu ar datu pakalpojumiem"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Vai atļaut datu viesabonēšanu?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Var rasties ievērojamas izmaksas."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Datu lietojums"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Galvenie dati"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Patērētie dati: <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -322,10 +340,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Par maksas īsziņām no jums var tikt iekasēta samaksa, kas tiks pievienota jūsu mobilo sakaru operatora rēķinam. Ja kādai lietotnei iespējosiet piekļuves atļauju, varēsiet sūtīt maksas īsziņas, izmantojot šo lietotni."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Piekļuve lietojuma datiem"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Piekļuve lietojuma datiem ļauj lietotnei izsekot, kādas lietotnes un cik bieži izmantojat, kā arī iegūt informāciju par jūsu mobilo sakaru operatoru, valodas iestatījumiem u.c."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Piekļuve katalogiem"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi pārvaldība"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi pārvaldība ļauj lietotnei ieslēgt vai izslēgt Wi-Fi savienojumu, meklēt Wi-Fi tīklus un izveidot savienojumus ar tiem, pievienot vai noņemt tīklus, vai izveidot vietējo tīklāju."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Vairāk"</string>
<string name="location_settings_title" msgid="901334356682423679">"Atrašanās vieta"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Neseni atrašanās vietu pieprasījumi"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nav nesenu atrašanās vietu pieprasījumu"</string>
@@ -338,7 +355,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Ļauj lietotnēm un pakalpojumiem meklēt tuvumā esošas ierīces vienmēr, pat ja Bluetooth ir izslēgts. Šo iestatījumu var izmantot, piemēram, lai uzlabotu atrašanās vietas funkcijas un pakalpojumus."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistēma"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Sistēmas atjauninājumi"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Nav pieejama"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android versija"</string>
<string name="security_patch" msgid="4794276590178386903">"Android drošības ielāpa līmenis"</string>
<string name="model_info" msgid="4966408071657934452">"Modelis"</string>
@@ -346,7 +362,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kodola versija"</string>
<string name="build_number" msgid="3997326631001009102">"Būvējuma numurs"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth adrese"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi MAC adrese"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Nav pieejams"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Statuss"</string>
<string name="device_status" msgid="267298179806290920">"Statuss"</string>
@@ -616,6 +631,27 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Nav atļauta augoša, dilstoša vai atkārtota ciparu secība."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekrāna bloķēšanas opcijas"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: pirms <xliff:g id="NUM_DAYS">%3$s</xliff:g> dienām"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Pievienot uzticamu ierīci"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Tiks ieslēgts Bluetooth, lai piev. uzticamu ierīci"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Uzticamas ierīces"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="zero"><xliff:g id="COUNT_1">%d</xliff:g> ierīču</item>
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ierīce</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ierīces</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Jūsu ierīce <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> atbloķēs šo automašīnu, ja ierīcei būs izveidots savienojums ar to. Ja kāda persona paņem jūsu ierīci <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, šī persona var piekļūt jūsu ierīcei."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Apstiprināt"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Noņemt uzticamo ierīci"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Gatavs"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Izmantojiet palīglietotni, lai iestatītu uzticamu ierīci. Pēc iestatīšanas jūsu lietotāja profils tiks automātiski atbloķēts, kad transportlīdzekļa tuvumā tiks konstatēts jūsu tālrunis."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Lejupielādējiet palīglietotni savā tālrunī."</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Tālrunī atlasiet automašīnas nosaukumu (<xliff:g id="CAR_NAME">%1$s</xliff:g>), lai ierīces savienotu pārī."</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Izmantojot uzticamu ierīci automašīnas tuvumā, tiks atbloķēts lietotāja profils brīdī, kad tiks iedarbināts automašīnas dzinējs, pat ja ierīci tur cita persona."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Lūdzu, apstipriniet, ka kodi savienošanai pārī ir vienādi"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Tālrunis tika veiksmīgi reģistrēts"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Neizdevās reģistrēt ierīci <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Pievienojot uzticamu ierīci, jums ir jāiestata arī autentifikācijas metode. Autentifikācija būs nepieciešama, lai jūs varētu piekļūt savam profilam, ja jums nebūs līdzi jūsu uzticamā ierīce."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Ierīce ir atvienota."</string>
<string name="forget" msgid="3971143908183848527">"Aizmirst"</string>
<string name="connect" msgid="5861699594602380150">"Izveidot savienojumu"</string>
<string name="disconnect" msgid="6140789953324820336">"Atvienot"</string>
diff --git a/res/values-mk/arrays.xml b/res/values-mk/arrays.xml
new file mode 100644
index 0000000..eed55c5
--- /dev/null
+++ b/res/values-mk/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Прашај"</item>
+ <item msgid="933409503308401889">"Никогаш не дозволувај"</item>
+ <item msgid="1154273129608299386">"Секогаш дозволувај"</item>
+ </string-array>
+</resources>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index d8aa7d7..db99c9f 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Ноќен режим"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Мрежа и интернет"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Мобилна мрежа"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-картичка</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-картички</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Активна/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Неактивна/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Активна/Преземена SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Неактивна/Преземена SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Додајте повеќе"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобилен интернет"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Пристап на интернет преку мобилната мрежа"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Да се исклучи мобилниот интернет?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Треба да се избере"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Да се користи <xliff:g id="CARRIER">%1$s</xliff:g> за интернет?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Користите <xliff:g id="CARRIER2_0">%2$s</xliff:g> за мобилен интернет. Ако се префрлите на <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> веќе нема да се користи за мобилен интернет."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Користи <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Роаминг"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Поврзувај се со интернет-услуги во роаминг"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Да се дозволи ли интернет-роаминг?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Може да направите големи трошоци."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Потрошен сообраќај"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Примарен сообраќај"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Потрошен сообраќај: <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Премиум SMS може да ве чини пари, а сумата ќе се додаде на сметките од операторот. Ако овозможите дозвола за апликацијата, ќе може да испраќате премиум SMS со неа."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Пристап до употреба"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Пристапот за користење овозможува апликацијата да следи кои други апликации ги користите и колку често, како и операторот, поставките за јазик и други детали."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Пристап до адресарот"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Контрола на Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Контролата на Wi-Fi дозволува апликацијава да вклучува или исклучува Wi-Fi, да скенира и да се поврзува на Wi-Fi мрежи, да додава или отстранува мрежи или да започне локална точка на пристап."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Повеќе"</string>
<string name="location_settings_title" msgid="901334356682423679">"Локација"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Последни барања за локација"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Нема неодамнешни барања за локација"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Дозволете апликациите и услугите да скенираат уреди во близина во секое време, дури и кога Bluetooth е исклучен. Ова може да се користи, на пример, за да се подобрат функциите и услугите базирани на локација."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Систем"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Ажурирања на системот"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Недостапно"</string>
<string name="firmware_version" msgid="8491753744549309333">"Верзија на Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Ниво на безбедносна лепенка на Android"</string>
<string name="model_info" msgid="4966408071657934452">"Модел"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Верзија на кернел"</string>
<string name="build_number" msgid="3997326631001009102">"Број на верзија"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Адреса на Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Адреса на MAC за Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Не се достапни"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Статус"</string>
<string name="device_status" msgid="267298179806290920">"Статус"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Не е дозволена низа на цифри со растечки, опаѓачки или повторлив редослед."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Опции за заклучување на екранот"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: пред <xliff:g id="NUM_DAYS">%3$s</xliff:g> дена"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Додај доверлив уред"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth ќе се вклучи за да додаде доверлив уред"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Доверливи уреди"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> уред</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> уреди</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Вашиот <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ќе го отклучува автомобилов кога е поврзан. Ако некој ви го земе <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, ќе може да пристапува до уредов"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Потврди"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Отстрани доверлив уред"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Готово"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Употребете ја придружната апликација за да поставите доверлив уред. Откако ќе го поставите, вашиот кориснички профил ќе се отклучи автоматски кога вашиот телефон ќе се открие во близина на возилото."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Преземете ја придружната апликација на телефонот"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Изберете <xliff:g id="CAR_NAME">%1$s</xliff:g> на телефонот за да ги спарите уредите"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Доверлив уред во близина на вашиот автомобил може да го отклучи корисничкиот профил по стартувањето на автомобилот, дури и кога некој друг го држи уредот."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Потврдете дека кодовите за спарување се совпаѓаат"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Телефонот е регистриран успешно"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Регистрацијата на <xliff:g id="DEVICE_NAME">%1$s</xliff:g> не успеа"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Ако додадете доверлив уред, ќе треба да поставите метод на проверка во следниот чекор. Ако доверливиот уред не ви е при рака, ќе ви биде потребна проверка за да пристапите до профилот."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Врската со уредот се прекина."</string>
<string name="forget" msgid="3971143908183848527">"Избриши го"</string>
<string name="connect" msgid="5861699594602380150">"Поврзи"</string>
<string name="disconnect" msgid="6140789953324820336">"Исклучи"</string>
diff --git a/res/values-ml/arrays.xml b/res/values-ml/arrays.xml
new file mode 100644
index 0000000..2677c2e
--- /dev/null
+++ b/res/values-ml/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"ചോദിക്കുക"</item>
+ <item msgid="933409503308401889">"ഒരിക്കലും അനുവദിക്കരുത്"</item>
+ <item msgid="1154273129608299386">"എല്ലായ്പ്പോഴും അനുവദിക്കുക"</item>
+ </string-array>
+</resources>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index f75447c..d7c1a68 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"നൈറ്റ് മോഡ്"</string>
<string name="network_and_internet" msgid="4229023630498537530">"നെറ്റ്വർക്കും ഇന്റർനെറ്റും"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"മൊബൈൽ നെറ്റ്വർക്ക്"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-കള്</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"സജീവം / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"നിഷ്ക്രിയം / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"സജീവം / ഡൗൺലോഡ് ചെയ്ത SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"നിഷ്ക്രിയം / ഡൗൺലോഡ് ചെയ്ത SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"കൂടുതൽ ചേർക്കുക"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"മൊബൈൽ ഡാറ്റ"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"മൊബൈൽ നെറ്റ്വർക്ക് ഉപയോഗിച്ച് ഡാറ്റ ആക്സസ് ചെയ്യുക"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"മൊബൈൽ ഡാറ്റ ഓഫാക്കണോ?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"തിരഞ്ഞെടുക്കേണ്ടത് ആവശ്യമാണ്"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"മൊബൈൽ ഡാറ്റയ്ക്ക് <xliff:g id="CARRIER">%1$s</xliff:g> വേണോ?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"നിങ്ങൾ മൊബൈൽ ഡാറ്റയ്ക്ക് <xliff:g id="CARRIER2_0">%2$s</xliff:g> ഉപയോഗിക്കുന്നു. നിങ്ങൾ <xliff:g id="CARRIER1">%1$s</xliff:g> എന്നതിലേക്ക് മാറുകയാണെങ്കിൽ മൊബൈൽ ഡാറ്റ ലഭിക്കാൻ ഇനിമുതൽ <xliff:g id="CARRIER2_1">%2$s</xliff:g> ഉപയോഗിക്കില്ല."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> ഉപയോഗിക്കുക"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"റോമിംഗ്"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"റോമിംഗിൽ ഡാറ്റാ സേവനങ്ങളിലേക്ക് കണക്റ്റ് ചെയ്യുക"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"ഡാറ്റാ റോമിംഗ് അനുവദിക്കണോ?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"നിങ്ങളിൽ നിന്ന് നിശ്ചിത നിരക്കുകൾ ഈടാക്കിയേക്കാം."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"ഡാറ്റ ഉപയോഗം"</string>
<string name="data_usage_title" msgid="2923515974389203812">"പ്രാഥമിക ഡാറ്റ"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> ഉപയോഗിച്ചു"</string>
@@ -320,12 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"പ്രീമിയം SMS-ന് നിങ്ങൾ പണം നൽകേണ്ടി വന്നേക്കാം, സേവനദാതാവിന്റെ ബില്ലിലേക്ക് ഈ തുക ചേർക്കുന്നതാണ്. നിങ്ങളൊരു ആപ്പിന് അനുമതി പ്രവർത്തനക്ഷമമാക്കുന്നുവെങ്കിൽ, ആ ആപ്പ് ഉപയോഗിച്ച് പ്രീമിയം SMS അയയ്ക്കാനാകും."</string>
<string name="usage_access_title" msgid="7153427122072303254">"ഉപയോഗ ആക്സസ്"</string>
<string name="usage_access_description" msgid="2413168719257435422">"നിങ്ങൾ മറ്റ് ഏതെല്ലാം ആപ്പുകൾ ഉപയോഗിക്കുന്നുണ്ടെന്നും അവ എത്ര തവണ ഉപയോഗിക്കുന്നുണ്ടെന്നും നിങ്ങളുടെ സേവനദാതാവ്, ഭാഷാ ക്രമീകരണം എന്നിവയും മറ്റ് വിശദാംശങ്ങളും ട്രാക്ക് ചെയ്യാനും ഉപയോഗ ആക്സസ് ആപ്പിനെ അനുവദിക്കുന്നു."</string>
- <!-- no translation found for directory_access_title (7117264853202268740) -->
- <skip />
- <!-- no translation found for directory_on_volume (4947971311247097078) -->
- <skip />
<string name="wifi_control_title" msgid="5660436566907731929">"വൈഫൈ നിയന്ത്രണം"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"വൈഫൈ ഓണാക്കാനോ ഓഫാക്കാനോ, സ്കാൻ ചെയ്ത് വൈഫൈ നെറ്റ്വർക്കുകളിലേക്ക് കണക്റ്റ് ചെയ്യാനും നെറ്റ്വർക്കുകൾ ചേർക്കാനോ നീക്കം ചെയ്യാനോ, ഉപകരണം ഉള്ളിടത്ത് മാത്രം പ്രവർത്തിക്കുന്ന ഹോട്ട്സ്പോട്ട് ആരംഭിക്കാനോ വൈഫൈ നിയന്ത്രണം ആപ്പിനെ അനുവദിക്കുന്നു."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"കൂടുതൽ"</string>
<string name="location_settings_title" msgid="901334356682423679">"ലൊക്കേഷൻ"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"അടുത്തിടെയുള്ള ലൊക്കേഷൻ അഭ്യർത്ഥനകൾ"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"അടുത്തിടെയുള്ള ലൊക്കേഷൻ അഭ്യർത്ഥനകളൊന്നുമില്ല"</string>
@@ -338,8 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Bluetooth ഓഫാണെങ്കിൽ പോലും, ഏതുസമയത്തും അടുത്തുള്ള ഉപകരണങ്ങൾ സ്കാൻ ചെയ്യാൻ ആപ്പുകളെയും സേവനങ്ങളെയും അനുവദിക്കുക. ഉദാഹരണത്തിന്, ലൊക്കേഷൻ അടിസ്ഥാനമാക്കിയുള്ള ഫീച്ചറുകളും സേവനങ്ങളും മെച്ചപ്പെടുത്താൻ ഇത് ഉപയോഗിക്കാം."</string>
<string name="system_setting_title" msgid="6864599341809463440">"സിസ്റ്റം"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"സിസ്റ്റം അപ്ഡേറ്റുകൾ"</string>
- <!-- no translation found for status_unavailable (3737918179898732010) -->
- <skip />
<string name="firmware_version" msgid="8491753744549309333">"Android പതിപ്പ്"</string>
<string name="security_patch" msgid="4794276590178386903">"Android സുരക്ഷാ പാച്ച് നില"</string>
<string name="model_info" msgid="4966408071657934452">"മോഡല്"</string>
@@ -347,8 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"പ്രധാന പതിപ്പ്"</string>
<string name="build_number" msgid="3997326631001009102">"ബിൽഡ് നമ്പർ"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth വിലാസം"</string>
- <!-- no translation found for about_wifi_mac_address (3934228440550548053) -->
- <skip />
<string name="device_info_not_available" msgid="2095601973977376655">"ലഭ്യമല്ല"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"സ്റ്റാറ്റസ്"</string>
<string name="device_status" msgid="267298179806290920">"സ്റ്റാറ്റസ്"</string>
@@ -610,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"അക്കങ്ങൾ ആരോഹണ ക്രമത്തിലോ അവരോഹണ ക്രമത്തിലോ അനുക്രമമായോ നൽകുന്നത് അനുവദനീയമല്ല."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"സ്ക്രീൻ ലോക്ക് ഓപ്ഷനുകള്"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ദിവസം മുമ്പ്"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"വിശ്വസ്ത ഉപകരണം ചേർക്കുക"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"വിശ്വസ്ത ഉപകരണങ്ങൾ ചേർക്കാൻ Bluetooth ഓണാകും"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"വിശ്വസ്ത ഉപകരണങ്ങൾ"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ഉപകരണങ്ങൾ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ഉപകരണം</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"നിങ്ങളുടെ <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> കണക്റ്റ് ചെയ്തിരിക്കുമ്പോൾ അത് ഈ കാർ അൺലോക്ക് ചെയ്യും. ആരെങ്കിലും നിങ്ങളുടെ <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> എടുക്കുകയാണെങ്കിൽ അവർക്ക് ഈ ഉപകരണം ആക്സസ് ചെയ്യാനായേക്കും"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"സ്ഥിരീകരിക്കുക"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"വിശ്വസ്ത ഉപകരണം നീക്കം ചെയ്യുക"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"ചെയ്തു"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"വിശ്വസ്ത ഉപകരണം സജ്ജീകരിക്കാൻ സഹകാരി ആപ്പ് ഉപയോഗിക്കുക. ഒരിക്കൽ സജ്ജീകരിച്ചാൽ, വാഹനത്തിനടുത്ത് നിങ്ങളുടെ ഫോൺ കണ്ടെത്തുമ്പോൾ നിങ്ങളുടെ ഉപയോക്തൃ പ്രൊഫൈൽ സ്വയമേവ അൺലോക്ക് ചെയ്യും."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. നിങ്ങളുടെ ഫോണിൽ സഹകാരി ആപ്പ് ഡൗൺലോഡ് ചെയ്യുക"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. ഉപകരണങ്ങൾ ജോഡിയാക്കാൻ നിങ്ങളുടെ ഫോണിൽ <xliff:g id="CAR_NAME">%1$s</xliff:g> തിരഞ്ഞെടുക്കുക"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"മറ്റൊരാളുടെ കൈവശം ഉപകരണമുണ്ടെങ്കിൽപ്പോലും നിങ്ങളുടെ കാറിന് സമീപമുള്ള വിശ്വസ്ത ഉപകരണം കാർ ഇഗ്നിഷനിലാകുമ്പോൾ ഉപയോക്തൃ പ്രൊഫൈൽ അൺലോക്ക് ചെയ്യും."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"ജോടിയാക്കൽ കോഡുകൾ തമ്മിൽ പൊരുത്തമുണ്ടെന്ന് ഉറപ്പാക്കുക"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"ഫോൺ എൻറോൾ ചെയ്തു"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> എൻറോൾമെന്റ് പരാജയപ്പെട്ടു"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"ഒരു വിശ്വസ്ത ഉപകരണം ചേർക്കുന്നതിന്, അടുത്തതായി ഒരു പരിശോധിച്ചുറപ്പിക്കൽ രീതി നിങ്ങൾ സജ്ജീകരിക്കേണ്ടതുണ്ട്. വിശ്വസ്ത ഉപകരണം നിങ്ങളുടെ കൈവശമില്ലെങ്കിൽ, നിങ്ങളുടെ പ്രൊഫൈൽ ആക്സസ് ചെയ്യാൻ പരിശോധിച്ചുറപ്പിക്കൽ ആവശ്യമാണ്."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"ഉപകരണം വിച്ഛേദിച്ചു."</string>
<string name="forget" msgid="3971143908183848527">"മറക്കുക"</string>
<string name="connect" msgid="5861699594602380150">"കണക്റ്റ് ചെയ്യുക"</string>
<string name="disconnect" msgid="6140789953324820336">"വിച്ഛേദിക്കുക"</string>
diff --git a/res/values-mn/arrays.xml b/res/values-mn/arrays.xml
new file mode 100644
index 0000000..9870bd6
--- /dev/null
+++ b/res/values-mn/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Асуух"</item>
+ <item msgid="933409503308401889">"Хэзээ ч зөвшөөрөхгүй"</item>
+ <item msgid="1154273129608299386">"Үргэлж зөвшөөрөх"</item>
+ </string-array>
+</resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 5423664..32f8b52 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Шөнийн горим"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Сүлжээ & интернэт"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Мобайл сүлжээ"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> СИМ</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> СИМ</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Идэвхтэй / СИМ"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Идэвхгүй / СИМ"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Идэвхтэй / Татаж авсан СИМ"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Идэвхгүй / Татаж авсан СИМ"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Бусдыг нэмэх"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобайл дата"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Мобайл сүлжээг ашиглан датад хандах"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Мобайл датаг унтраах уу?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Сонгох шаардлагатай"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"<xliff:g id="CARRIER">%1$s</xliff:g>-г мобайл датад ашиглах уу?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Та <xliff:g id="CARRIER2_0">%2$s</xliff:g>-г мобайл датад ашиглаж байна. Та <xliff:g id="CARRIER1">%1$s</xliff:g> руу сэлгэх тохиолдолд <xliff:g id="CARRIER2_1">%2$s</xliff:g>-г мобайл датад ашиглах боломжгүй болно."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g>-г ашиглах"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Роуминг"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Роуминг ашиглах үед дата үйлчилгээнд холбогдох"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Дата роуминг зөвшөөрөх үү?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Таны төлбөр өндөр гарч болзошгүй."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Дата ашиглалт"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Үндсэн дата"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>-г ашигласан"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Premium SMS-н төлбөрийг таны оператор компанийн төлбөр дээр нэмэхийг анхаарна уу. Та энэ аппын зөвшөөрлийг идэвхжүүлсэн тохиолдолд энэ аппыг ашиглан premium SMS илгээх боломжтой болно."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Ашиглалтын хандалт"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Ашиглалтын хандалт нь аппад таны хэрэглэж буй бусад апп болон хэрэглээний давтамж, мөн оператор компани, хэлний тохиргоо болон бусад дэлгэрэнгүй мэдээллийг хянахыг зөвшөөрдөг."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Лавлахын хандалт"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi хяналт"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi хяналт нь аппад Wi-Fi-г унтраах эсвэл асаах, Wi-Fi сүлжээнд скан хийх болон холбогдох, сүлжээ нэмэх эсвэл хасах, эсвэл зөвхөн дотоодод ашиглах сүлжээний цэгийг эхлүүлэхийг зөвшөөрдөг."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Бусад"</string>
<string name="location_settings_title" msgid="901334356682423679">"Байршил"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Саяхны байршлын хүсэлтүүд"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Саяхны байршлын хүсэлт алга"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Апп болон үйлчилгээнд Bluetooth унтраалттай үед ч ойролцоох төхөөрөмжийг хүссэн үедээ скан хийхийг зөвшөөрнө үү. Үүнийг байршилд суурилсан онцлогууд болон үйлчилгээнүүдийг сайжруулахад ашиглаж магадгүй."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Систем"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Системийн шинэчлэлт"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Боломжгүй"</string>
<string name="firmware_version" msgid="8491753744549309333">"Андройд хувилбар"</string>
<string name="security_patch" msgid="4794276590178386903">"Андройдын аюулгүй байдлын patch-н түвшин"</string>
<string name="model_info" msgid="4966408071657934452">"Загвар"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Кернел хувилбар"</string>
<string name="build_number" msgid="3997326631001009102">"Хийцийн дугаар"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth хаяг"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi MAC хаяг"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Боломжгүй"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Төлөв"</string>
<string name="device_status" msgid="267298179806290920">"Төлөв"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Өсөж буй, буурч буй эсвэл давхардсан цифрийг зөвшөөрдөггүй."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Дэлгэцийн түгжээний сонголтууд"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> өдрийн өмнө"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Итгэмжлэгдсэн төхөөрөмж нэмэх"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Итгэмжлэгдсэн төхөөрөмжүүд нэмэхийн тулд Bluetooth асна"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Итгэмжлэгдсэн төхөөрөмжүүд"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> төхөөрөмж</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> төхөөрөмж</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Таны <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> холбогдсон үедээ энэ машины түгжээг тайлна. Таны <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>-г хэн нэгэн авсан тохиолдолд энэ төхөөрөмжид хандах боломжтой байж болзошгүй"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Баталгаажуулах"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Итгэмжлэгдсэн төхөөрөмжийг устгах"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Болсон"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Итгэмжлэгдсэн төхөөрөмжийг тохируулахын тулд дэмжигч аппыг ашиглана уу. Үүнийг тохируулмагц таны утсыг тээврийн хэрэгслийн ойролцоо байгааг илрүүлэх үед таны хэрэглэгчийн профайл түгжээг автоматаар тайлна."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Утсандаа дэмжигч аппыг татаж авна уу"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Төхөөрөмжүүдийг хослуулахын тулд утаснаасаа <xliff:g id="CAR_NAME">%1$s</xliff:g>-г сонгоно уу"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Хэн нэгэн төхөөрөмжийг барьж байсан ч таны машины ойролцоох итгэмжлэгдсэн төхөөрөмж хэрэглэгчийн профайлыг асаахад түгжээг тайлна."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Хослуулах кодын тохирох сонголтыг баталгаажуулна уу"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Утсыг амжилттай бүртгүүллээ"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>-г бүртгүүлж чадсангүй"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Итгэмжлэгдсэн төхөөрөмж нэмснээр танаас дараа нь нотолгооны хэлбэр тохируулахыг шаарддаг. Хэрэв та итгэмжлэгдсэн төхөөрөмжөө өөртөө авч яваагүй бол нотлохын тулд профайлдаа хандахыг шаардана."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Төхөөрөмж салсан байна."</string>
<string name="forget" msgid="3971143908183848527">"Мартах"</string>
<string name="connect" msgid="5861699594602380150">"Холбох"</string>
<string name="disconnect" msgid="6140789953324820336">"Салгах"</string>
diff --git a/res/values-mr/arrays.xml b/res/values-mr/arrays.xml
new file mode 100644
index 0000000..6c70cab
--- /dev/null
+++ b/res/values-mr/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"विचारा"</item>
+ <item msgid="933409503308401889">"कधीही अनुमती देऊ नका"</item>
+ <item msgid="1154273129608299386">"नेहमी अनुमती द्या"</item>
+ </string-array>
+</resources>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 7dc2239..d6e29c8 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"नाइट मोड"</string>
<string name="network_and_internet" msgid="4229023630498537530">"नेटवर्क आणि इंटरनेट"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"मोबाइल नेटवर्क"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> सिम</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> सिम</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"अॅक्टिव्ह / सिम"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"अॅक्टिव्ह नसलेले / सिम"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"ॲक्टिव्ह / डाउनलोड केलेले सिम"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"अॅक्टिव्ह नसलेले / डाउनलोड केलेले सिम"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"अधिक जोडा"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"मोबाइल डेटा"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"मोबाइल नेटवर्क वापरून डेटा ॲक्सेस करा"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"मोबाइल डेटा बंद करायचा आहे का?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"निवड आवश्यक आहे"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"मोबाइल डेटासाठी <xliff:g id="CARRIER">%1$s</xliff:g> वापरायचे का?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"तुम्ही मोबाइल डेटासाठी <xliff:g id="CARRIER2_0">%2$s</xliff:g> वापरत आहात. तुम्ही <xliff:g id="CARRIER1">%1$s</xliff:g> वर स्विच केल्यास, मोबाइल डेटासाठी <xliff:g id="CARRIER2_1">%2$s</xliff:g> वापरले जाणार नाही."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> वापरा"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"रोमिंग"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"रोमिंग असताना डेटा सेवांशी कनेक्ट करा"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"डेटा रोमिंगला अनुमती द्यायची आहे का?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"तुमच्याकडून आवश्यक शुल्क आकारले जाऊ शकते."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"डेटा वापर"</string>
<string name="data_usage_title" msgid="2923515974389203812">"प्राथमिक डेटा"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> वापरला आहे"</string>
@@ -320,12 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"प्रीमियम SMS मुळे तुम्हाला कदाचित शुल्क लागू होतील आणि तुमच्या कॅरियर बिलमध्ये जोडले जातील. तुम्ही अॅपसाठी परवानगी सुरू केल्यास, तुम्ही ते अॅप वापरून प्रीमियम SMS पाठवू शकता."</string>
<string name="usage_access_title" msgid="7153427122072303254">"वापर अॅक्सेस"</string>
<string name="usage_access_description" msgid="2413168719257435422">"तुम्ही इतर अॅप्स किती वारंवार वापरत आहात, तसेच तुमचे वाहक, भाषा सेटिंग्ज आणि इतर तपशील यांचा मागोवा घेण्याची वापर अॅक्सेस अॅपला अनुमती देतो."</string>
- <!-- no translation found for directory_access_title (7117264853202268740) -->
- <skip />
- <!-- no translation found for directory_on_volume (4947971311247097078) -->
- <skip />
<string name="wifi_control_title" msgid="5660436566907731929">"वाय-फाय नियंत्रण"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"वाय-फाय नियंत्रण ॲपला वाय-फाय सुरू किंवा बंद करण्याची, वाय-फाय नेटवर्क स्कॅन आणि त्याच्याशी कनेक्ट करण्याची, नेटवर्क जोडण्याची किंवा काढण्याची किंवा फक्त स्थानिक हॉटस्पॉट सुरू करण्याची अनुमती देते."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"आणखी"</string>
<string name="location_settings_title" msgid="901334356682423679">"स्थान"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"अलीकडील स्थान विनंत्या"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"अलीकडील कोणत्याही स्थान विनंत्या नाहीत"</string>
@@ -338,8 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ब्लूटूथ बंद असले, तरीही अॅप्स आणि सेवांना जवळपासची डिव्हाइस कधीही स्कॅन करण्याची अनुमती द्या. याचा वापर उदाहरणार्थ, स्थान आधारित वैशिष्ट्ये आणि सेवा सुधारण्यासाठी केला जाऊ शकतो."</string>
<string name="system_setting_title" msgid="6864599341809463440">"सिस्टम"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"सिस्टम अपडेट"</string>
- <!-- no translation found for status_unavailable (3737918179898732010) -->
- <skip />
<string name="firmware_version" msgid="8491753744549309333">"Android आवृत्ती"</string>
<string name="security_patch" msgid="4794276590178386903">"Android सुरक्षितता पॅच पातळी"</string>
<string name="model_info" msgid="4966408071657934452">"मॉडेल"</string>
@@ -347,8 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"कर्नेल आवृत्ती"</string>
<string name="build_number" msgid="3997326631001009102">"बिल्ड नंबर"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"ब्लूटूथ पत्ता"</string>
- <!-- no translation found for about_wifi_mac_address (3934228440550548053) -->
- <skip />
<string name="device_info_not_available" msgid="2095601973977376655">"उपलब्ध नाही"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"स्थिती"</string>
<string name="device_status" msgid="267298179806290920">"स्थिती"</string>
@@ -610,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"अंकांच्या चढत्या, उतरत्या किंवा पुनरावृत्त क्रमाला अनुमती नाही."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"स्क्रीन लॉक पर्याय"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> दिवसांपूर्वी"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"विश्वसनीय डिव्हाइस जोडा"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"विश्वसनीय डिव्हाइस जोडण्यासाठी ब्लूटूथ सुरू होईल"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"विश्वसनीय डिव्हाइस"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> डिव्हाइस</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>डिव्हाइस</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"ते कनेक्ट केलेले असते तेव्हा <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> तुमची कार अनलॉक करेल. एखाद्याने तुमचे <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> घेतल्यास, tकदाचित ते डिव्हाइस अॅक्सेस करू शकतील"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"खात्री करा"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"विश्वसनीय डिव्हाइस काढून टाका"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"पूर्ण झाले"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"विश्वसनीय डिव्हाइस सेट करण्यासाठी सहयोगी अॅप वापरा. एकदा सेट केल्यानंतर, तुमचा फोन वाहनाजवळ सापडताच तुमची वापरकर्ता प्रोफाईल आपोआप अनलॉक होईल."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"१. तुमच्या फोनवर सहयोगी अॅप डाउनलोड करा"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"२. डिव्हाइस पेअर करण्यासाठी तुमच्या फोनवर <xliff:g id="CAR_NAME">%1$s</xliff:g> निवडा"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"तुमचे विश्वसनीय डिव्हाइस दुसऱ्या कोणाच्या हातात असताना देखील ते तुमची वापरकर्ता प्रोफाइल कार जवळपास असताना सुरू होताच अनलॉक करेल."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"कृपया पेअरींग कोड जुळत असल्याची खात्री करा"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"फोनची यशस्वीरीत्या नोंदणी झाली आहे"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>ची नोंदणी करता आली नाही"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"विश्वासू डिव्हाइस जोडण्यााठी तुम्हाला यापुढे ऑथेंटिकेशन सेट करण्याची आवश्यकता आहे. तुमच्याजवळ तुमचे विश्वासू डिव्हाइस नसल्यास, ऑथेंटिकेशनला तुमची प्रोफाइल ॲक्सेस करण्याची आवश्यकता असेल."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"डिव्हाइस डिस्कनेक्ट केले आहे."</string>
<string name="forget" msgid="3971143908183848527">"विसरा"</string>
<string name="connect" msgid="5861699594602380150">"कनेक्ट करा"</string>
<string name="disconnect" msgid="6140789953324820336">"डिस्कनेक्ट करा"</string>
diff --git a/res/values-ms/arrays.xml b/res/values-ms/arrays.xml
new file mode 100644
index 0000000..85320bc
--- /dev/null
+++ b/res/values-ms/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Tanya"</item>
+ <item msgid="933409503308401889">"Jangan sekali-kali benarkan"</item>
+ <item msgid="1154273129608299386">"Sentiasa benarkan"</item>
+ </string-array>
+</resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index d99fd2a..7dafff3 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Mod malam"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Rangkaian & Internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Rangkaian mudah alih"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktif / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Tidak aktif / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktif / SIM Dimuat Turun"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Tidak Aktif / SIM Dimuat Turun"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Tambah lagi"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Data mudah alih"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Akses data menggunakan rangkaian mudah alih"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Matikan data mudah alih?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Pilihan diperlukan"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Gunakan data mudah alih <xliff:g id="CARRIER">%1$s</xliff:g>?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Anda menggunakan <xliff:g id="CARRIER2_0">%2$s</xliff:g> untuk data mudah alih. Jika anda bertukar kepada <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> tidak lagi digunakan untuk data mudah alih."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Gunakan <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Perayauan"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Sambung ke perkhidmatan data semasa perayauan"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Benarkan perayauan data?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Anda mungkin dikenakan caj yang tinggi."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Penggunaan data"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Data utama"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> digunakan"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"SMS Premium bukan percuma dan cajnya akan ditambahkan pada bil pembawa anda. Jika anda mendayakan kebenaran untuk apl, anda akan dapat menghantar SMS premium menggunakan apl itu."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Akses penggunaan"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Akses penggunaan membenarkan apl mengesan apl lain yang anda gunakan dan kekerapan penggunaan tersebut serta pembawa, tetapan bahasa dan butiran anda yang lain."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Akses direktori"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Kawalan Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Kawalan Wi-Fi membenarkan apl menghidupkan atau mematikan Wi-Fi, mengimbas dan menyambung ke rangkaian Wi-Fi, menambah atau mengalih keluar rangkaian, atau memulakan tempat liputan setempat sahaja."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Lagi"</string>
<string name="location_settings_title" msgid="901334356682423679">"Lokasi"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Permintaan Lokasi Terbaharu"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Tiada permintaan lokasi terbaharu"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Benarkan apl dan perkhidmatan mengimbas untuk mengesan peranti berdekatan pada bila-bila masa, meskipun apabila Bluetooth dimatikan. Ini dapat digunakan, contohnya, untuk meningkatkan ciri dan perkhidmatan berasaskan lokasi."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Kemas kini sistem"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Tidak tersedia"</string>
<string name="firmware_version" msgid="8491753744549309333">"Versi Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Tahap tampung keselamatan Android"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Versi inti"</string>
<string name="build_number" msgid="3997326631001009102">"Nombor binaan"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Alamat Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Alamat MAC Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Tidak tersedia"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Angka menaik, menurun atau jujukan berulang tidak dibenarkan."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Pilihan kunci skrin"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> hari lalu"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Tambah peranti dipercayai"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth akan dihidupkan untuk peranti dipercayai"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Peranti dipercayai"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> peranti</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> peranti</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> anda akan membuka kunci kereta ini apabila disambungkan. Jika seseorang mengambil <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> anda, orang itu mungkin dapat mengakses peranti ini"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Sahkan"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Alih keluar peranti yang dipercayai"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Selesai"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Gunakan apl rakan untuk menyediakan peranti yang dipercayai. Setelah peranti disediakan, profil pengguna anda akan dibuka kunci secara automatik apabila telefon anda dikesan berada berdekatan kenderaan."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Muat turun apl rakan pada telefon anda"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Pilih <xliff:g id="CAR_NAME">%1$s</xliff:g> pada telefon anda untuk menggandingkan peranti tersebut"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Peranti yang dipercayai berdekatan kereta anda akan membuka kunci profil pengguna apabila kereta dihidupkan, walaupun orang lain yang memegang peranti itu."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Sila sahkan bahawa kod gandingan adalah sepadan"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Telefon telah berjaya didaftarkan"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Pendaftaran <xliff:g id="DEVICE_NAME">%1$s</xliff:g> gagal"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Penambahan peranti yang dipercayai memerlukan anda menetapkan kaedah pengesahan selepas ini. Jika peranti yang dipercayai tiada dengan anda, pengesahan perlu mengakses profil anda."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Peranti diputuskan sambungan."</string>
<string name="forget" msgid="3971143908183848527">"Lupakan"</string>
<string name="connect" msgid="5861699594602380150">"Sambung"</string>
<string name="disconnect" msgid="6140789953324820336">"Putuskan sambungan"</string>
diff --git a/res/values-my/arrays.xml b/res/values-my/arrays.xml
new file mode 100644
index 0000000..4754122
--- /dev/null
+++ b/res/values-my/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"မေးပါ"</item>
+ <item msgid="933409503308401889">"လုံးဝ ခွင့်မပြုပါ"</item>
+ <item msgid="1154273129608299386">"အမြဲခွင့်ပြုပါ"</item>
+ </string-array>
+</resources>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 5d17fa3..b9906a1 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"ညသုံးမုဒ်"</string>
<string name="network_and_internet" msgid="4229023630498537530">"ကွန်ရက်နှင့် အင်တာနက်"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"မိုဘိုင်းကွန်ရက်"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other">ဆင်းမ်ကတ် <xliff:g id="COUNT_1">%1$d</xliff:g> ခု</item>
+ <item quantity="one">ဆင်းမ်ကတ် <xliff:g id="COUNT_0">%1$d</xliff:g> ခု</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"သုံးနေသော / ဆင်းမ်ကတ်"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"မသုံးသော / ဆင်းမ်ကတ်"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"သုံးနေသော / ဒေါင်းလုဒ်လုပ်ထားသော ဆင်းမ်"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"မသုံးသော / ဒေါင်းလုဒ်လုပ်ထားသော ဆင်းမ်"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"ထပ်ထည့်ရန်"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"မိုဘိုင်းဒေတာ"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"မိုဘိုင်းကွန်ရက်သုံးပြီး ဒေတာကို ဝင်သုံးခွင့်ပေးပါ"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"မိုဘိုင်းဒေတာ ပိတ်လိုသလား။"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"ရွေးချယ်မှု လိုအပ်သည်"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"မိုဘိုင်းဒေတာအတွက် <xliff:g id="CARRIER">%1$s</xliff:g> သုံးမလား။"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"မိုဘိုင်းဒေတာအတွက် <xliff:g id="CARRIER2_0">%2$s</xliff:g> အသုံးပြုနေသည်။ <xliff:g id="CARRIER1">%1$s</xliff:g> သို့ပြောင်းလျှင် မိုဘိုင်းဒေတာအတွက် <xliff:g id="CARRIER2_1">%2$s</xliff:g> ကို အသုံးပြုတော့မည် မဟုတ်ပါ။"</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> သုံးရန်"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"ပြင်ပကွန်ရက်သို့ ချိတ်ဆက်ခြင်း"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"ပြင်ပကွန်ရက် သုံးသောအခါ ဒေတာဝန်ဆောင်မှုများနှင့် ချိတ်ဆက်သည်"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"ပြင်ပကွန်ရက် ဒေတာသုံးခွင့်ပြုမလား။"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"ငွေကြေးအတန်အသင့် ကုန်ကျနိုင်ပါသည်။"</string>
<string name="data_usage_settings" msgid="7877132994777987848">"ဒေတာသုံးစွဲမှု"</string>
<string name="data_usage_title" msgid="2923515974389203812">"အဓိက ဒေတာ"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> အသုံးပြုထားသည်"</string>
@@ -321,10 +338,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"ပရီမီယံ SMS သည်ငွေကြေးကုန်ကျနိုင်ပြီး သင့်ဖုန်းဝန်ဆောင်မှုပေးသူ၏ ငွေတောင်းခံလွှာသို့ ပေါင်း၍ ထည့်သွင်းပါမည်။ အက်ပ်တစ်ခုကို သင်ခွင့်ပြုလိုက်လျှင် ၎င်းအက်ပ်ကိုအသုံးပြုပြီး ပရီမီယံ SMS ပို့နိုင်မည်ဖြစ်သည်။"</string>
<string name="usage_access_title" msgid="7153427122072303254">"အသုံးပြုမှု ကြည့်ခြင်း"</string>
<string name="usage_access_description" msgid="2413168719257435422">"ဝင်ရောက်အသုံးပြုခွင့်သည် အက်ပ်တစ်ခုအား သင်အသုံးပြုနေသော အခြားအက်ပ်များနှင့် သုံးသည့် အကြိမ်ရေနှင့်တကွ သင့်ဖုန်း၏ ဝန်ဆောင်မှုဌာန၊ ဘာသာစကား ဆက်တင်နှင့် အခြားအသေးစိတ်များကို ခြေရာခံရန် ခွင့်ပြုသည်။"</string>
- <string name="directory_access_title" msgid="7117264853202268740">"ဖိုင်လမ်းညွှန် သုံးခွင့်"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi ထိန်းချုပ်မှု"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi ထိန်းချုပ်မှုသည် အက်ပ်တစ်ခုအား Wi-Fi ဖွင့်ရန် သို့မဟုတ် ပိတ်ရန်၊ Wi-Fi ကွန်ရက်များ ရှာဖွေရန်နှင့် ၎င်းတို့သို့ ချိတ်ဆက်ရန်၊ ကွန်ရက်များ ထည့်ရန် သို့မဟုတ် ဖယ်ရှားရန် သို့မဟုတ် စက်တွင်းသာသုံးသည့် ဟော့စပေါ့စတင်ရန်တို့ကို ခွင့်ပြုသည်။"</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"နောက်ထပ်"</string>
<string name="location_settings_title" msgid="901334356682423679">"တည်နေရာ"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"လတ်တလော တည်နေရာတောင်းဆိုချက်များ"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"လတ်တလော တည်နေရာတောင်းဆိုချက်များ မရှိပါ"</string>
@@ -337,7 +353,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ဘလူးတုသ်ကို ပိတ်ထားသော်လည်း အနီးအနားရှိ စက်ပစ္စည်းများကို အချိန်မရွေးရှာဖွေရန် အက်ပ်နှင့် ဝန်ဆောင်မှုများအား ခွင့်ပြုပါ။ ဥပမာအားဖြင့် ၎င်းကို တည်နေရာအခြေပြု လုပ်ဆောင်ချက်နှင့် ဝန်ဆောင်မှုများ တိုးတက်လာစေရန် အသုံးပြုနိုင်ပါသည်။"</string>
<string name="system_setting_title" msgid="6864599341809463440">"စနစ်"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"စနစ်အပ်ဒိတ်များ"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"မရနိုင်ပါ"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android ဗားရှင်း"</string>
<string name="security_patch" msgid="4794276590178386903">"Android လုံခြုံရေးပက်ချ်အဆင့်"</string>
<string name="model_info" msgid="4966408071657934452">"မော်ဒယ်"</string>
@@ -345,7 +360,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kernel ဗားရှင်း"</string>
<string name="build_number" msgid="3997326631001009102">"တည်ဆောက်မှုနံပါတ်"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"ဘလူးတုသ်လိပ်စာ"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi ၏ MAC လိပ်စာ"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"မရနိုင်ပါ"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"အခြေအနေ"</string>
<string name="device_status" msgid="267298179806290920">"အခြေအနေ"</string>
@@ -607,6 +621,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"အစဉ်လိုက်ဖြစ်နေသော ဂဏန်း အငယ်မှအကြီး၊ အကြီးမှအငယ် သို့မဟုတ် ထပ်နေသည့် နံပါတ်စဉ်များကို ခွင့်မပြုပါ။"</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"မျက်နှာပြင်လော့ခ်ချခြင်း ရွေးချယ်စရာများ"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> - လွန်ခဲ့သော <xliff:g id="NUM_DAYS">%3$s</xliff:g> ရက်"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"ယုံကြည်ရသည့် စက်ကိုထည့်ရန်"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"စိတ်ချရသည့် ကိရိယာထည့်ရန် ဘလူးတုသ် ဖွင့်ပါမည်"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"ယုံကြည်ရသည့် စက်များ"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other">စက်ပစ္စည်း <xliff:g id="COUNT_1">%d</xliff:g> ခု</item>
+ <item quantity="one">စက်ပစ္စည်း <xliff:g id="COUNT_0">%d</xliff:g> ခု</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"ချိတ်ဆက်သည့်အခါ သင့် <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> က ဤကားကို လော့ခ်ဖွင့်ပါမည်။ တစ်စုံတစ်ယောက်က သင့် <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> ကိုယူသွားလျှင် သူသည် ဤကိရိယာကို အသုံးပြုခွင့်ရရှိနိုင်ပါသည်"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"အတည်ပြုရန်"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"ယုံကြည်ရသော ကိရိယာ ဖယ်ရှားရန်"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"ပြီးပြီ"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"စိတ်ချရသည့် စက်ပစ္စည်းကို သတ်မှတ်ရန် တွဲဖက်အက်ပ်ကို သုံးပါ။ သတ်မှတ်ပြီးသည်နှင့် သင့်စက်ကို ယာဉ်အနီးတွင် တွေ့ရှိရသည့်အခါ သင့်အသုံးပြုသူပရိုဖိုင်သည် အလိုအလျောက် လော့ခ်ပွင့်ပါမည်။"</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"၁။ တွဲဖက် အက်ပ်ကို သင့်ဖုန်းတွင် ဒေါင်းလုဒ်လုပ်ပါ"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"၂။ စက်ပစ္စည်းနှင့်အတူ တွဲချိတ်ရန် သင့်ဖုန်းတွင် <xliff:g id="CAR_NAME">%1$s</xliff:g> ကို ရွေးပေးပါ"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"စိတ်ချရသည့် စက်တစ်ခုသည် အခြားသူတစ်ဦး၏လက်ထဲတွင် ရှိနေစေကာမူ ကားစက်နှိုးလိုက်သည်နှင့် သင့်ကားအနီးရှိ ယင်းစက်တစ်ခုက အသုံးပြုသူ ပရိုဖိုင်ကို လော့ခ်ဖွင့်ပေးပါမည်။"</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"အတူတွဲချိတ်ရန် ကုဒ်များ ကိုက်ညီကြောင်း အတည်ပြုပါ"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"ဖုန်းကို စာရင်းသွင်းပြီးပါပြီ"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ကို စာရင်းသွင်း၍ မရပါ"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"စိတ်ချရသည့် ကိရိယာတစ်ခုကို ထည့်ပြီးပါက အထောက်အထားစိစစ်ခြင်း နည်းလမ်းတစ်ခုကို သတ်မှတ်ရပါမည်။ သင့်တွင် စိတ်ချရသည့် ကိရိယာ အတူပါမလာပါက သင့်ပရိုဖိုင်ကို ဝင်သုံးခွင့်ရရန် အထောက်အထားစိစစ်ခြင်း လိုအပ်ပါလိမ့်မည်။"</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"စက်ချိတ်ဆက်မှု ပြတ်တောက်သွားသည်။"</string>
<string name="forget" msgid="3971143908183848527">"မေ့ပစ်ရန်"</string>
<string name="connect" msgid="5861699594602380150">"ချိတ်ရန်"</string>
<string name="disconnect" msgid="6140789953324820336">"ချိတ်ဆက်မှု ဖြုတ်ရန်"</string>
diff --git a/res/values-nb/arrays.xml b/res/values-nb/arrays.xml
new file mode 100644
index 0000000..7f9d7ee
--- /dev/null
+++ b/res/values-nb/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Spør"</item>
+ <item msgid="933409503308401889">"Tillat aldri"</item>
+ <item msgid="1154273129608299386">"Tillat alltid"</item>
+ </string-array>
+</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 922ad09..4e1ffc2 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Nattmodus"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Nettverk og internett"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobilnettverk"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-kort</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM-kort</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktiv / SIM-kort"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inaktiv / SIM-kort"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktiv / nedlastet SIM-kort"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inaktiv / nedlastet SIM-kort"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Legg til mer"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobildata"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Bruk data via mobilnettverket"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Vil du slå av mobildata?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Du må velge en SIM-innstilling"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Vil du bruke <xliff:g id="CARRIER">%1$s</xliff:g> for mobildata?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Du bruker <xliff:g id="CARRIER2_0">%2$s</xliff:g> for mobildata. Hvis du bytter til <xliff:g id="CARRIER1">%1$s</xliff:g>, brukes ikke <xliff:g id="CARRIER2_1">%2$s</xliff:g> for mobildata lenger."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Bruk <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Koble til datatjenester ved roaming"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Vil du tillate data-roaming?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Det kan medføre betydelige kostnader."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Databruk"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Primære data"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> er brukt"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Premium-SMS kan koste penger og legges til telefonregningen din. Hvis du slår på tillatelse for en app, kan du sende premium-SMS via den appen."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Brukstilgang"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Med brukstilgang kan apper spore hvilke andre apper du bruker, og hvor ofte du bruker dem. Operatør, språkinnstillinger og annen informasjon kan også spores med brukstilgang."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Katalogtilgang"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi-kontroll"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Med Wi-Fi-kontroll kan en app slå Wi-Fi på eller av, søke etter og koble til Wi-Fi-nettverk, legge til eller fjerne nettverk eller starte en lokal Wi-Fi-sone"</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Mer"</string>
<string name="location_settings_title" msgid="901334356682423679">"Posisjon"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nylige posisjonsforespørsler"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ingen nylige posisjonsforespørsler"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"La apper og tjenester søke etter enheter i nærheten når som helst, selv når Bluetooth er slått av. Dette kan for eksempel brukes til å forbedre posisjonsbaserte funksjoner og tjenester."</string>
<string name="system_setting_title" msgid="6864599341809463440">"System"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Systemoppdateringer"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Utilgjengelig"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android-versjon"</string>
<string name="security_patch" msgid="4794276590178386903">"Android-sikkerhetsoppdatering"</string>
<string name="model_info" msgid="4966408071657934452">"Modell"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kjerneversjon"</string>
<string name="build_number" msgid="3997326631001009102">"Delversjonsnummer"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-adresse"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"MAC-adresse for Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Ikke tilgjengelig"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"En sekvens av stigende, synkende eller like sifre er ikke tillatt."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Alternativer for skjermlås"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : for <xliff:g id="NUM_DAYS">%3$s</xliff:g> dager siden"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Legg til en godkjent enhet"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth slås på for å legge til godkjent enhet"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Godkjente enheter"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> enheter</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> enhet</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> låser opp denne bilen når den er tilkoblet. Hvis noen tar <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, får vedkommende tilgang til denne enheten."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Bekreft"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Fjern godkjent enhet"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Ferdig"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Bruk følgeappen for å konfigurere en godkjent enhet. Når den er konfigurert, låser brukerprofilen din opp automatisk når telefonen oppdages i nærheten av kjøretøyet."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Last ned følgeappen på telefonen din"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Velg <xliff:g id="CAR_NAME">%1$s</xliff:g> på telefonen for å koble til enhetene"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"En godkjent enhet i nærheten av bilen din låser opp brukerprofilen ved tenning – selv om noen andre holder enheten."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Bekreft at sammenkoblingskodene er like"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Telefonen er registrert"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Kunne ikke registrere <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Hvis du legger til en godkjent enhet, må du angi en autentiseringsmetode. Hvis du ikke har den godkjente enheten din med deg, kreves autentisering for å få tilgang til profilen din."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Enheten er frakoblet."</string>
<string name="forget" msgid="3971143908183848527">"Glem"</string>
<string name="connect" msgid="5861699594602380150">"Koble til"</string>
<string name="disconnect" msgid="6140789953324820336">"Koble fra"</string>
diff --git a/res/values-ne/arrays.xml b/res/values-ne/arrays.xml
new file mode 100644
index 0000000..3ee6c50
--- /dev/null
+++ b/res/values-ne/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"सोध्नुहोस्"</item>
+ <item msgid="933409503308401889">"कहिल्यै पनि अनुमति नदिनुहोस्"</item>
+ <item msgid="1154273129608299386">"सधैँ अनुमति दिनुहोस्"</item>
+ </string-array>
+</resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 3f47012..6f6f421 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"रात्रि मोड"</string>
<string name="network_and_internet" msgid="4229023630498537530">"नेटवर्क र इन्टरनेट"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"मोबाइल नेटवर्क"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM हरू</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"सक्रिय / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"निष्क्रिय / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"सक्रिय / डाउनलोड गरिएको SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"निष्क्रिय / डाउनलोड गरिएको SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"थप थप्नुहोस्"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"मोबाइल डेटा"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"मोबाइल नेटवर्क प्रयोग गरी डेटामाथि पहुँच राख्नु…"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"मोबाइल डेटा निष्क्रिय पार्ने हो?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"चयन गर्न आवश्यक छ"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"मोबाइल डेटाका लागि <xliff:g id="CARRIER">%1$s</xliff:g> प्रयोग गर्ने हो?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"तपाईं मोबाइल डेटाका लागि <xliff:g id="CARRIER2_0">%2$s</xliff:g> प्रयोग गर्दै हुनुहुन्छ। तपाईं <xliff:g id="CARRIER1">%1$s</xliff:g> मा जानुभयो भने मोबाइल डेटाका लागि अब उप्रान्त <xliff:g id="CARRIER2_1">%2$s</xliff:g> को प्रयोग गरिने छैन।"</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> प्रयोग गर्नुहोस्"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"रोमिङ"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"रोमिङको बेलामा डेटा सेवामा जोड्नुहोस्"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"डेटा रोमिङ गर्ने अनुमति दिने हो?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"तपाईंले चर्को शुल्क तिर्नु पर्ने हुन सक्छ।"</string>
<string name="data_usage_settings" msgid="7877132994777987848">"डेटाको प्रयोग"</string>
<string name="data_usage_title" msgid="2923515974389203812">"प्राथमिक डेटा"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g><xliff:g id="ID_2">^2</xliff:g> प्रयोग गरियो"</string>
@@ -320,12 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"प्रिमियम SMS सुविधा सक्रिय गर्नाले तपाईंलाई पैसा लाग्न सक्छ र उक्त लागत तपाईंको सेवा प्रदायकलाई तिर्नु पर्ने बिलमा जोडिने छ। तपाईंले अनुप्रयोगका लागि अनुमति सक्षम पार्नुभएका खण्डमा तपाईं त्यस अनुप्रयोगको प्रयोग गरेर प्रिमियम SMS पठाउन सक्नु हुने छ।"</string>
<string name="usage_access_title" msgid="7153427122072303254">"प्रयोगसम्बन्धी पहुँच"</string>
<string name="usage_access_description" msgid="2413168719257435422">"प्रयोगको पहुँचले अनुप्रयोगलाई तपाईंले आफ्नो सेवा प्रदायक, भाषासम्बन्धी सेटिङ र अन्य विवरणहरूसहित अन्य कुन कुन अनुप्रयोगहरू गरिरहनुभएको छ र कत्तिको प्रयोग गर्नुहुन्छ भन्ने कुरा ट्र्याक गर्न दिन्छ।"</string>
- <!-- no translation found for directory_access_title (7117264853202268740) -->
- <skip />
- <!-- no translation found for directory_on_volume (4947971311247097078) -->
- <skip />
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi को नियन्त्रण"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi नियन्त्रकले अनुप्रयोगलाई Wi-Fi सक्रिय गर्ने वा निष्क्रिय पार्ने, स्क्यान गरी Wi-Fi नेटवर्कमा जडान गर्ने, नेटवर्कहरू थप्ने वा हटाउने, वा स्थानीय रूपमा मात्र प्रयोग गर्न मिल्ने हटस्पट सुरु गर्ने अनुमति दिन्छ।"</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"थप"</string>
<string name="location_settings_title" msgid="901334356682423679">"स्थान"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"हालका स्थानसम्बन्धी अनुरोधहरू"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"हालसालैका स्थानसम्बन्धी कुनै पनि अनुरोध छैन"</string>
@@ -338,8 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"अनुप्रयोग तथा सेवाहरूलाई जुनसुकै बेला (ब्लुटुथ निष्क्रिय भएको बेलामा पनि) वरपरका यन्त्रहरू स्क्यान गर्न अनुमति दिनुहोस्। यसलाई स्थानमा आधारित सुविधा तथा सेवाहरू सुधार गर्ने जस्ता कार्यहरू गर्नाका लागि प्रयोग गर्न सकिन्छ।"</string>
<string name="system_setting_title" msgid="6864599341809463440">"प्रणाली"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"प्रणालीसम्बन्धी अद्यावधिकहरू"</string>
- <!-- no translation found for status_unavailable (3737918179898732010) -->
- <skip />
<string name="firmware_version" msgid="8491753744549309333">"Android संस्करण"</string>
<string name="security_patch" msgid="4794276590178386903">"Android सुरक्षा प्याचको चरण"</string>
<string name="model_info" msgid="4966408071657934452">"मोडेल"</string>
@@ -347,8 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"कर्नेल संस्करण"</string>
<string name="build_number" msgid="3997326631001009102">"बिल्डको नम्बर"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"ब्लुटुथ ठेगाना"</string>
- <!-- no translation found for about_wifi_mac_address (3934228440550548053) -->
- <skip />
<string name="device_info_not_available" msgid="2095601973977376655">"उपलब्ध छैन"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"स्थिति"</string>
<string name="device_status" msgid="267298179806290920">"स्थिति"</string>
@@ -610,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"अङ्कहरूको बढ्दो, घट्दो वा दोहोरिएको अनुक्रम निषेध गरिएको छ।"</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"स्क्रिन लकका विकल्पहरू"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> दिनअघि"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"विश्वसनीय यन्त्र थप्नुहोस्"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"विश्वसनीय यन्त्र थप्न ब्लुटुथ सक्रिय हुने छ"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"विश्वसनीय यन्त्रहरू"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> यन्त्रहरू</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> यन्त्र</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"तपाईंको <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> जडान भएका बेला यसले यो कार अनलक गर्ने छ कुनै व्यक्तिले तपाईंको <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> लैजानुभयो भने उहाँले यो यन्त्रमाथि पहुँच राख्न सक्ने सम्भावना छ।"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"पुष्टि गर्नुहोस्"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"विश्वसनीय यन्त्रलाई हटाउनुहोस्"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"सम्पन्न भयो"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"कुनै विश्वसनीय यन्त्र सेटअप गर्न सहयोगी अनुप्रयोग प्रयोग गर्नुहोस्। सेटअप भएपछि तपाईंको फोन सवारी साधानको नजिकै भएको कुरा पहिचान हुँदा तपाईंको प्रयोगकर्ता प्रोफाइल अनलक हुने छ।"</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"१. आफ्नो फोनमा सहयोगी अनुप्रयोग डाउनलोड गर्नुहोस्"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"२. यन्त्रहरूको जोडा बनाउन आफ्नो फोनमा <xliff:g id="CAR_NAME">%1$s</xliff:g> चयन गर्नुहोस्"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"अरू कसैले यन्त्र समातिरहेको भए पनि स्विच अन हुँदा तपाईंको कार नजिक रहेको उक्त यन्त्रले प्रयोगकर्ताको प्रोफाइल खोल्ने छ।"</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"जोडा मिलाउने कोड मिल्दाजुल्दा छन् भन्ने सुनिश्चित गर्नुहोस्"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"फोन सफलतापूर्वक दर्ता गरिएको छ"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> दर्ता गर्न सकिएन"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"कुनै विश्वसनीय यन्त्र थप्दा तपाईंले यसपछिको चरणमा प्रमाणीकरण विधि सेट गर्नु पर्छ। तपाईंसँग आफ्नो विश्वसनीय यन्त्र छैन भने तपाईंको प्रोफाइलमाथि पहुँच राख्न प्रमाणीकरणको आवश्यकता पर्ने छ।"</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"यन्त्र विच्छेद गरियो।"</string>
<string name="forget" msgid="3971143908183848527">"बिर्सनुहोस्"</string>
<string name="connect" msgid="5861699594602380150">"जडान गर्नुहोस्"</string>
<string name="disconnect" msgid="6140789953324820336">"विच्छेद गर्नुहोस्"</string>
diff --git a/res/values-nl/arrays.xml b/res/values-nl/arrays.xml
new file mode 100644
index 0000000..372331c
--- /dev/null
+++ b/res/values-nl/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Vragen"</item>
+ <item msgid="933409503308401889">"Nooit toestaan"</item>
+ <item msgid="1154273129608299386">"Altijd toestaan"</item>
+ </string-array>
+</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 0ff3a7f..93303e7 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Nachtmodus"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Netwerk en internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobiel netwerk"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> simkaarten</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> simkaart</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Actief/simkaart"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inactief/simkaart"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Actief, gedownloade simkaart"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inactief/gedownloade simkaart"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Meer toevoegen"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobiele data"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Datatoegang via mobiel netwerk"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Mobiele data uitschakelen?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Selectie vereist"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"<xliff:g id="CARRIER">%1$s</xliff:g> gebruiken voor mobiele data?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Je gebruikt <xliff:g id="CARRIER2_0">%2$s</xliff:g> voor mobiele data. Als je overschakelt naar <xliff:g id="CARRIER1">%1$s</xliff:g>, wordt <xliff:g id="CARRIER2_1">%2$s</xliff:g> niet meer gebruikt voor mobiele data."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> gebruiken"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Verbinding maken met dataservices tijdens roaming"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Dataroaming toestaan?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Er kunnen hoge kosten in rekening worden gebracht."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Datagebruik"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Primaire data"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> gebruikt"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Premium sms\'jes kunnen je geld kosten en worden toegevoegd aan de facturen van je provider. Als je rechten aan een app verleent, kun je premium sms\'jes verzenden met die app."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Gebruikstoegang"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Met gebruikstoegang kan een app bijhouden welke andere apps je gebruikt (en hoe vaak), welke provider je hebt, je taalinstellingen en andere details."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Toegang tot directory"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wifi-beheer"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Met \'Wifi-beheer\' kun je een app toestaan om wifi in of uit te schakelen, wifi-netwerken te scannen en er verbinding mee te maken, netwerken toe te voegen of te verwijderen of een hotspot \'Alleen lokaal\' te starten."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Meer"</string>
<string name="location_settings_title" msgid="901334356682423679">"Locatie"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Recente locatieverzoeken"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Geen recente locatieverzoeken"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Apps en services toestaan altijd te scannen naar apparaten in de buurt, zelfs als Bluetooth is uitgeschakeld. Dit kan bijvoorbeeld worden gebruikt om locatiegebaseerde functies en services te verbeteren."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Systeem"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Systeemupdates"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Niet beschikbaar"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android-versie"</string>
<string name="security_patch" msgid="4794276590178386903">"Android-beveiligingspatchniveau"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kernel-versie"</string>
<string name="build_number" msgid="3997326631001009102">"Build-nummer"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-adres"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"MAC-adres voor wifi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Niet beschikbaar"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Een oplopende, aflopende of herhaalde reeks cijfers is niet toegestaan."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Schermvergrendelingsopties"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> dagen geleden"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Vertrouwd apparaat toevoegen"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Vertrouwd apparaat wordt toegevoegd via Bluetooth"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Vertrouwde apparaten"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> apparaten</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> apparaat</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Je <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ontgrendelt deze auto wanneer je apparaat is verbonden. Als iemand je <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> in handen krijgt, kan die persoon mogelijk toegang krijgen tot dit apparaat."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Bevestigen"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Veilig apparaat verwijderen"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Klaar"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Gebruik de bijbehorende app om een vertrouwd apparaat in te stellen. Na het instellen wordt je gebruikersprofiel automatisch ontgrendeld wanneer je telefoon in de buurt van het voertuig wordt waargenomen."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Download de bijbehorende app op je telefoon"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Selecteer <xliff:g id="CAR_NAME">%1$s</xliff:g> op je telefoon om de apparaten te koppelen"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Een vertrouwd apparaat in de buurt van je auto ontgrendelt het gebruikersprofiel wanneer de auto wordt gestart, ook als iemand anders het apparaat vasthoudt."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Bevestig dat de koppelingscodes overeenkomen"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"De telefoon is ingeschreven"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Inschrijving van <xliff:g id="DEVICE_NAME">%1$s</xliff:g> mislukt"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Als je een vertrouwd apparaat toevoegt, moet je daarna een verificatiemethode instellen. Als je je vertrouwde apparaat niet bij je hebt, is verificatie vereist voor toegang tot je profiel."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Verbinding met apparaat verbroken."</string>
<string name="forget" msgid="3971143908183848527">"Vergeten"</string>
<string name="connect" msgid="5861699594602380150">"Verbinden"</string>
<string name="disconnect" msgid="6140789953324820336">"Verbinding verbreken"</string>
diff --git a/res/values-or/arrays.xml b/res/values-or/arrays.xml
new file mode 100644
index 0000000..ec65b14
--- /dev/null
+++ b/res/values-or/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"ପଚାରନ୍ତୁ"</item>
+ <item msgid="933409503308401889">"ଆଦୌ ଅନୁମତି ଦିଅନ୍ତୁ ନାହିଁ"</item>
+ <item msgid="1154273129608299386">"ସର୍ବଦା ଅନୁମତି ଦିଅନ୍ତୁ"</item>
+ </string-array>
+</resources>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 1ae8b39..07d117d 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"ନାଇଟ୍ ମୋଡ୍"</string>
<string name="network_and_internet" msgid="4229023630498537530">"ନେଟ୍ୱର୍କ ଓ ଇର୍ଣ୍ଟନେଟ୍"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"ମୋବାଇଲ୍ ନେଟ୍ୱର୍କ"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g>ଟି SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g>ଟି SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"ସକ୍ରିୟ / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"ନିଷ୍କ୍ରିୟ / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"ସକ୍ରିୟ / ଡାଉନଲୋଡ୍ କରଯାଇଥିବା SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"ନିଷ୍କ୍ରିୟ / ଡାଉନଲୋଡ୍ ହୋଇଥିବା SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"ଅଧିକ ଯୋଗ କରନ୍ତୁ"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"ମୋବାଇଲ୍ ଡାଟା"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"ମୋବାଇଲ୍ ନେଟ୍ୱର୍କକୁ ବ୍ୟବହାରକରି ଡାଟା ଆକ୍ସେସ୍ କରନ୍ତୁ"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"ମୋବାଇଲ୍ ଡାଟା ବନ୍ଦ କରିବେ?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"ଆବଶ୍ୟକୀୟ ମନୋନୟନ"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"ମୋବାଇଲ୍ ଡାଟା ପାଇଁ <xliff:g id="CARRIER">%1$s</xliff:g> ବ୍ୟବହାର କରିନ୍ତୁ?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"ମୋବାଇଲ୍ ଡାଟା ପାଇଁ ଆପଣ <xliff:g id="CARRIER2_0">%2$s</xliff:g> ବ୍ୟବହାର କରୁଛନ୍ତି। ଯଦି ଆପଣ <xliff:g id="CARRIER1">%1$s</xliff:g>କୁ ସ୍ୱିଚ୍ କରୁଛନ୍ତି, ତେବେ ମୋବାଇଲ୍ ଡାଟା ପାଇଁ ଆଉ <xliff:g id="CARRIER2_1">%2$s</xliff:g> ବ୍ୟବହୃତ ହେବ ନାହିଁ।"</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> ବ୍ୟବହାର କରନ୍ତୁ"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"ରୋମିଂ"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"ରୋମିଂ ବେଳେ ଡାଟା ସେବାଗୁଡ଼ିକୁ ସଂଯୋଗ କରନ୍ତୁ"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"ଡାଟା ରୋମିଂର ଅନୁମତି ଦେବେ?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"ଆପଣଙ୍କୁ ଅଧିକ ଦେୟ ଲାଗୁ ହୋଇପାରେ।"</string>
<string name="data_usage_settings" msgid="7877132994777987848">"ଡାଟାର ବ୍ୟବହାର"</string>
<string name="data_usage_title" msgid="2923515974389203812">"ପ୍ରାଥମିକ ଡାଟା"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> ବ୍ୟବହୃତ ହୋଇଛି"</string>
@@ -320,12 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"ପ୍ରିମିୟମ୍ SMSରେ ଆପଣଙ୍କୁ ଖର୍ଚ୍ଚ କରିବାକୁ ପଡ଼ିପାରେ ଏବଂ ତାହା ଆପଣଙ୍କର ମୋବାଇଲ୍ କମ୍ପାନୀର ବିଲ୍ରେ ଯୋଗ ହୋଇଯିବ। ଯଦି ଆପଣ ଏକ ଆପ୍ ପାଇଁ ଅନୁମତି ଦେଇଛନ୍ତି, ତେବେ ସେହି ଆପ୍ ବ୍ୟବହାର କରି ଆପଣ ପ୍ରିମିୟମ୍ SMS ପଠାଇ ପାରିବେ।"</string>
<string name="usage_access_title" msgid="7153427122072303254">"ବ୍ୟବହାର ଆକସେସ୍"</string>
<string name="usage_access_description" msgid="2413168719257435422">"ଆପଣ କେଉଁ ଅନ୍ୟ ଆପ୍ସ କେତେ ଥର ବ୍ୟବହାର କରୁଛନ୍ତି, ତଥା ଆପଣଙ୍କ ମୋବାଇଲ କମ୍ପାନୀ, ଭାଷା ସେଟିଂସ୍ ଏବଂ ଅନ୍ୟ ବିବରଣୀକୁ ଟ୍ରାକ୍ କରିବା ପାଇଁ, ବ୍ୟବହାରର ଆକସେସ୍ ଏକ ଆପ୍କୁ ଅନୁମତି ଦେଇଥାଏ।"</string>
- <!-- no translation found for directory_access_title (7117264853202268740) -->
- <skip />
- <!-- no translation found for directory_on_volume (4947971311247097078) -->
- <skip />
<string name="wifi_control_title" msgid="5660436566907731929">"ୱାଇ-ଫାଇ ନିୟନ୍ତ୍ରଣ"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"ୱାଇ-ଫାଇ ନିୟନ୍ତ୍ରଣ କୌଣସି ଆପ୍କୁ ୱାଇ-ଫାଇ ଚାଲୁ କରିବା କିମ୍ବା ବନ୍ଦ କରିବା, ସ୍କାନ୍ କରି ୱାଇ-ଫାଇ ନେଟ୍ୱାର୍କ ସହ ସଂଯୋଗ କରିବା, ନେଟ୍ୱାର୍କଗୁଡ଼ିକୁ ଯୋଗ କରିବା କିମ୍ବା କାଢ଼ି ଦେବା କିମ୍ବା କେବଳ ଏକ ସ୍ଥାନୀୟ ହଟ୍ସ୍ପଟ୍ ଆରମ୍ଭ କରିବାକୁ ଅନୁମତି ଦେଇଥାଏ।"</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"ଅଧିକ"</string>
<string name="location_settings_title" msgid="901334356682423679">"ଲୋକେସନ୍"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"ସାମ୍ପ୍ରତିକ ଲୋକେସନ୍ ଅନୁରୋଧ"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"କୌଣସି ନିକଟର ଲୋକେସନ୍ ଅନୁରୋଧ ହୋଇନାହିଁ"</string>
@@ -338,8 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ଏପରିକି ବ୍ଲୁଟୁଥ୍ ବନ୍ଦ ଥିଲେ ମଧ୍ୟ, ଆପ୍ ଓ ସେବାଗୁଡ଼ିକୁ ଯେକୌଣସି ସମୟରେ ଆଖପାଖରେ ଥିବା ଡିଭାଇସ୍ ଖୋଜିବାକୁ ଦିଏ। ଏହାକୁ ଲୋକେସନ୍ ଆଧାରିତ ଫିଚର୍ ଓ ସେବା ଇତ୍ୟାଦିକୁ ଉନ୍ନତ କରିବା ପାଇଁ ବ୍ୟବହାର କରାଯାଇପାରେ।"</string>
<string name="system_setting_title" msgid="6864599341809463440">"ସିଷ୍ଟମ୍"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"ସିଷ୍ଟମ୍ ଅପ୍ଡେଟ୍"</string>
- <!-- no translation found for status_unavailable (3737918179898732010) -->
- <skip />
<string name="firmware_version" msgid="8491753744549309333">"Android ଭର୍ସନ୍"</string>
<string name="security_patch" msgid="4794276590178386903">"Android ସୁରକ୍ଷା ପାଚ୍ ସ୍ତର"</string>
<string name="model_info" msgid="4966408071657934452">"ମଡେଲ୍"</string>
@@ -347,8 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"କର୍ନେଲ୍ ଭର୍ସନ୍"</string>
<string name="build_number" msgid="3997326631001009102">"ନମ୍ୱର୍ ଗଠନ କରନ୍ତୁ"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"ବ୍ଲୁଟୁଥ୍ ଠିକଣା"</string>
- <!-- no translation found for about_wifi_mac_address (3934228440550548053) -->
- <skip />
<string name="device_info_not_available" msgid="2095601973977376655">"ଉପଲବ୍ଧ ନାହିଁ"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"ସ୍ଥିତି"</string>
<string name="device_status" msgid="267298179806290920">"ସ୍ଥିତି"</string>
@@ -610,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ସଂଖ୍ୟାର କ୍ରମବୃଦ୍ଧି, କ୍ରମହ୍ରାସ, କିମ୍ବା କ୍ରମ ଦୋହରାଇବାର ଅନୁମତି ନାହିଁ।"</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ସ୍କ୍ରୀନ୍ ଲକ୍ ବିକଳ୍ପମାନ"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ଦିନ ପୂର୍ବେ"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"ବିଶ୍ୱସ୍ତ ଡିଭାଇସ୍ ଯୋଗ କରନ୍ତୁ"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"ବିଶ୍ୱସ୍ତ ଡିଭାଇସ୍କୁ ଯୋଗ କରିବାକୁ ବ୍ଲୁଟୁଥ୍ ଚାଲୁ ହେବ"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"ବିଶ୍ୱସ୍ତ ଡିଭାଇସ୍"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g>ଟି ଡିଭାଇସ୍</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g>ଟିି ଡିିିଭାଇସ୍</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"ଏହା ସଂଯୋଗ ହେଲେ ଆପଣଙ୍କର <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ଏହି କାର୍ ଅନ୍ଲକ କରିବ। ଯଦି କେହିଜଣେ ଆପଣଙ୍କର <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> ନିଏ, ସେମାନେ ହୁଏତ ଏହି ଡିଭାଇସ୍ ଆକ୍ସେସ୍ କରିବାକୁ ସକ୍ଷମ ହୋଇପାରନ୍ତି"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"ନିଶ୍ଚିତ କରନ୍ତୁ"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"ବିଶ୍ୱସ୍ତ ଡିଭାଇସ୍ କାଢ଼ିଦିଅନ୍ତୁ"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"ହୋଇଗଲା"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"ଏକ ବିଶ୍ୱସ୍ତ ଡିଭାଇସ୍ ସେଟ୍ ଅପ୍ କରିବା ପାଇଁ ସହଯୋଗୀ ଆପ୍ ବ୍ୟବହାର କରନ୍ତୁ। ଥରେ ସେଟ୍ ଅପ୍ ହେଲେ, ଆପଣଙ୍କର ଫୋନ୍ ଗାଡି ପାଖରେ ଚିହ୍ନଟ ହେଉଥିବା ସମୟରେ ଆପଣଙ୍କର ଉପଯୋଗକର୍ତ୍ତା ପ୍ରୋଫାଇଲ୍ ସ୍ୱଚାଳିତ ଭାବେ ଅନ୍ଲକ୍ ହେବ।"</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. ଆପଣଙ୍କର ଫୋନ୍ରେ ସହଯୋଗୀ ଆପ୍ ଡାଉନ୍ଲୋଡ୍ କରନ୍ତୁ"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. ଡିଭାଇସ୍ ପେୟାର୍ କରିବାକୁ ଆପଣଙ୍କ ଫୋନ୍ରୁ <xliff:g id="CAR_NAME">%1$s</xliff:g> ବାଛନ୍ତୁ"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"ଅନ୍ୟ କେହି ଡିଭାଇସ୍କୁ ଧରି ଥିଲେ ମଧ୍ୟ, ଇଞ୍ଜିନ୍ ଚାଲୁ ହେଲେ ଆପଣଙ୍କର କାର୍ ନିକଟର ଏକ ବିଶ୍ୱସ୍ତ ଡିଭାଇସ୍ ଉପଭୋକ୍ତା ପ୍ରୋଫାଇଲ୍କୁ ଅନ୍ଲକ୍ କରିବ।"</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"ଦୟାକରି ସୁନିଶ୍ଚିତ କରନ୍ତୁ ଯେ ପେୟାରିଂ କୋଡ୍ଗୁଡ଼ିକ ମେଳ ଖାଉଛି"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"ଫୋନ୍ ସଫଳତାର ସହ ପଞ୍ଜୀକୃତ ହୋଇଛି"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ନାମାଙ୍କନ ହୋଇପାରିଲା ନାହିଁ"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"ଏହାପରେ ଏକ ବିଶ୍ୱସନୀୟ ଡିଭାଇସ୍ ଯୋଗ କରିବାରେ ଆପଣଙ୍କୁ ପ୍ରମାଣିକରଣର ଉପାୟ ସେଟ୍ କରିବାକୁ ହେବ। ଯଦି ଆପଣଙ୍କ ପାଖରେ ବିଶ୍ୱସନୀୟ ଡିଭାଇସ୍ ନାହିଁ, ତେବେ ଆପଣଙ୍କ ପ୍ରୋଫାଇଲ୍ ଆକ୍ସେସ୍ କରିବାକୁ ପ୍ରମାଣିକରଣ ଆବଶ୍ୟକ ହେବ।"</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"ଡିଭାଇସ୍ ବିଚ୍ଛିନ୍ନ ହୋଇଛି।"</string>
<string name="forget" msgid="3971143908183848527">"ଭୁଲିଗଲେ"</string>
<string name="connect" msgid="5861699594602380150">"ସଂଯୋଗ କରନ୍ତୁ"</string>
<string name="disconnect" msgid="6140789953324820336">"ବିଛିନ୍ନ କରନ୍ତୁ"</string>
diff --git a/res/values-pa/arrays.xml b/res/values-pa/arrays.xml
new file mode 100644
index 0000000..2cd3675
--- /dev/null
+++ b/res/values-pa/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"ਪੁੱਛੋ"</item>
+ <item msgid="933409503308401889">"ਕਦੇ ਵੀ ਕਰਨ ਨਾ ਦਿਓ"</item>
+ <item msgid="1154273129608299386">"ਹਮੇਸ਼ਾਂ ਕਰਨ ਦਿਓ"</item>
+ </string-array>
+</resources>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 4755cec..e296e36 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"ਰਾਤ ਵਾਲਾ ਮੋਡ"</string>
<string name="network_and_internet" msgid="4229023630498537530">"ਨੈੱਟਵਰਕ ਅਤੇ ਇੰਟਰਨੈੱਟ"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> ਸਿਮ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ਸਿਮ</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"ਕਿਰਿਆਸ਼ੀਲ / ਸਿਮ"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"ਅਕਿਰਿਆਸ਼ੀਲ / ਸਿਮ"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"ਕਿਰਿਆਸ਼ੀਲ / ਡਾਊਨਲੋਡ ਕੀਤਾ ਸਿਮ"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"ਅਕਿਰਿਆਸ਼ੀਲ / ਡਾਊਨਲੋਡ ਕੀਤਾ ਸਿਮ"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"ਹੋਰ ਸ਼ਾਮਲ ਕਰੋ"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"ਮੋਬਾਈਲ ਡਾਟਾ"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਵਰਤ ਕੇ ਡਾਟੇ ਤੱਕ ਪਹੁੰਚ ਪ੍ਰਾਪਤ ਕਰੋ"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"ਕੀ ਮੋਬਾਈਲ ਡਾਟਾ ਬੰਦ ਕਰਨਾ ਹੈ?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"ਚੋਣ ਲੋੜੀਂਦੀ ਹੈ"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"ਕੀ ਮੋਬਾਈਲ ਡਾਟੇ ਲਈ <xliff:g id="CARRIER">%1$s</xliff:g> ਵਰਤਣਾ ਹੈ?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"ਤੁਸੀਂ ਮੋਬਾਈਲ ਡਾਟੇ ਲਈ <xliff:g id="CARRIER2_0">%2$s</xliff:g> ਵਰਤ ਰਹੇ ਹੋ। ਜੇ ਤੁਸੀਂ <xliff:g id="CARRIER1">%1$s</xliff:g> \'ਤੇ ਜਾਂਦੇ ਹੋ, ਤਾਂ ਹੁਣ <xliff:g id="CARRIER2_1">%2$s</xliff:g> ਮੋਬਾਈਲ ਡਾਟਾ ਲਈ ਨਹੀਂ ਵਰਤਿਆ ਜਾਵੇਗਾ।"</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> ਵਰਤੋ"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"ਰੋਮਿੰਗ"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"ਰੋਮਿੰਗ ਵੇਲੇ ਡਾਟਾ ਸੇਵਾਵਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰੋ"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"ਕੀ ਡਾਟਾ ਰੋਮਿੰਗ ਵਿਕਲਪ ਵਰਤਣ ਦੇਣਾ ਹੈ?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"ਤੁਹਾਨੂੰ ਵਾਧੂ ਖਰਚਾ ਦੇਣਾ ਪੈ ਸਕਦਾ ਹੈ।"</string>
<string name="data_usage_settings" msgid="7877132994777987848">"ਡਾਟਾ ਵਰਤੋਂ"</string>
<string name="data_usage_title" msgid="2923515974389203812">"ਮੁੱਖ ਡਾਟਾ"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> ਡਾਟਾ ਵਰਤਿਆ ਗਿਆ"</string>
@@ -320,12 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"ਪ੍ਰੀਮੀਅਮ SMS ਦਾ ਤੁਹਾਡੇ ਤੋਂ ਖਰਚਾ ਲਿਆ ਜਾ ਸਕਦਾ ਹੈ ਅਤੇ ਇਸ ਨਾਲ ਤੁਹਾਡੇ ਕੈਰੀਅਰ ਬਿੱਲਾਂ ਵਿੱਚ ਵਾਧਾ ਹੋ ਜਾਵੇਗਾ। ਜੇ ਤੁਸੀਂ ਕਿਸੇ ਐਪ ਨੂੰ ਇਜਾਜ਼ਤ ਦਿੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਉਸ ਐਪ ਦੀ ਵਰਤੋਂ ਨਾਲ ਪ੍ਰੀਮੀਅਮ SMS ਭੇਜਣ ਦੇ ਯੋਗ ਹੋ ਜਾਵੋਗੇ।"</string>
<string name="usage_access_title" msgid="7153427122072303254">"ਵਰਤੋਂ ਪਹੁੰਚ"</string>
<string name="usage_access_description" msgid="2413168719257435422">"ਵਰਤੋਂ ਪਹੁੰਚ ਕਿਸੇ ਐਪ ਨੂੰ ਇਹ ਨਜ਼ਰ ਰੱਖਣ ਦਿੰਦਾ ਹੈ ਕਿ ਤੁਸੀਂ ਕਿਹੜੀਆਂ ਐਪਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹੋ ਅਤੇ ਕਿੰਨੀ ਵਾਰੀ, ਜਿਵੇਂ ਕਿ ਤੁਹਾਡਾ ਕੈਰੀਅਰ, ਭਾਸ਼ਾ ਸੈਟਿੰਗਾਂ, ਅਤੇ ਹੋਰ ਵੇਰਵੇ।"</string>
- <!-- no translation found for directory_access_title (7117264853202268740) -->
- <skip />
- <!-- no translation found for directory_on_volume (4947971311247097078) -->
- <skip />
<string name="wifi_control_title" msgid="5660436566907731929">"ਵਾਈ‑ਫਾਈ ਕੰਟਰੋਲ"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"ਵਾਈ-ਫਾਈ ਕੰਟਰੋਲ ਰਾਹੀਂ ਕੋਈ ਐਪ ਵਾਈ-ਫਾਈ ਚਾਲੂ ਜਾਂ ਬੰਦ ਕਰ ਸਕਦੀ ਹੈ, ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕਾਂ ਨੂੰ ਸਕੈਨ ਅਤੇ ਉਹਨਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰ ਸਕਦੀ ਹੈ, ਨੈੱਟਵਰਕਾਂ ਨੂੰ ਸ਼ਾਮਲ ਕਰ ਜਾਂ ਹਟਾ ਸਕਦੀ ਹੈ, ਜਾਂ ਸਿਰਫ਼-ਸਥਾਨਕ ਹੌਟਸਪੌਟ ਸ਼ੁਰੂ ਕਰ ਸਕਦੀ ਹੈ।"</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"ਹੋਰ"</string>
<string name="location_settings_title" msgid="901334356682423679">"ਟਿਕਾਣਾ"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"ਹਾਲੀਆ ਟਿਕਾਣਾ ਬੇਨਤੀਆਂ"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ਕੋਈ ਹਾਲੀਆ ਟਿਕਾਣਾ ਬੇਨਤੀਆਂ ਨਹੀਂ"</string>
@@ -338,8 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"ਬਲੂਟੁੱਥ ਬੰਦ ਹੋਣ \'ਤੇ ਵੀ ਐਪਾਂ ਅਤੇ ਸੇਵਾਵਾਂ ਨੂੰ ਕਿਸੇ ਵੀ ਵੇਲੇ ਨਜ਼ਦੀਕੀ ਡੀਵਾਈਸਾਂ ਲਈ ਸਕੈਨ ਕਰਨ ਦਿਓ। ਇਸਦੀ ਵਰਤੋਂ ਕਰਕੇ ਟਿਕਾਣਾ-ਆਧਾਰਿਤ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਅਤੇ ਸੇਵਾਵਾਂ ਵਰਗੀਆਂ ਚੀਜ਼ਾਂ ਨੂੰ ਬਿਹਤਰ ਬਣਾਇਆ ਜਾ ਸਕਦਾ ਹੈ।"</string>
<string name="system_setting_title" msgid="6864599341809463440">"ਸਿਸਟਮ"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"ਸਿਸਟਮ ਅੱਪਡੇਟ"</string>
- <!-- no translation found for status_unavailable (3737918179898732010) -->
- <skip />
<string name="firmware_version" msgid="8491753744549309333">"Android ਵਰਜਨ"</string>
<string name="security_patch" msgid="4794276590178386903">"Android ਸੁਰੱਖਿਆ ਪੈਚ ਪੱਧਰ"</string>
<string name="model_info" msgid="4966408071657934452">"ਮਾਡਲ"</string>
@@ -347,8 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"ਕਰਨਲ ਵਰਜਨ"</string>
<string name="build_number" msgid="3997326631001009102">"ਬਿਲਡ ਨੰਬਰ"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"ਬਲੂਟੁੱਥ ਪਤਾ"</string>
- <!-- no translation found for about_wifi_mac_address (3934228440550548053) -->
- <skip />
<string name="device_info_not_available" msgid="2095601973977376655">"ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"ਸਥਿਤੀ"</string>
<string name="device_status" msgid="267298179806290920">"ਸਥਿਤੀ"</string>
@@ -610,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ਅੰਕਾਂ ਦਾ ਵਧਦਾ ਕ੍ਰਮ, ਘਟਦਾ ਕ੍ਰਮ, ਜਾਂ ਦੁਹਰਾਈ ਗਈ ਲੜੀ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।"</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ਸਕ੍ਰੀਨ ਲਾਕ ਦੇ ਵਿਕਲਪ"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ਦਿਨ ਪਹਿਲਾਂ"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸ ਸ਼ਾਮਲ ਕਰੋ"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਬਲੂਟੁੱਥ ਚਾਲੂ ਹੋਵੇਗਾ"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸਾਂ"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> ਡੀਵਾਈਸ</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ਡੀਵਾਈਸਾਂ</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"ਤੁਹਾਡਾ <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ਇਸ ਕਾਰ ਨੂੰ ਅਣਲਾਕ ਕਰ ਦੇਵੇਗਾ, ਜਦੋਂ ਇਹ ਕਨੈਕਟ ਕੀਤਾ ਹੋਇਆ ਹੋਵੇਗਾ। ਜੇਕਰ ਕੋਈ ਤੁਹਾਡਾ <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> ਲੈ ਲੈਂਦਾ ਹੈ, ਤਾਂ ਹੋ ਸਕਦਾ ਹੈ ਕਿ ਉਹ ਇਸ ਡੀਵਾਈਸ \'ਤੇ ਪਹੁੰਚ ਕਰਨ ਦੇ ਯੋਗ ਹੋ ਜਾਵੇ।"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"ਪੁਸ਼ਟੀ ਕਰੋ"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸ ਹਟਾਓ"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"ਹੋ ਗਿਆ"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"ਕਿਸੇ ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸ ਨੂੰ ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਸੰਬੰਧੀ ਐਪ ਵਰਤੋ। ਤੁਹਾਡਾ ਫ਼ੋਨ ਵਾਹਨ ਦੇ ਨੇੜੇ ਹੋਣ \'ਤੇ ਇੱਕ ਵਾਰ ਸੈੱਟਅੱਪ ਕਰਨ ਤੋਂ ਬਾਅਦ, ਤੁਹਾਡੀ ਵਰਤੋਂਕਾਰ ਪ੍ਰੋਫਾਈਲ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਅਣਲਾਕ ਹੋ ਜਾਵੇਗੀ।"</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. ਆਪਣੇ ਫ਼ੋਨ \'ਤੇ ਸੰਬੰਧੀ ਐਪ ਡਾਊਨਲੋਡ ਕਰੋ"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. ਡੀਵਾਈਸਾਂ ਨੂੰ ਜੋੜਾਬੱਧ ਕਰਨ ਲਈ ਆਪਣੇ ਫ਼ੋਨ \'ਤੇ <xliff:g id="CAR_NAME">%1$s</xliff:g> ਚੁਣੋ"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"ਕਿਸੇ ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸ ਦਾ ਤੁਹਾਡੀ ਕਾਰ ਦੇ ਨਜ਼ਦੀਕ ਹੋਣਾ ਵਰਤੋਂਕਾਰ ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਬਲਨ ਵੇਲੇ ਅਣਲਾਕ ਰੱਖੇਗਾ, ਭਾਵੇਂ ਡੀਵਾਈਸ ਨੂੰ ਕਿਸੇ ਹੋਰ ਨੇ ਫੜਿਆ ਹੋਵੇ।"</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"ਕਿਰਪਾ ਕਰਕੇ ਜੋੜਾਬੱਧਕਰਨ ਕੋਡਾਂ ਦੇ ਮੇਲ ਖਾਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"ਫ਼ੋਨ ਨੂੰ ਸਫਲਤਾਪੂਰਵਕ ਦਰਜ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ਨੂੰ ਦਰਜ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਅੱਗੇ ਤੁਹਾਨੂੰ ਪ੍ਰਮਾਣੀਕਰਨ ਵਿਧੀ ਸੈੱਟ ਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ। ਜੇ ਤੁਹਾਡੇ ਕੋਲ ਤੁਹਾਡਾ ਭਰੋਸੇਯੋਗ ਡੀਵਾਈਸ ਨਹੀਂ ਹੈ, ਤਾਂ ਤੁਹਾਨੂੰ ਆਪਣੇ ਪ੍ਰੋਫ਼ਾਈਲ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਲਈ ਪ੍ਰਮਾਣੀਕਰਨ ਦੀ ਲੋੜ ਹੋਵੇਗੀ।"</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"ਡੀਵਾਈਸ ਡਿਸਕਨੈਕਟ ਕੀਤਾ ਗਿਆ।"</string>
<string name="forget" msgid="3971143908183848527">"ਛੱਡੋ"</string>
<string name="connect" msgid="5861699594602380150">"ਕਨੈਕਟ ਕਰੋ"</string>
<string name="disconnect" msgid="6140789953324820336">"ਡਿਸਕਨੈਕਟ ਕਰੋ"</string>
diff --git a/res/values-pl/arrays.xml b/res/values-pl/arrays.xml
new file mode 100644
index 0000000..a1b7498
--- /dev/null
+++ b/res/values-pl/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Zapytaj"</item>
+ <item msgid="933409503308401889">"Nigdy nie zezwalaj"</item>
+ <item msgid="1154273129608299386">"Zawsze zezwalaj"</item>
+ </string-array>
+</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 1eefca4..276a89f 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -31,9 +31,28 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Tryb nocny"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Sieć i internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Sieć komórkowa"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> karty SIM</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> kart SIM</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> karty SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> karta SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktywna / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Nieaktywna / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktywna / Pobrana karta SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Nieaktywna / Pobrana karta SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Dodaj więcej"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Dane mobilne"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Korzystaj z danych przy użyciu sieci komórkowej"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Wyłączyć mobilną transmisję danych?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Musisz wybrać kartę"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Użyć: <xliff:g id="CARRIER">%1$s</xliff:g> do transmisji danych?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Używasz sieci <xliff:g id="CARRIER2_0">%2$s</xliff:g> do mobilnej transmisji danych. Jeśli przełączysz się na sieć <xliff:g id="CARRIER1">%1$s</xliff:g>, sieć <xliff:g id="CARRIER2_1">%2$s</xliff:g> nie będzie już używana w tym celu."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Użyj karty operatora <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Połącz z usługami transmisji danych podczas roamingu"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Zezwalać na roaming danych?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Mogą się z tym wiązać wysokie opłaty."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Użycie danych"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Dane podstawowe"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Wykorzystano <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -324,10 +343,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Za SMS-y specjalne może być pobierana dodatkowa, wyższa opłata, która pojawi się na Twoim rachunku telefonicznym. Po włączeniu tego uprawnienia możliwe będzie wysyłanie SMS-ów specjalnych z wybranej aplikacji."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Dostęp do danych o użyciu"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Dostęp do danych o użyciu umożliwia aplikacji śledzenie tego, jakich innych aplikacji używasz i jak często, oraz odczytywanie m.in. informacji o operatorze i ustawień językowych."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Dostęp do katalogu"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Sterowanie Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Sterowanie Wi-Fi pozwala aplikacji na włączanie i wyłączanie Wi-Fi, wyszukiwanie sieci Wi-Fi i łączenie się z nimi, dodawanie oraz usuwanie sieci i uruchamianie lokalnego hotspota."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Więcej"</string>
<string name="location_settings_title" msgid="901334356682423679">"Lokalizacja"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Ostatnie prośby o lokalizację"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Brak ostatnich próśb o lokalizację"</string>
@@ -340,7 +358,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Zezwól na wyszukiwanie urządzeń w pobliżu przez aplikacje i usługi w dowolnym momencie, nawet gdy Bluetooth jest wyłączony. Może to np. pomóc usprawnić działanie funkcji i usług opartych na lokalizacji."</string>
<string name="system_setting_title" msgid="6864599341809463440">"System"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Aktualizacje systemu"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Brak dostępu"</string>
<string name="firmware_version" msgid="8491753744549309333">"Wersja Androida"</string>
<string name="security_patch" msgid="4794276590178386903">"Stan aktualizacji zabezpieczeń Androida"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -348,7 +365,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Wersja jądra"</string>
<string name="build_number" msgid="3997326631001009102">"Numer kompilacji"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Adres Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Adres MAC karty Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Niedostępna"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Stan"</string>
<string name="device_status" msgid="267298179806290920">"Stan"</string>
@@ -626,6 +642,28 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ciąg cyfr rosnących, malejących lub powtarzających się jest niedozwolony."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opcje blokady ekranu"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> dni temu"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Dodaj zaufane urządzenie"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Aby dodać zaufane urządzenie, włączy się Bluetooth"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Zaufane urządzenia"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> urządzenia</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> urządzeń</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> urządzenia</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> urządzenie</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> odblokuje ten samochód, gdy się z nim połączy. Jeśli <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> znajdzie się w niepowołanych rękach, taka osoba będzie mogła uzyskać dostęp do tego urządzenia."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Potwierdź"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Usuń zaufane urządzenie"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"OK"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Skonfiguruj zaufane urządzenie w aplikacji towarzyszącej. Dzięki temu Twój profil użytkownika odblokuje się automatycznie, gdy tylko samochód wykryje Twój telefon w pobliżu."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Pobierz aplikację towarzyszącą na telefon"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Na telefonie wybierz <xliff:g id="CAR_NAME">%1$s</xliff:g>, by sparować urządzenia"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Zaufane urządzenie w pobliżu samochodu odblokuje profil użytkownika w momencie włączenia zapłonu, nawet jeśli urządzenie trzyma ktoś inny."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Potwierdź, że kody parowania są takie same"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Telefon został zarejestrowany"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Nie udało się zarejestrować urządzenia <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Po dodaniu zaufanego urządzenia musisz wybrać metodę uwierzytelniania. Dzięki niej uzyskasz dostęp do swojego profilu, gdy akurat nie będziesz mieć zaufanego urządzenia przy sobie."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Urządzenie zostało rozłączone."</string>
<string name="forget" msgid="3971143908183848527">"Zapomnij"</string>
<string name="connect" msgid="5861699594602380150">"Połącz"</string>
<string name="disconnect" msgid="6140789953324820336">"Odłącz"</string>
diff --git a/res/values-pt-rPT/arrays.xml b/res/values-pt-rPT/arrays.xml
new file mode 100644
index 0000000..ffa51f0
--- /dev/null
+++ b/res/values-pt-rPT/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Perguntar"</item>
+ <item msgid="933409503308401889">"Nunca permitir"</item>
+ <item msgid="1154273129608299386">"Permitir sempre"</item>
+ </string-array>
+</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index e926451..db97256 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Modo noturno"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Rede e Internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Rede móvel"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIMs</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Ativo/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inativo/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Ativo/SIM transferido"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inativo/SIM transferido"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Adicione mais"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Dados móveis"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Aceder aos dados através de rede móvel"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Pretende desativar os dados móveis?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"A seleção é necessária."</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Utilizar <xliff:g id="CARRIER">%1$s</xliff:g> para dados móveis?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Está a utilizar o operador <xliff:g id="CARRIER2_0">%2$s</xliff:g> para dados móveis. Se mudar para o operador <xliff:g id="CARRIER1">%1$s</xliff:g>, o operador <xliff:g id="CARRIER2_1">%2$s</xliff:g> deixa de ser utilizado para dados móveis."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Utilizar <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Ligar a serviços de dados em roaming"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Pretende permitir roaming de dados?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Pode incorrer em custos significativos."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Utilização de dados"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Dados principais"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> utilizado(s)"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"O serviço de SMS premium pode custar dinheiro e, nesse caso, será adicionado às faturas do seu operador. Se ativar a autorização para uma aplicação, poderá enviar SMS premium através da mesma."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Acesso de utilização"</string>
<string name="usage_access_description" msgid="2413168719257435422">"O acesso de utilização permite a uma aplicação monitorizar que outras aplicações está a utilizar e com que frequência, bem como o operador e as definições de idioma, entre outros detalhes."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Acesso ao diretório"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Controlo de Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"O controlo de Wi-Fi permite a uma aplicação ativar ou desativar o Wi-Fi, procurar e estabelecer ligação a redes Wi-Fi, adicionar ou remover redes, assim como iniciar uma zona Wi-Fi apenas local."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Mais"</string>
<string name="location_settings_title" msgid="901334356682423679">"Localização"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Pedidos de localização recentes"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Sem pedidos de localização recentes."</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Permita que as aplicações e os serviços procurem dispositivos próximos em qualquer altura, mesmo quando o Bluetooth estiver desativado. Isto pode ser utilizado para, p. ex., melhorar as funcionalidades e os serviços baseados na localização."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Atualizações do sistema"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Indisponível"</string>
<string name="firmware_version" msgid="8491753744549309333">"Versão do Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Nível do patch de segurança do Android"</string>
<string name="model_info" msgid="4966408071657934452">"Modelo"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Versão do kernel"</string>
<string name="build_number" msgid="3997326631001009102">"Número de compilação"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Endereço Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Endereço MAC de Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Não disponível"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Estado"</string>
<string name="device_status" msgid="267298179806290920">"Estado"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Não é permitida uma sequência de dígitos ascendente, descendente ou repetida."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opções de bloqueio de ecrã"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: há <xliff:g id="NUM_DAYS">%3$s</xliff:g> dias"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Adicionar disposit. fidedigno"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"O Bluetooth será ativado p/ adicionar disp. fided."</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Disposit. fidedignos"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dispositivos</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dispositivo</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"O dispositivo <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> irá desbloquear este automóvel quando for ligado. Se alguém pegar no dispositivo <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, essa pessoa pode aceder ao mesmo."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirmar"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Remover dispositivo fidedigno"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Concluído"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Utilize a aplicação associada para configurar um dispositivo fidedigno. Após a configuração, o seu perfil de utilizador será desbloqueado automaticamente quando o telemóvel for detetado perto do veículo."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Transfira a aplicação associada no telemóvel."</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Selecione o automóvel <xliff:g id="CAR_NAME">%1$s</xliff:g> no telemóvel para sincronizar os dispositivos."</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Um dispositivo fidedigno próximo do seu automóvel irá desbloquear o perfil do utilizador no arranque, mesmo se outra pessoa estiver a utilizar o dispositivo."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Confirme se os códigos de sincronização coincidem"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"O telemóvel foi inscrito com êxito."</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Falha ao inscrever o dispositivo <xliff:g id="DEVICE_NAME">%1$s</xliff:g>."</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Ao adicionar um dispositivo fidedigno, tem de definir um método de autenticação a seguir. Se não tiver o dispositivo fidedigno consigo, será necessária a autenticação para aceder ao seu perfil."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Dispositivo desligado."</string>
<string name="forget" msgid="3971143908183848527">"Esquecer"</string>
<string name="connect" msgid="5861699594602380150">"Ligar"</string>
<string name="disconnect" msgid="6140789953324820336">"Desligar"</string>
diff --git a/res/values-pt/arrays.xml b/res/values-pt/arrays.xml
new file mode 100644
index 0000000..a0a1dd4
--- /dev/null
+++ b/res/values-pt/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Perguntar"</item>
+ <item msgid="933409503308401889">"Nunca permitir"</item>
+ <item msgid="1154273129608299386">"Sempre permitir"</item>
+ </string-array>
+</resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 1de4f4c..5439f17 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Modo noturno"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Rede e Internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Rede móvel"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> chip</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> chips</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Ativo/chip"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inativo/chip"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Ativo/chip transferido por download"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inativo/chip transferido por download"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Adicionar mais"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Dados móveis"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Acessar os dados pela rede móvel"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Desativar os dados móveis?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"É necessário selecionar uma opção"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Usar <xliff:g id="CARRIER">%1$s</xliff:g> para dados móveis?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Você está usando a <xliff:g id="CARRIER2_0">%2$s</xliff:g> para dados móveis. Se mudar para a <xliff:g id="CARRIER1">%1$s</xliff:g>, a <xliff:g id="CARRIER2_1">%2$s</xliff:g> não será mais usada para dados móveis."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Usar <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Conectar aos serviços de dados quando estiver em roaming"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Permitir roaming de dados?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Pode haver cobranças significativas."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Uso de dados"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Dados primários"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Usados: <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"O SMS premium pode gerar custos e será adicionado à sua conta da operadora. Se você conceder permissão para um app, será possível enviar SMS premium usando esse app."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Acesso ao uso"</string>
<string name="usage_access_description" msgid="2413168719257435422">"O acesso ao uso permite que um app monitore quais outros apps você está usando e com que frequência, bem como sua operadora, suas configurações de idioma e outros detalhes."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Acesso ao diretório"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Controle de Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"O controle de Wi-Fi permite que um app ative ou desative o Wi-Fi, verifique redes Wi-Fi e se conecte a elas, adicione ou remova redes, ou inicie um ponto de acesso somente local."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Mais"</string>
<string name="location_settings_title" msgid="901334356682423679">"Local"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Solicitações recentes"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nenhuma solicitação recente de local"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Permitir que apps e serviços procurem dispositivos próximos a qualquer momento, mesmo quando o Bluetooth estiver desativado. Essa configuração pode ser usada, por exemplo, para melhorar recursos e serviços baseados na localização."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistema"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Atualizações do sistema"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Indisponível"</string>
<string name="firmware_version" msgid="8491753744549309333">"Versão do Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Nível do patch de segurança do Android"</string>
<string name="model_info" msgid="4966408071657934452">"Modelo"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Versão do kernel"</string>
<string name="build_number" msgid="3997326631001009102">"Número da versão"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Endereço Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Endereço MAC da rede Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Não disponível"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Não é permitido usar uma sequência de dígitos em ordem crescente, decrescente ou repetidos."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opções de bloqueio de tela"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> dias atrás"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Adicionar disp. confiável"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth será ativ. p/ adicionar disp. confiáveis"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Disp. confiáveis"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> dispositivo</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> dispositivos</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Seu <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> desbloqueará este carro quando estiver conectado. Se alguém pegar o <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, essa pessoa pode conseguir acessar este dispositivo."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirmar"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Remover dispositivo confiável"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Concluído"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Use o app complementar para configurar um dispositivo confiável. Após a configuração, seu perfil de usuário será desbloqueado automaticamente quando o smartphone for detectado pelo veículo."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Faça o download do app complementar no smartphone."</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Selecione <xliff:g id="CAR_NAME">%1$s</xliff:g> no smartphone para parear os dispositivos."</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"O perfil de usuário será desbloqueado com um dispositivo confiável próximo após a ignição, mesmo que outra pessoa esteja segurando o dispositivo."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Confirme a correspondências dos códigos de pareamento"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"A inscrição do smartphone foi concluída"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Falha na inscrição do <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Depois de adicionar um dispositivo confiável, é necessário configurar um método de autenticação. Se o dispositivo confiável não estiver com você, a autenticação será necessária para acessar seu perfil."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Dispositivo desconectado."</string>
<string name="forget" msgid="3971143908183848527">"Ignorar"</string>
<string name="connect" msgid="5861699594602380150">"Conectar"</string>
<string name="disconnect" msgid="6140789953324820336">"Desconectar"</string>
diff --git a/res/values-ro/arrays.xml b/res/values-ro/arrays.xml
new file mode 100644
index 0000000..3d69bf2
--- /dev/null
+++ b/res/values-ro/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Întrebați"</item>
+ <item msgid="933409503308401889">"Nu permiteți niciodată"</item>
+ <item msgid="1154273129608299386">"Permiteți întotdeauna"</item>
+ </string-array>
+</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index ef2ee3b..c81b484 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -31,9 +31,27 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Modul noapte"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Rețea și internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Rețea mobilă"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> carduri SIM</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> de carduri SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> carduri SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Activ/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inactiv/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Activ/SIM descărcat"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inactiv/SIM descărcat"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Adăugați mai multe"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Date mobile"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Accesați datele folosind rețeaua mobilă"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Dezactivați datele mobile?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Selectați o opțiune"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Folosiți <xliff:g id="CARRIER">%1$s</xliff:g> pentru date mobile?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Folosiți <xliff:g id="CARRIER2_0">%2$s</xliff:g> pentru datele mobile. Când comutați la <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> nu va mai fi folosit pentru date mobile."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Folosiți <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Conectați-vă la serviciile de date în roaming"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Permiteți roamingul de date?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Se pot acumula costuri mari."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Utilizarea datelor"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Date principale"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> folosiți"</string>
@@ -322,10 +340,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"SMS-urile premium pot genera costuri care se vor adăuga la factura operatorului. Dacă activați permisiunea pentru o aplicație, veți putea trimite SMS-uri premium folosind acea aplicație."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Acces la datele de utilizare"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Cu accesul la datele de utilizare, o aplicație poate să înregistreze ce alte aplicații folosiți și cât de des le folosiți, precum și operatorul, setările de limbă și alte detalii."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Acces la director"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Control Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Cu controlul rețelei Wi-Fi, o aplicație poate să activeze sau să dezactiveze conexiunea Wi-Fi, să scaneze și să se conecteze la rețelele Wi-Fi, să adauge sau să elimine rețele sau să pornească un hotspot local."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Mai multe"</string>
<string name="location_settings_title" msgid="901334356682423679">"Locație"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Solicitări recente privind locația"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nu există solicitări recente privind locația"</string>
@@ -338,7 +355,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Permiteți aplicațiilor și serviciilor să caute permanent dispozitive din apropiere, chiar dacă setarea Bluetooth este dezactivată. Această opțiune poate fi folosită, de exemplu, pentru a îmbunătăți funcțiile și serviciile bazate pe locație."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Actualizări de sistem"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Indisponibil"</string>
<string name="firmware_version" msgid="8491753744549309333">"Versiunea Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Nivelul corecției de securitate Android"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -346,7 +362,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Versiune nucleu"</string>
<string name="build_number" msgid="3997326631001009102">"Numărul versiunii"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Adresă Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Adresă MAC Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Indisponibil"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Stare"</string>
<string name="device_status" msgid="267298179806290920">"Stare"</string>
@@ -616,6 +631,27 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Șirurile de cifre ascendente, descendente sau repetate nu sunt permise."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opțiuni de blocare a ecranului"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: acum <xliff:g id="NUM_DAYS">%3$s</xliff:g> zile"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Adăugați un dispozitiv de încredere"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth se va activa și va adăuga dispozitivul"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Dispozitive de încredere"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> dispozitive</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> de dispozitive</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> dispozitiv</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> va debloca această mașină când este conectat. Dacă cineva vă ia <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, este posibil să poată accesa acest dispozitiv"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Confirmați"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Eliminați dispozitivul de încredere"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Gata"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Folosiți aplicația parteneră pentru a configura un dispozitiv de încredere. După configurare, profilul dvs. de utilizator va debloca automat mașina atunci când aceasta vă detectează telefonul în apropiere."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Descărcați aplicația parteneră pe telefon"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Selectați <xliff:g id="CAR_NAME">%1$s</xliff:g> de pe telefon pentru a asocia dispozitivele"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Un dispozitiv de încredere aflat în apropierea mașinii dvs. va debloca profilul utilizatorului atunci când mașina este pornită, chiar dacă este folosit de o altă persoană."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Confirmați potrivirea codurilor de conectare"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Telefonul a fost înregistrat"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Înscrierea dispozitivului <xliff:g id="DEVICE_NAME">%1$s</xliff:g> a eșuat"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Dacă adăugați un dispozitiv de încredere, trebuie să setați apoi o metodă de autentificare. Dacă nu aveți dispozitivul de încredere cu dvs., va fi necesar să vă autentificați pentru a vă accesa profilul."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Dispozitivul a fost deconectat."</string>
<string name="forget" msgid="3971143908183848527">"Eliminați"</string>
<string name="connect" msgid="5861699594602380150">"Conectați"</string>
<string name="disconnect" msgid="6140789953324820336">"Deconectați"</string>
diff --git a/res/values-ru/arrays.xml b/res/values-ru/arrays.xml
new file mode 100644
index 0000000..6c4d79f
--- /dev/null
+++ b/res/values-ru/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Спрашивать"</item>
+ <item msgid="933409503308401889">"Не разрешать"</item>
+ <item msgid="1154273129608299386">"Разрешать всегда"</item>
+ </string-array>
+</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index f35a8cb..83a7902 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -31,9 +31,28 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Ночной режим"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Сеть и Интернет"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Мобильная сеть"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-карта</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-карты</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-карт</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-карты</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Активно (SIM-карта)"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Неактивно (SIM-карта)"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Активно (cкачанная SIM-карта)"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Неактивно (скачанная SIM-карта)"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Добавить"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобильный Интернет"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Доступ к Интернету по мобильной сети"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Отключить мобильный Интернет?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Выберите SIM-карту"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Переключиться на оператора \"<xliff:g id="CARRIER">%1$s</xliff:g>\"?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Вы пользуетесь мобильным Интернетом в сети оператора \"<xliff:g id="CARRIER2_0">%2$s</xliff:g>\". После переключения на SIM-карту \"<xliff:g id="CARRIER1">%1$s</xliff:g>\" вы не сможете использовать мобильный Интернет оператора \"<xliff:g id="CARRIER2_1">%2$s</xliff:g>\"."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Выбрать оператора \"<xliff:g id="CARRIER">%1$s</xliff:g>\""</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Роуминг"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Подключаться к службам передачи данных в роуминге"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Разрешить интернет-роуминг?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Возможны значительные расходы."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Передача данных"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Основные данные"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Расход <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -324,10 +343,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Обратите внимание, что такие SMS могут оплачиваться дополнительно. Предоставив разрешение приложению, вы сможете отправлять платные SMS с его помощью."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Доступ к истории использования"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Эта настройка разрешает отслеживать данные об использовании других приложений, сведения об операторе связи, языковые настройки и другую информацию."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Доступ к каталогам"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Управление сетями Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Эта настройка разрешает приложению сканировать, добавлять и удалять сети Wi-Fi, подключаться к ним, включать и отключать модуль Wi-Fi, а также создавать локальные точки доступа."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Ещё"</string>
<string name="location_settings_title" msgid="901334356682423679">"Передача геоданных"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Последние запросы местоположения"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Нет недавних запросов местоположения."</string>
@@ -340,7 +358,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Разрешите приложениям и сервисам искать сигналы устройств, расположенных поблизости, даже если Bluetooth отключен. Таким образом можно улучшить работу функций и сервисов, использующих данные о местоположении."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Система"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Обновления системы"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Недоступно"</string>
<string name="firmware_version" msgid="8491753744549309333">"Версия Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Обновление системы безопасности"</string>
<string name="model_info" msgid="4966408071657934452">"Модель"</string>
@@ -348,7 +365,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Версия ядра"</string>
<string name="build_number" msgid="3997326631001009102">"Номер сборки"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Адрес Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"MAC-адрес Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Недоступно"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Статус"</string>
<string name="device_status" msgid="267298179806290920">"Статус"</string>
@@ -626,6 +642,28 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Нельзя использовать последовательности из идущих подряд или повторяющихся цифр."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Варианты блокировки экрана"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> (<xliff:g id="NUM_DAYS">%3$s</xliff:g> дн. назад)"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Добавить надежное устройство"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Будет включена функция Bluetooth"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Надежные устройства"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> устройство</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> устройства</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> устройств</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> устройства</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Устройство <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> будет разблокировать автомобиль при подключении. Если кто-то возьмет <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, то сможет получить доступ к этому устройству."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"ОК"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Удалить надежное устройство"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Готово"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Для настройки надежного устройства используйте сопутствующее приложение. С помощью надежного устройства ваш профиль пользователя будет автоматически разблокироваться сразу после того, как автомобиль обнаружит ваш телефон."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Скачайте сопутствующее приложение на телефон."</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Чтобы подключить устройства, нажмите \"<xliff:g id="CAR_NAME">%1$s</xliff:g>\" на телефоне."</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"После запуска двигателя находящееся рядом с автомобилем надежное устройство сможет разблокировать профиль пользователя, даже если оно находится в руках другого человека."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Подтвердите совпадение кодов подключения"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Устройство зарегистрировано."</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Не удалось зарегистрировать устройство \"<xliff:g id="DEVICE_NAME">%1$s</xliff:g>\"."</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Чтобы добавить надежное устройство, необходимо выбрать способ аутентификации. Если надежного устройства не будет под рукой, вы сможете получить доступ к своему профилю только после аутентификации."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Устройство отключено."</string>
<string name="forget" msgid="3971143908183848527">"Удалить"</string>
<string name="connect" msgid="5861699594602380150">"Подключить"</string>
<string name="disconnect" msgid="6140789953324820336">"Отключить"</string>
diff --git a/res/values-si/arrays.xml b/res/values-si/arrays.xml
new file mode 100644
index 0000000..72928c5
--- /dev/null
+++ b/res/values-si/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"විමසන්න"</item>
+ <item msgid="933409503308401889">"කිසිවිටෙකත් ඉඩ නොදෙන්න"</item>
+ <item msgid="1154273129608299386">"සැමවිටම ඉඩ දෙන්න"</item>
+ </string-array>
+</resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index f654a20..5177c96 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"රාත්රී ප්රකාරය"</string>
<string name="network_and_internet" msgid="4229023630498537530">"ජාලය සහ අන්තර්ජාලය"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"ජංගම ජාලය"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one">SIMs <xliff:g id="COUNT_1">%1$d</xliff:g></item>
+ <item quantity="other">SIMs <xliff:g id="COUNT_1">%1$d</xliff:g></item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"සක්රිය / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"අක්රිය / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"සක්රිය / බාගත් SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"අක්රිය / බාගත් SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"තව එක් කරන්න"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"ජංගම දත්ත"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"ජංගම ජාලය භාවිතයෙන් දත්තවලට ප්රවේශය"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"ජංගම දත්ත ක්රියාවිරහිත කරන්න ද?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"තේරීම අවශ්යයි"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"ජංගම දත්ත සඳහා <xliff:g id="CARRIER">%1$s</xliff:g> භාවිත කරන්න ද?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"ඔබ ජංගම දත්ත සඳහා <xliff:g id="CARRIER2_0">%2$s</xliff:g> භාවිතා කරයි. ඔබ <xliff:g id="CARRIER1">%1$s</xliff:g> වෙත මාරු වන්නේ නම්, ජංගම දත්ත සඳහා <xliff:g id="CARRIER2_1">%2$s</xliff:g>තවදුරටත් භාවිත නොකෙරේ."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> භාවිතා කරන්න"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"රෝමිං"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"රෝමිං විට දත්ත සේවාවලට සබඳින්න"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"දත්ත සැරිසරණයට අවසර දෙන්නේද?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"ඔබට සැලකිය යුතු ගාස්තු ඇති විය හැක."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"දත්ත භාවිතය"</string>
<string name="data_usage_title" msgid="2923515974389203812">"ප්රාථමික දත්ත"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> භාවිතයි"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"පාරිතෝෂික කෙටිපණිවුඩ ඔබෙන් මුදල් අය කළ හැකි අතර ඔබේ වාහක බිල්පත්වලට එක් කරනු ඇත. ඔබ යෙදුමක් සඳහා අවසරය සබල කරන්නේ නම්, ඔබට එම යෙදුම භාවිතයෙන් පාරිතෝෂික කෙටිපණිවුඩ යැවීමට හැකි වනු ඇත."</string>
<string name="usage_access_title" msgid="7153427122072303254">"පරිශීලන ප්රවේශය"</string>
<string name="usage_access_description" msgid="2413168719257435422">"ඔබ භාවිත කරන වෙනත් යෙදුම් මොනවාද යන්න සහ ඒවා කොතරම් භාවිත කරන්නේද යන්න මෙන්ම, ඔබේ වාහකය, භාෂා සැකසීම්, සහ වෙනත් විස්තර පිළිබඳව හඹා යාමට පරිශීලන ප්රවේශය යෙදුමකට ඉඩ දෙයි."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"නාමාවලි ප්රවේශය"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi පාලනය"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi පාලනය යෙදුමකට Wi-Fi ක්රියාත්මක හෝ ක්රියාවිරහිත කිරීමට, Wi-Fi ජාල ස්කෑන් කර සබැඳීමට, ජාල එක් කිරීමට හෝ ඉවත් කිරීමට, හෝ ස්ථානීය-පමණි හොට්ස්පොටයක් ඇරඹීමට ඉඩ දෙයි."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"තව"</string>
<string name="location_settings_title" msgid="901334356682423679">"ස්ථානය"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"මෑත ස්ථාන ඉල්ලීම්"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"මෑත ස්ථාන ඉල්ලීම් නැත"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"බ්ලූටූත් ක්රියාවිරහිත විට පවා, ඕනෑම වේලාවක දී අවට උපාංග සඳහා ස්කෑන් කිරීමට යෙදුම් සහ සේවාවන්ට ඉඩ දෙන්න. උදාහරණයක් ලෙස, ස්ථානය-පදනම් වූ විශේෂාංග සහ සේවා වැඩි දියුණු කිරීම සඳහා මෙය භාවිතා කළ හැකිය."</string>
<string name="system_setting_title" msgid="6864599341809463440">"පද්ධතිය"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"පද්ධති යාවත්කාලීන"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"නොමැත"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android අනුවාදය"</string>
<string name="security_patch" msgid="4794276590178386903">"Android ආරක්ෂක පැච් මට්ටම"</string>
<string name="model_info" msgid="4966408071657934452">"මාදිලිය"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"කර්නලයේ අනුවාදය"</string>
<string name="build_number" msgid="3997326631001009102">"නිමැවුම් අංකය"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"බ්ලූටූත් ලිපිනය"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi MAC ලිපිනය"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"ලද නොහැක"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"තත්ත්වය"</string>
<string name="device_status" msgid="267298179806290920">"තත්ත්වය"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ආරෝහණ, අවරෝහණ හෝ පුනරාවර්ත අනුක්රමයේ ඉලක්කම්වලට ඉඩ නොදේ."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"තිර අගුළු විකල්ප"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : දින <xliff:g id="NUM_DAYS">%3$s</xliff:g>කට පෙර"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"විශ්වාසදායී උපාංගය එක් කරන්න"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"විශ්වාසී උපාංගය එක් කිරීමට බ්ලූටූත් ක්රියාත්මක වේ"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"විශ්වාසදායී උපාංග"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one">උපාංග <xliff:g id="COUNT_1">%d</xliff:g> ක්</item>
+ <item quantity="other">උපාංග <xliff:g id="COUNT_1">%d</xliff:g> ක්</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"ඔබේ <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> සම්බන්ධ වන විට මෙම මෝටර් රථය අගුළු හරිනු ඇත. යමෙකු ඔබේ <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>රැගෙන ගියහොත්, ඔවුන්ට මෙම උපාංගයට ප්රවේශ වීමට හැකි වනු ඇත"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"තහවුරු කරන්න"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"විශ්වාසදායී උපාංගය ඉවත් කරන්න"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"නිමයි"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"විශ්වසනීය උපාංගයක් සැකසීමට මිත්ර යෙදුම භාවිත කරන්න. වරක් සැකසූ පසු, ඔබේ දුරකථනය ඔබේ වාහනය අවට තිබීම අනාවරණ වූ විට ඔබේ පරිශීලක පැතිකඩ ස්වයංක්රීයව අඟුලු අරිනු ලැබේ."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. ඔබේ දුරකථනය මත මිත්ර යෙදුම බාගන්න"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. උපාංග යුගල කිරීමට ඔබේ දුරකථනයේ <xliff:g id="CAR_NAME">%1$s</xliff:g> තෝරන්න"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"වෙන කෙනෙක් උපාංගය අල්ලා ගෙන සිටියත්, ඔබේ මෝටර් රථය අවට විශ්වාසදායී උපාංගයක් ජ්වලනයත් සමඟ පරිශීලක පැතිකඩ අගුළු හරිනු ඇත."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"යුගලන කේත ගැළපෙන බව තහවුරු කරන්න"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"දුරකථනය සාර්ථකව ලියාපදිංචි වී ඇත"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> ලියාපදිංචි වීම අසාර්ථකයි"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"විශ්වාසදායී උපාංගයක් එක් කිරීමට ඔබට මීළඟට සත්යාපන ක්රමයක් සැකසීමට අවශ්ය කරයි. ඔබට ඔබේ විශ්වාසදායී උපාංගය ළඟ නොමැති නම්, ඔබේ පැතිකඩට ප්රවේශයට සත්යාපනය අවශ්ය වනු ඇත."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"උපාංගය විසන්ධි වී ඇත."</string>
<string name="forget" msgid="3971143908183848527">"අමතක කරන්න"</string>
<string name="connect" msgid="5861699594602380150">"සබඳින්න"</string>
<string name="disconnect" msgid="6140789953324820336">"විසන්ධි කරන්න"</string>
diff --git a/res/values-sk/arrays.xml b/res/values-sk/arrays.xml
new file mode 100644
index 0000000..6151dca
--- /dev/null
+++ b/res/values-sk/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Opýtať sa"</item>
+ <item msgid="933409503308401889">"Nikdy nepovoliť"</item>
+ <item msgid="1154273129608299386">"Vždy povoliť"</item>
+ </string-array>
+</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index aad8950..8aedb3a 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -31,9 +31,28 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Nočný režim"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Sieť a internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobilná sieť"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM karty</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> SIMs</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM kariet</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM karta</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktívne / SIM karta"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Neaktívne / SIM karta"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktívne / stiahnutá SIM karta"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Neaktívne / stiahnutá SIM karta"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Pridať ďalšie"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobilné dáta"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Prístup k dátam pomocou mobilnej siete"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Vypnúť mobilné dáta?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Vyžaduje sa výber"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Používať <xliff:g id="CARRIER">%1$s</xliff:g> na mobilné dáta?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Na mobilné dáta používate <xliff:g id="CARRIER2_0">%2$s</xliff:g>. Ak prepnete na <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> sa už nebude používať na mobilné dáta."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Použiť <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Pripájať sa k dátovým službám pri roamingu"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Chcete povoliť dátový roaming?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Môžu sa vám účtovať vysoké poplatky."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Využitie dát"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Primárne údaje"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Využité dáta: <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -324,10 +343,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Za prémiové správy SMS sa môžu účtovať poplatky, ktoré sa naúčtujú na faktúru operátora. Ak aktivujete toto povolenie pre aplikáciu, budete môcť pomocou nej posielať prémiové správy SMS."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Prístup k údajom o používaní"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Prístup k údajom o používaní umožňuje aplikácii sledovať, aké ďalšie aplikácie používate, ako často ich používate, ako aj nastavenia jazyka, operátora a ďalšie podrobnosti."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Prístup k adresáru"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Ovládanie Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Ovládanie Wi‑Fi umožňuje aplikácii zapnúť alebo vypnúť pripojenie Wi‑Fi, vyhľadávať siete Wi‑Fi a pripájať sa k nim, pridávať ich alebo odstraňovať, prípadne spustiť výhradne miestny hotspot."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Viac"</string>
<string name="location_settings_title" msgid="901334356682423679">"Poloha"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nedávne žiadosti o polohu"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Žiadne nedávne žiadosti o polohu"</string>
@@ -340,7 +358,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Povoľte aplikáciám a službám kedykoľvek vyhľadávať zariadenia v okolí, a to aj vtedy, keď je rozhranie Bluetooth vypnuté. Môžete to využiť napríklad na zlepšenie funkcií a služieb podmienených polohou."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Systém"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Aktualizácie systému"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Nie je k dispozícii"</string>
<string name="firmware_version" msgid="8491753744549309333">"Verzia Androidu"</string>
<string name="security_patch" msgid="4794276590178386903">"Úroveň opráv zabezpečenia systému"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -348,7 +365,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Verzia jadra"</string>
<string name="build_number" msgid="3997326631001009102">"Číslo zostavy"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Adresa Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Adresa MAC siete Wi‑Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Nie je k dispozícii"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Stav"</string>
<string name="device_status" msgid="267298179806290920">"Stav"</string>
@@ -626,6 +642,28 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Vzostupná, zostupná alebo opakovaná sekvencia čísiel nie je povolená."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Možnosti zámky obrazovky"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : pred <xliff:g id="NUM_DAYS">%3$s</xliff:g> dňami"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Pridanie dôveryhodného zar."</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Zapne sa Bluetooth s cieľom pridať dôv. zariadenia"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Dôveryhodné zar."</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> zariadenia</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> devices</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> zariadení</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> zariadenie</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Vaše zariadenie <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> po pripojení odomkne toto auto. Ak vám niekto zariadenie <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> vezme, pravdepodobne bude mať prístup do tohto zariadenia"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Potvrdiť"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Odstrániť dôveryhodné zariadenie"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Hotovo"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Nastavte dôveryhodné zariadenie pomocou sprievodnej aplikácie. Po nastavení sa bude váš profil používateľa automaticky odomykať, keď vozidlo rozpozná v blízkosti váš telefón."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Stiahnite v telefóne sprievodnú aplikáciu"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Vyberte v telefóne auto <xliff:g id="CAR_NAME">%1$s</xliff:g> a spárujte tak zariadenia"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Dôveryhodné zariadenie v blízkosti auta môže po naštartovaní odomknúť používateľsky profil, a to aj vtedy, keď ho drží iná osoba."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Potvrďte, že sa párovacie kódy zhodujú"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Telefón bol úspešne zaregistrovaný"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> sa nepodarilo zaregistrovať"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Ak chcete pridať dôveryhodné zariadenie, musíte v ďalšom kroku nastaviť spôsob overenia. Ak nemáte dôveryhodné zariadenie pri sebe, prístup do vášho profilu bude možný až po overení."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Zariadenie bolo odpojené."</string>
<string name="forget" msgid="3971143908183848527">"Odstrániť"</string>
<string name="connect" msgid="5861699594602380150">"Pripojiť"</string>
<string name="disconnect" msgid="6140789953324820336">"Odpojiť"</string>
diff --git a/res/values-sl/arrays.xml b/res/values-sl/arrays.xml
new file mode 100644
index 0000000..b07a4ce
--- /dev/null
+++ b/res/values-sl/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Vprašaj"</item>
+ <item msgid="933409503308401889">"Nikoli ne dovoli"</item>
+ <item msgid="1154273129608299386">"Vedno dovoli"</item>
+ </string-array>
+</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index f6480a8..ffa0ca9 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -31,9 +31,28 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Nočni način"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Omrežje in internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobilno omrežje"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> kartica SIM</item>
+ <item quantity="two"><xliff:g id="COUNT_1">%1$d</xliff:g> kartici SIM</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> kartice SIM</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> kartic SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktivno/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Neaktivno/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktivno/prenesena kartica SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Neaktivno/prenesena kartica SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Dodaj več"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Prenos pod. v mobilnem omrežju"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Dostop do podatkov prek mobilnega omrežja"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Želite izklopiti prenos pod. v mobilnih omrežjih?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Izbira je obvezna"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Podatki v mob. omr. z oper. <xliff:g id="CARRIER">%1$s</xliff:g>?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Za prenos podatkov v mobilnem omrežju uporabljate operaterja <xliff:g id="CARRIER2_0">%2$s</xliff:g>. Če preklopite na operaterja <xliff:g id="CARRIER1">%1$s</xliff:g>, operaterja <xliff:g id="CARRIER2_1">%2$s</xliff:g> ne boste več uporabljali za prenos podatkov v mobilnem omrežju."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Uporabi operaterja <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Gostovanje"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Med gostovanjem vzpostavi povezavo s podatkovnimi storitvami"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Želite dovoliti podatkovno gostovanje?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Stroški utegnejo biti veliki."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Prenesena količina podatkov"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Glavni podatki"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Porabljeno: <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -324,10 +343,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Plačljiva sporočila SMS vam lahko povzročijo stroške in povečajo račun za mobilno telefonijo. Če za aplikacijo omogočite dovoljenje, boste lahko s tisto aplikacijo pošiljali plačljiva sporočila SMS."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Dostop do podatkov o uporabi"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Dostop do podatkov o uporabi aplikaciji omogoča, da spremlja, katere aplikacije še uporabljate in kako pogosto, ter da si ogleda podrobnosti o operaterju, nastavitvah jezika in drugem."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Dostop do imenika"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Upravljanje povezave Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Upravljanje povezave Wi-Fi aplikaciji omogoča vklop ali izklop povezave Wi-Fi, iskanje omrežij Wi-Fi in povezovanje z njimi, dodajanje ali odstranjevanje omrežij ali zagon lokalne dostopne točke."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Več"</string>
<string name="location_settings_title" msgid="901334356682423679">"Lokacija"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nedavne zahteve za lokacijo"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Ni nedavnih zahtev za lokacijo"</string>
@@ -340,7 +358,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Aplikacijam in storitvam omogoči, da kadar koli iščejo naprave v bližini, tudi ko je Bluetooth izklopljen. To funkcijo lahko na primer uporabite, če želite izboljšati funkcije in storitve, ki pri delovanju uporabljajo lokacijo."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Posodobitve sistema"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Ni na voljo"</string>
<string name="firmware_version" msgid="8491753744549309333">"Različica Androida"</string>
<string name="security_patch" msgid="4794276590178386903">"Raven popravkov za varnost v Androidu"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -348,7 +365,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Različica jedra"</string>
<string name="build_number" msgid="3997326631001009102">"Delovna različica"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Naslov vmesnika Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Naslov MAC za Wi‑Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Ni na voljo"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Stanje"</string>
<string name="device_status" msgid="267298179806290920">"Stanje"</string>
@@ -626,6 +642,28 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Naraščajoč, padajoč ali ponavljajoč se niz števk je prepovedan."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Možnosti zaklepanja zaslona"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: pred toliko dnevi: <xliff:g id="NUM_DAYS">%3$s</xliff:g>"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Dodaj zaupanja vredno napravo"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Vklop Bluetootha za dodaj. zaupanja vredne naprave"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Zaup. vredne naprave"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> naprava</item>
+ <item quantity="two"><xliff:g id="COUNT_1">%d</xliff:g> napravi</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> naprave</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> naprav</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Naprava <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> bo odklenila ta avtomobil, ko je povezana. Če vam kdo vzame napravo <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, lahko ta oseba morda dostopa do nje."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Potrdi"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Odstrani zaupanja vredno napravo"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Končano"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"S spremljevalno aplikacijo nastavite zaupanja vredno napravo. Ko je nastavljena, se profil uporabnika odklene samodejno, ko je telefon zaznan v bližini vozila."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. V telefon prenesite spremljevalno aplikacijo"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Če želite seznaniti napravi, v telefonu izberite avtomobil <xliff:g id="CAR_NAME">%1$s</xliff:g>"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Zaupanja vredna naprava v bližini avtomobila bo po vžigu odklenila profil uporabnika, tudi če ima napravo v rokah kdo drug."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Potrdite ujemanje kod za seznanjanje"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Telefon je uspešno prijavljen"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Včlanitev naprave <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ni uspela"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Če želite dodati zaupanja vredno napravo, morate nato nastaviti način za preverjanje pristnosti. Če zaupanja vredne naprave nimate pri sebi, boste morali preveriti pristnost, če boste želeli dostopati do profila."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Naprava je odklopljena."</string>
<string name="forget" msgid="3971143908183848527">"Pozabi"</string>
<string name="connect" msgid="5861699594602380150">"Poveži"</string>
<string name="disconnect" msgid="6140789953324820336">"Prekini povezavo"</string>
diff --git a/res/values-sq/arrays.xml b/res/values-sq/arrays.xml
new file mode 100644
index 0000000..8762326
--- /dev/null
+++ b/res/values-sq/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Pyet"</item>
+ <item msgid="933409503308401889">"Mos lejo asnjëherë"</item>
+ <item msgid="1154273129608299386">"Lejo gjithmonë"</item>
+ </string-array>
+</resources>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index ddb8fa6..f1406a1 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Modaliteti i natës"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Rrjeti dhe interneti"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Rrjeti celular"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> karta SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> kartë SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktiv / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Joaktiv / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktiv / karta SIM e shkarkuar"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Joaktiv / karta SIM e shkarkuar"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Shto më shumë"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Të dhënat celulare"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Qasu te të dhënat duke përdorur rrjetin celular"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Të çaktivizohen të dhënat celulare?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Kërkohet përzgjedhja"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Të përdoret <xliff:g id="CARRIER">%1$s</xliff:g> për të dhënat celulare?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Po përdor <xliff:g id="CARRIER2_0">%2$s</xliff:g> për të dhënat celulare. Nëse kalon te <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> nuk do të përdoret më për të dhënat celulare."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Përdor <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Lidhu me shërbimet e të dhënave kur je në roaming"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Të lejohet përdorimi i të dhënave kur je në roaming?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Mund të shkaktohen tarifa të larta."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Përdorimi i të dhënave"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Të dhënat kryesore"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> të përdorura"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Mesazhet SMS premium mund të kushtojnë dhe do të rritin faturat e operatorit tënd celular. Nëse e aktivizon lejen për një aplikacion, do të mund të dërgosh mesazhe SMS premium me atë aplikacion."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Qasja në përdorim"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Qasja në përdorim lejon që një aplikacion të monitorojë se çfarë aplikacionesh të tjera po përdor ti dhe sa shpesh i përdor, si edhe operatorin celular, cilësimet e gjuhës dhe detaje të tjera."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Qasja në direktori"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Kontrolli i lidhjes Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Kontrolli i lidhjes Wi-Fi lejon që një aplikacion të aktivizojë ose të çaktivizojë Wi-Fi, të skanojë dhe të lidhet me rrjetet Wi-Fi, të shtojë ose të heqë rrjetet ose të nisë një zonë qasjeje për internetin vetëm në nivel lokal."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Më shumë"</string>
<string name="location_settings_title" msgid="901334356682423679">"Vendndodhja"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Kërkesat e vendndodhjeve të fundit"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Nuk ka kërkesa të vendndodhjeve të fundit"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Lejo që aplikacionet dhe shërbimet të skanojnë për pajisje në afërsi në çdo moment, edhe kur Bluetooth është joaktiv. Kjo mund të përdoret, për shembull, për të përmirësuar funksionet dhe shërbimet e bazuara te vendndodhja."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistemi"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Përditësimet e sistemit"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Nuk ofrohet"</string>
<string name="firmware_version" msgid="8491753744549309333">"Versioni i Android-it"</string>
<string name="security_patch" msgid="4794276590178386903">"Niveli i korrigjimit të sigurisë së Android"</string>
<string name="model_info" msgid="4966408071657934452">"Modeli"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Versioni i bërthamës"</string>
<string name="build_number" msgid="3997326631001009102">"Numri i ndërtimit"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Adresa e Bluetooth-it"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Adresa MAC e Wi‑Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Nuk ofrohet"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Statusi"</string>
<string name="device_status" msgid="267298179806290920">"Statusi"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Nuk lejohet një sekuencë shifrash në rritje, në zbritje ose me përsëritje."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Opsionet e kyçjes së ekranit"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ditë më parë"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Shto një pajisje të besuar"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth-i do të aktivizohet për të shtuar pajisjen e besuar"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Pajisjet e besuara"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> pajisje</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> pajisje</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Pajisja jote <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> do ta shkyçë këtë makinë kur është e lidhur. Nëse dikush merr pajisjen tënde <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, mund të jetë në gjendje të ketë qasje te kjo pajisje"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Konfirmo"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Hiq pajisjen e besuar"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"U krye"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Përdor aplikacionin shoqërues për të konfiguruar një pajisje të besuar. Pasi të konfigurohet, profili yt si përdorues do të shkyçet automatikisht kur telefoni yt të zbulohet pranë automjetit."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Shkarko aplikacionin shoqërues në telefonin tënd"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Zgjidh <xliff:g id="CAR_NAME">%1$s</xliff:g> në telefon për të çiftuar pajisjet"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Një pajisje e besuar në afërsi do ta shkyçë profilin e përdoruesit pas ndezjes, edhe nëse pajisjen e mban dikush tjetër."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Konfirmo se kodet e çiftimit përputhen"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Telefoni është regjistruar me sukses"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Regjistrimi i <xliff:g id="DEVICE_NAME">%1$s</xliff:g> dështoi"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Shtimi i një pajisjeje të besuar kërkon që të caktosh më pas një metodë vërtetimi. Nëse nuk e ke pajisjen e besuar me vete, do të kërkohet vërtetim për të pasur qasje te profili yt."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Pajisja u shkëput"</string>
<string name="forget" msgid="3971143908183848527">"Harro"</string>
<string name="connect" msgid="5861699594602380150">"Lidh"</string>
<string name="disconnect" msgid="6140789953324820336">"Shkëput"</string>
diff --git a/res/values-sr/arrays.xml b/res/values-sr/arrays.xml
new file mode 100644
index 0000000..38562bc
--- /dev/null
+++ b/res/values-sr/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Питај"</item>
+ <item msgid="933409503308401889">"Никада не дозволи"</item>
+ <item msgid="1154273129608299386">"Увек дозволи"</item>
+ </string-array>
+</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 143fed9..865c6b1 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -31,9 +31,27 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Ноћни режим"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Мрежа и интернет"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Мобилна мрежа"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM картица</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM картице</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM картица</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Активно/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Неактивно/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Активно/преузети SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Неактивно/преузети SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Додајте још"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобилни подаци"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Користи податке преко мобилне мреже"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Желите ли да искључите мобилне податке?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Треба да изаберете нешто"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Користити <xliff:g id="CARRIER">%1$s</xliff:g> за моб. податке?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Користите <xliff:g id="CARRIER2_0">%2$s</xliff:g> за мобилне податке. Ако пређете на <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> се више неће користити за мобилне податке."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Користи <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Роминг"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Повежи са услугама за податке у ромингу"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Желите ли да дозволите пренос података у ромингу?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Могу да настану значајни трошкови."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Потрошња података"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Примарни подаци"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> потрошено"</string>
@@ -322,10 +340,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Премијум SMS-ови могу да коштају и повећаће рачуне код мобилног оператера. Ако омогућите дозволу за неку апликацију, моћи ћете да шаљете премијум SMS-ове помоћу те апликације."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Приступ коришћењу"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Приступ коришћењу омогућава апликацији да прати које друге апликације користите и колико често, као и да види мобилног оператера, језичка подешавања и друге податке."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Приступ директоријумима"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Контрола Wi-Fi мреже"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Контрола Wi-Fi мреже омогућава апликацији да укључи или искључи Wi-Fi, тражи и повезује се на Wi-Fi мреже, додаје или уклања мреже или покреће само локални хотспот."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Још"</string>
<string name="location_settings_title" msgid="901334356682423679">"Локација"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Недавни захтеви за локацију"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Нема недавних захтева за локацију"</string>
@@ -338,7 +355,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Дозволите апликацијама и услугама да траже уређаје у близини у сваком тренутку, чак и када је Bluetooth искључен. Ово може да се користи, на пример, за побољшање функција и услуга заснованих на локацији."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Систем"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Ажурирања система"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Није доступно"</string>
<string name="firmware_version" msgid="8491753744549309333">"Верзија Android-а"</string>
<string name="security_patch" msgid="4794276590178386903">"Ниво безбедносне закрпе за Android"</string>
<string name="model_info" msgid="4966408071657934452">"Модел"</string>
@@ -346,7 +362,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Верзија језгра"</string>
<string name="build_number" msgid="3997326631001009102">"Број верзије"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth адреса"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi MAC адреса"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Није доступно"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Статус"</string>
<string name="device_status" msgid="267298179806290920">"Статус"</string>
@@ -616,6 +631,27 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Растући, опадајући или поновљени низ цифара није дозвољен."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Опције закључавања екрана"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: пре <xliff:g id="NUM_DAYS">%3$s</xliff:g> дан(а)"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Додај поуздани уређај"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth се укључује ради додавања поузд. уређаја"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Поуздани уређаји"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> уређај</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> уређаја</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> уређаја</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ће откључати овај аутомобил када се повеже. Ако вам неко узме <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, можда ће моћи да приступа овом уређају"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Потврди"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Уклони поуздани уређај"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Готово"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Поуздани уређај подесите помоћу пратеће апликације. Када га подесите, кориснички профил се аутоматски откључава када се открије да је телефон близу возила."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Преузмите пратећу апликацију на телефону"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Изаберите <xliff:g id="CAR_NAME">%1$s</xliff:g> на телефону да бисте упарили уређаје"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Поуздани уређај у близини аутомобила откључава профил корисника после паљења, чак и када га неко други држи."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Потврдите да се кодови за упаривање подударају"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Телефон је регистрован"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Регистрација уређаја <xliff:g id="DEVICE_NAME">%1$s</xliff:g> није успела"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"За додавање поузданог уређаја следеће што треба да урадите је да подесите метод потврде идентитета. Ако немате поуздани уређај са собом, потврда идентитета ће бити потребна да бисте приступили профилу."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Прекинута је веза са уређајем."</string>
<string name="forget" msgid="3971143908183848527">"Заборави"</string>
<string name="connect" msgid="5861699594602380150">"Повежи"</string>
<string name="disconnect" msgid="6140789953324820336">"Прекини везу"</string>
diff --git a/res/values-sv/arrays.xml b/res/values-sv/arrays.xml
new file mode 100644
index 0000000..582a3eb
--- /dev/null
+++ b/res/values-sv/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Fråga"</item>
+ <item msgid="933409503308401889">"Tillåt aldrig"</item>
+ <item msgid="1154273129608299386">"Tillåt alltid"</item>
+ </string-array>
+</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 1a31495..d6dde64 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Nattläge"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Nätverk och internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobilnätverk"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-kort</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM-kort</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktiv/SIM-kort"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Inaktiv/SIM-kort"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktiv/nedladdat SIM-kort"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Inaktiv/nedladdat SIM-kort"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Lägg till fler"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobildata"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Få åtkomst till data via mobilt nätverk"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Vill du inaktivera mobildata?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Du måste välja något"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Ska mobildata från <xliff:g id="CARRIER">%1$s</xliff:g> användas?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Du använder mobildata från <xliff:g id="CARRIER2_0">%2$s</xliff:g>. Om du byter till <xliff:g id="CARRIER1">%1$s</xliff:g> används inte längre mobildata från <xliff:g id="CARRIER2_1">%2$s</xliff:g>."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Använd <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Anslut till datatjänster vid roaming"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Vill du tillåta dataroaming?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Detta kan leda till höga kostnader."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Dataanvändning"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Primär data"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> använt"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Det kan hända att premium-sms kostar pengar och läggs till på dina fakturor från operatören. Om du ger en app åtkomst kan du skicka premium-sms med den appen."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Åtkomst till användningsdata"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Med åtkomst till användningsdata kan en app spåra vilka andra appar du använder och hur ofta, samt vilken operatör du har, språkinställningar och andra uppgifter."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Katalogåtkomst"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi-styrning"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Med Wi-Fi-styrning får den här appen behörighet att aktivera eller inaktivera Wi-Fi, söka efter och ansluta till Wi-Fi-nätverk, lägga till eller ta bort nätverk samt starta en lokal surfzon."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Mer"</string>
<string name="location_settings_title" msgid="901334356682423679">"Plats"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Nyligen gjorda platsbegäranden"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Inga platsbegäranden har gjorts nyligen"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Tillåt att appar och tjänster söker efter enheter i närheten när som helst, även när Bluetooth är inaktiverat. Funktionen kan till exempel användas till att förbättra platsbaserade funktioner och tjänster."</string>
<string name="system_setting_title" msgid="6864599341809463440">"System"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Systemuppdateringar"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Inte tillgängligt"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android-version"</string>
<string name="security_patch" msgid="4794276590178386903">"Korrigeringsnivå för Android"</string>
<string name="model_info" msgid="4966408071657934452">"Modell"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kernel-version"</string>
<string name="build_number" msgid="3997326631001009102">"Version"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth-adress"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"MAC-adress för Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Ej tillgängligt"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"En stigande, fallande eller upprepad siffersekvens är inte tillåten."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Alternativ för skärmlås"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>: <xliff:g id="NUM_DAYS">%3$s</xliff:g> dagar sedan"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Lägg till betrodd enhet"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth aktiveras vid koppling av betrodd enhet"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Betrodda enheter"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> enheter</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> enhet</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Bilen låses upp av din <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> när den är ansluten. Om någon kommer över din <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> kan de få åtkomst till den här enheten"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Bekräfta"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Ta bort betrodd enhet"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Klar"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Konfigurera en betrodd enhet med den tillhörande appen. När den har konfigurerats låses användarprofilen upp automatiskt när mobilen upptäcks i närheten av fordonet."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Ladda ned den tillhörande appen på mobilen"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Koppla enheterna genom att välja <xliff:g id="CAR_NAME">%1$s</xliff:g> på mobilen"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"När en betrodd enhet är i närheten av din bil låses användarprofilen upp vid start, även om någon annan håller i enheten."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Bekräfta att kopplingskoderna stämmer överens"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Mobilen har registrerats"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Det gick inte att registrera <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"När du lägger till en betrodd enhet måste du lägga till en autentiseringsmetod också. Autentisering krävs för att komma åt profilen om du inte skulle ha den betrodda enheten med dig."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Enheten har kopplats från."</string>
<string name="forget" msgid="3971143908183848527">"Glöm"</string>
<string name="connect" msgid="5861699594602380150">"Anslut"</string>
<string name="disconnect" msgid="6140789953324820336">"Koppla från"</string>
diff --git a/res/values-sw/arrays.xml b/res/values-sw/arrays.xml
new file mode 100644
index 0000000..e0aca35
--- /dev/null
+++ b/res/values-sw/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Uliza"</item>
+ <item msgid="933409503308401889">"Usiruhusu kamwe"</item>
+ <item msgid="1154273129608299386">"Ruhusu kila wakati"</item>
+ </string-array>
+</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 3caf8ee..8ed15fe 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Hali ya usiku"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Mtandao na intaneti"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mtandao wa simu"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other">SIM <xliff:g id="COUNT_1">%1$d</xliff:g></item>
+ <item quantity="one">SIM <xliff:g id="COUNT_0">%1$d</xliff:g></item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Inatumika / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Haitumiki / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Inatumika / Imepakua SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Haitumiki / Imepakua SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Ongeza zaidi"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Data ya mtandao wa simu"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Tumia data ya mtandao wa simu"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Ungependa kuzima data ya mtandao wa simu?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Unahitaji kuchagua"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Utatumia <xliff:g id="CARRIER">%1$s</xliff:g> kwa data ya mtandao wa simu?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Unatumia <xliff:g id="CARRIER2_0">%2$s</xliff:g> kwa ajili ya data ya mtandao wa simu. Ukibadilisha uweke <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> haitatumika tena kwa ajili ya data ya mtandao wa simu."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Tumia <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Kutumia mitandao ya ng\'ambo"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Unganisha huduma ya data wakati natumia mtandao wa ng\'ambo"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Ungependa kuruhusu matumizi ya mitandao ya ng\'ambo?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Huenda ukatozwa gharama kubwa."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Matumizi ya data"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Data ya msingi"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Umetumia <xliff:g id="ID_2">^2</xliff:g> <xliff:g id="ID_1">^1</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Gharama ya huduma ya SMS zinazolipiwa itajumuishwa kwenye bili yako ya mtoa huduma. Ikiwa utaipa programu fulani ruhusa, utaweza kutuma SMS zinazolipiwa ukitumia programu hiyo."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Kufikia matumizi"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Ufikiaji wa matumizi huruhusu programu kufuatilia programu zingine unazotumia na mara ngapi unazitumia, pamoja na mtoa huduma, mipangilio ya lugha na maelezo yako mengine."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Kufikia saraka"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Kudhibiti Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Kidhibiti cha Wi-Fi huruhusu programu iwashe au izime Wi-Fi, itafute na iunganishe kwenye mitandao ya Wi-Fi, iongeze au iondoe mitandao au ianzishe mtandaopepe wa eneo mahususi."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Zaidi"</string>
<string name="location_settings_title" msgid="901334356682423679">"Mahali"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Maombi ya Hivi Karibuni ya Kutambua Eneo"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Hamna maombi ya hivi karibuni ya kutambua eneo"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Ruhusu programu na huduma itafute vifaa vilivyo karibu wakati wowote, hata wakati umezima Bluetooth. Hali hii inaweza kutumika, kwa mfano, kuboresha huduma na vipengele vinavyohusiana na mahali."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Mfumo"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Masasisho ya mfumo"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Haipatikani"</string>
<string name="firmware_version" msgid="8491753744549309333">"Toleo la Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Usasishaji wa rekebisho la usalama kwenye Android"</string>
<string name="model_info" msgid="4966408071657934452">"Muundo"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Toleo la kiini"</string>
<string name="build_number" msgid="3997326631001009102">"Nambari ya muundo"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Anwani ya Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Anwani ya Wi-Fi ya MAC"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Haipatikani"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Hali"</string>
<string name="device_status" msgid="267298179806290920">"Hali"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Haturuhusu mpangilio wa tarakimu wa kupanda, kushuka au kujirudia."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Chaguo za kufunga skrini"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : Siku <xliff:g id="NUM_DAYS">%3$s</xliff:g> zilizopita"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Ongeza kifaa unachokiamini"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth itawaka ili kuongeza kifaa unachokiamini"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Vifaa unavyoviamini"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other">Vifaa <xliff:g id="COUNT_1">%d</xliff:g></item>
+ <item quantity="one">Kifaa <xliff:g id="COUNT_0">%d</xliff:g></item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> yako itafungua gari hili itakapounganishwa. Mtu akichukua <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> yako, huenda ataweza kufikia kifaa hiki."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Thibitisha"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Ondoa kifaa unachokiamini"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Nimemaliza"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Tumia programu inayotumika kudhibiti ili uweke mipangilio ya kifaa unachokiamini. Ukimaliza kuweka mipangilio, wasifu wako wa mtumiaji utafunguka kiotomatiki simu yako inapotambuliwa karibu na gari."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Pakua programu saidizi kwenye simu yako"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Chagua <xliff:g id="CAR_NAME">%1$s</xliff:g> kwenye simu yako ili uoanishe vifaa"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Kifaa unachokiamini kilicho karibu na gari lako kitafungua wasifu wa mtumiaji itakapowashwa, hata ikiwa kimebebwa na mtu mwingine."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Tafadhali thibitisha kuwa misimbo ya kuoanisha inalingana"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Umesajili kifaa bila tatizo"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Imeshindwa kuandikisha <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Unatakiwa uweke njia ya kuthibitisha ili uongeze kifaa unachoamini katika hatua inayofuata. Kama huna kifaa unachoamini, uthibitishaji utataka idhini ya kufikia wasifu wako."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Kifaa kimeondolewa."</string>
<string name="forget" msgid="3971143908183848527">"Sahau"</string>
<string name="connect" msgid="5861699594602380150">"Unganisha"</string>
<string name="disconnect" msgid="6140789953324820336">"Tenganisha"</string>
diff --git a/res/values-ta/arrays.xml b/res/values-ta/arrays.xml
new file mode 100644
index 0000000..f83ed2a
--- /dev/null
+++ b/res/values-ta/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"கேள்"</item>
+ <item msgid="933409503308401889">"ஒருபோதும் அனுமதிக்காதே"</item>
+ <item msgid="1154273129608299386">"எப்போதும் அனுமதி"</item>
+ </string-array>
+</resources>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 50e68d4..0720992 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"இரவுப் பயன்முறை"</string>
<string name="network_and_internet" msgid="4229023630498537530">"நெட்வொர்க் & இணையம்"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"மொபைல் நெட்வொர்க்"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> சிம்கள்</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> சிம்</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"செயலில் உள்ளது / சிம்"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"செயலில் இல்லை / சிம்"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"செயலில் உள்ளது / பதிவிறக்கிய சிம்"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"செயலில் இல்லை / பதிவிறக்கிய சிம்"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"மேலும் சேர்"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"மொபைல் டேட்டா"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"மொபைல் நெட்வொர்க் மூலம் டேட்டாவைப் பயன்படுத்து"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"மொபைல் டேட்டாவை ஆஃப் செய்யவா?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"தேர்ந்தெடுக்க வேண்டும்"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"டேட்டாவிற்கு <xliff:g id="CARRIER">%1$s</xliff:g>ஐ உபயோகிக்கவா?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"மொபைல் டேட்டாவிற்கு <xliff:g id="CARRIER2_0">%2$s</xliff:g> சிம்மைப் பயன்படுத்துகிறீர்கள். <xliff:g id="CARRIER1">%1$s</xliff:g> சிம்மிற்கு மாறினால் <xliff:g id="CARRIER2_1">%2$s</xliff:g> சிம்மை மொபைல் டேட்டாவிற்குத் தொடர்ந்து பயன்படுத்த இயலாது."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> சிம்மைப் பயன்படுத்து"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"ரோமிங்"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"ரோமிங்கின்போது டேட்டா சேவைகளுடன் இணை"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"டேட்டா ரோமிங்கை அனுமதிக்கவா?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"கட்டணம் விதிக்கப்படலாம்."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"டேட்டா உபயோகம்"</string>
<string name="data_usage_title" msgid="2923515974389203812">"முதன்மை டேட்டா"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> பயன்படுத்தப்பட்டது"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"பிரீமிய SMSஸுக்குக் கட்டணம் விதிக்கப்படலாம், அது மொபைல் நிறுவன பில்களில் சேர்க்கப்படும். ஆப்ஸுக்கான அனுமதியை இயக்கினால் அதன் மூலம் பிரீமிய SMSஸை அனுப்ப இயலும்."</string>
<string name="usage_access_title" msgid="7153427122072303254">"உபயோக அணுகல்"</string>
<string name="usage_access_description" msgid="2413168719257435422">"’உபயோக அணுகல்’ மூலம் நீங்கள் வேறு எந்தெந்த ஆப்ஸை எவ்வளவு அடிக்கடி பயன்படுத்துகிறீர்கள் என்பதை அறிந்துகொள்ளும் அனுமதியை ஆப்ஸிற்கு வழங்கலாம். உங்கள் மொபைல் நிறுவனம், மொழி அமைப்புகள் மற்றும் பிற விவரங்களையும் அறிந்து கொள்ளும் அனுமதியும் இதில் அடங்கும்."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"கோப்பக அணுகல்"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"வைஃபை அணுகல்"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"’வைஃபை கட்டுப்பாடு’ மூலம் ஆப்ஸிலிருந்து வைஃபையை ஆன் அல்லது ஆஃப் செய்யலாம், வைஃபை நெட்வொர்க்குகளை ஸ்கேன் செய்து இணைக்கலாம், நெட்வொர்க்குகளைச் சேர்க்ககலாம் அல்லது அகற்றலாம் அல்லது சாதனத்திற்குள் மட்டும் இயங்கும் ஹாட்ஸ்பாட்டைத் தொடங்கலாம்."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"மேலும்"</string>
<string name="location_settings_title" msgid="901334356682423679">"இடம்"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"இருப்பிடத் தகவல் குறித்த சமீபத்திய கோரிக்கைகள்"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"இருப்பிடத் தகவல் குறித்த சமீபத்திய கோரிக்கைகள் இல்லை"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"புளூடூத் ஆஃப் செய்யப்பட்டிருந்தாலும்கூட எந்தநேரத்திலும் அருகிலுள்ள சாதனங்களைத் தேட ஆப்ஸையும் சேவைகளையும் அனுமதிக்கும். உதாரணத்திற்கு இருப்பிடம் சார்ந்த அம்சங்களையும் சேவைகளையும் மேம்படுத்துவதற்கும் இதைப் பயன்படுத்தலாம்."</string>
<string name="system_setting_title" msgid="6864599341809463440">"சிஸ்டம்"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"சிஸ்டம் புதுப்பிப்புகள்"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"கிடைக்கவில்லை"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android பதிப்பு"</string>
<string name="security_patch" msgid="4794276590178386903">"Android பாதுகாப்பின் பேட்ச் நிலை"</string>
<string name="model_info" msgid="4966408071657934452">"மாடல்"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"கர்னல் பதிப்பு"</string>
<string name="build_number" msgid="3997326631001009102">"பதிப்பு எண்"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"புளூடூத் முகவரி"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"வைஃபை MAC முகவரி"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"கிடைக்கவில்லை"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"நிலை"</string>
<string name="device_status" msgid="267298179806290920">"நிலை"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"இலக்கங்கள் ஏறுவரிசையில், இறங்குவரிசையில் அல்லது ஒரே இலக்கத்தைத் தொடர்ந்து பயன்படுத்துவது அனுமதிக்கப்படாது."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"திரைப் பூட்டு விருப்பங்கள்"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> நாட்கள் முன்பு"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"நம்பகமான சாதனத்தைச் சேர்"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"நம்பகமான சாதனத்தைச் சேர்க்க புளூடூத் ஆன் ஆகும்"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"நம்பகமான சாதனங்கள்"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> சாதனங்கள்</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> சாதனம்</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> சாதனம் இணைக்கப்படும்போது உங்கள் காரை அது திறக்கும். <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> சாதனம் எவர் கையிலாவது கிடைத்தால் அவர்கள் அதைப் பயன்படுத்த வாய்ப்பிருக்கிறது"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"உறுதிப்படுத்து"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"நம்பகமான சாதனத்தை அகற்று"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"முடிந்தது"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"’நம்பகமான சாதனம்’ ஒன்றை அமைக்க கம்பேனியன் ஆப்ஸைப் பயன்படுத்தவும். அமைத்த பிறகும் வாகனத்திற்கு அருகில் மொபைல் கண்டறியப்பட்டால் உங்களின் பயனர் சுயவிவரத்தை அன்லாக் செய்ய முடியும்."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. உங்கள் மொபைலில் கம்பேனியன் ஆப்ஸைப் பதிவிறக்கவும்"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. சாதனங்களை இணைக்க உங்கள் மொபைலில் <xliff:g id="CAR_NAME">%1$s</xliff:g> என்பதைத் தேர்வுசெய்யவும்"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"வேறு யாராவது இந்தச் சாதனத்தை வைத்திருந்தாலும்கூட உங்கள் காருக்கு அருகில் இருக்கும்போது ஆன் செய்தால் ஒரு நம்பகமான சாதனம் பயனர் சுயவிவரத்தை அன்லாக் செய்யும்."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"இணைத்தல் குறியீடுகள் பொருந்துவதை உறுதிசெய்க"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"மொபைல் பதிவுசெய்யப்பட்டது"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> பதிவு செய்வதில் தோல்வி"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"நம்பகமான சாதனத்தைச் சேர்த்த பிறகு அடையாளச் சரிபார்ப்பு முறையை அமைக்க வேண்டும். உங்களிடம் நம்பகமான சாதனம் இல்லையெனில் அடையாளச் சரிபார்ப்பிற்காக உங்கள் சுயவிவரத்தை அணுக வேண்டிய அவசியம் ஏற்படும்."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"சாதனம் துண்டிக்கப்பட்டது."</string>
<string name="forget" msgid="3971143908183848527">"அகற்று"</string>
<string name="connect" msgid="5861699594602380150">"இணை"</string>
<string name="disconnect" msgid="6140789953324820336">"துண்டி"</string>
diff --git a/res/values-te/arrays.xml b/res/values-te/arrays.xml
new file mode 100644
index 0000000..e0b2986
--- /dev/null
+++ b/res/values-te/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"అడగండి"</item>
+ <item msgid="933409503308401889">"ఎప్పటికీ అనుమతించవద్దు"</item>
+ <item msgid="1154273129608299386">"ఎల్లప్పుడూ అనుమతించు"</item>
+ </string-array>
+</resources>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 53f061c..4ab127f 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"రాత్రి మోడ్"</string>
<string name="network_and_internet" msgid="4229023630498537530">"నెట్వర్క్ & ఇంటర్నెట్"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"మొబైల్ నెట్వర్క్"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIMలు</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"యాక్టివ్గా ఉంది / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"ఇన్యాక్టివ్గా ఉంది / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"యాక్టివ్ / డౌన్లోడ్ చేసిన SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"ఇన్యాక్టివ్ / డౌన్లోడ్ చేసిన SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"మరిన్నింటిని జోడించు"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"మొబైల్ డేటా"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"మొబైల్ నెట్వర్క్ను ఉపయోగించి డేటాను యాక్సెస్ చేయండి"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"మొబైల్ డేటాని ఆఫ్ చేయాలా?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"ఎంపిక అవసరం"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"మొబైల్ డేటా కోసం <xliff:g id="CARRIER">%1$s</xliff:g> ఉపయోగించాలా?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"మీరు మొబైల్ డేటా కోసం <xliff:g id="CARRIER2_0">%2$s</xliff:g>ను వినియోగిస్తున్నారు. మీరు <xliff:g id="CARRIER1">%1$s</xliff:g>కు మారితే, <xliff:g id="CARRIER2_1">%2$s</xliff:g> ఇప్పటి నుండి మొబైల్ డేటా కోసం ఉపయోగించబడదు."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g>ను ఉపయోగించు"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"రోమింగ్"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"రోమింగ్లో ఉన్నప్పుడు డేటా సేవలకు కనెక్ట్ చేయి"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"డేటా రోమింగ్ను అనుమతించాలా?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"మీకు గణనీయ ఛార్జీలు విధించబడవచ్చు."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"డేటా వినియోగం"</string>
<string name="data_usage_title" msgid="2923515974389203812">"ప్రాథమిక డేటా"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> వినియోగించబడింది"</string>
@@ -320,12 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"ప్రీమియం SMSతో మీకు డబ్బు ఖర్చు కావచ్చు, ఈ ఛార్జీ మీ క్యారియర్ బిల్లులలో విధించబడుతుంది. మీరు ఒక యాప్కు అనుమతిని ఇస్తే, ఆ యాప్ను ఉపయోగించి మీరు ప్రీమియం SMSను పంపగలరు."</string>
<string name="usage_access_title" msgid="7153427122072303254">"వినియోగ యాక్సెస్"</string>
<string name="usage_access_description" msgid="2413168719257435422">"వినియోగ యాక్సెస్తో యాప్ మీరు ఉపయోగించే ఇతర యాప్ల గురించి మరియు వాటిని ఎంత తరచుగా ఉపయోగిస్తున్నారనే దాని గురించి అలాగే మీ క్యారియర్, భాష సెట్టింగ్లు మరియు ఇతర వివరాలను ట్రాక్ చేయగలదు."</string>
- <!-- no translation found for directory_access_title (7117264853202268740) -->
- <skip />
- <!-- no translation found for directory_on_volume (4947971311247097078) -->
- <skip />
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi నియంత్రణ"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"యాప్కు Wi-Fiను ఆన్ లేదా ఆఫ్ చేయడానికి, Wi-Fi నెట్వర్క్లను స్కాన్ చేసి, కనెక్ట్ చేయడానికి, నెట్వర్క్లను జోడించడానికి లేదా తీసివేయడానికి, స్థానికం-మాత్రమే హాట్స్పాట్ను ప్రారంభించడానికి ఈ Wi-Fi కంట్రోలర్ అనుమతిస్తుంది."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"మరిన్ని"</string>
<string name="location_settings_title" msgid="901334356682423679">"స్థానం"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"ఇటీవలి స్థాన అభ్యర్థనలు"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ఇటీవలి స్థాన అభ్యర్థనలు లేవు"</string>
@@ -338,8 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"బ్లూటూత్ ఆఫ్లో ఉన్నప్పుడు కూడా, ఏ సమయంలోనైనా సమీపంలోని పరికరాలను స్కాన్ చేయడానికి యాప్లను మరియు సేవలను అనుమతించండి. ఉదాహరణకు, ఇది స్థాన ఆధారిత ఫీచర్లు మరియు సేవలను మెరుగుపరచడానికి ఉపయోగించబడుతుంది."</string>
<string name="system_setting_title" msgid="6864599341809463440">"సిస్టమ్"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"సిస్టమ్ అప్డేట్లు"</string>
- <!-- no translation found for status_unavailable (3737918179898732010) -->
- <skip />
<string name="firmware_version" msgid="8491753744549309333">"Android వెర్షన్"</string>
<string name="security_patch" msgid="4794276590178386903">"Android భద్రతా ప్యాచ్ స్థాయి"</string>
<string name="model_info" msgid="4966408071657934452">"మోడల్"</string>
@@ -347,8 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"కెర్నెల్ వెర్షన్"</string>
<string name="build_number" msgid="3997326631001009102">"బిల్డ్ సంఖ్య"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"బ్లూటూత్ చిరునామా"</string>
- <!-- no translation found for about_wifi_mac_address (3934228440550548053) -->
- <skip />
<string name="device_info_not_available" msgid="2095601973977376655">"అందుబాటులో లేదు"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"స్థితి"</string>
<string name="device_status" msgid="267298179806290920">"స్థితి"</string>
@@ -610,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"అంకెలను ఆరోహణ, అవరోహణ క్రమంలో లేదా ఒకే అంకెను వరుసగా పునరావృతంగా ఉపయోగించకూడదు."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"స్క్రీన్ లాక్ ఎంపికలు"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> రోజుల క్రితం"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"విశ్వసనీయ పరికరాన్ని జోడించండి"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"విశ్వసనీయ పరికరం కోసం బ్లూటూత్ ఆన్ అవుతుంది"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"విశ్వసనీయ పరికరాలు"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> పరికరాలు</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> పరికరం</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"కనెక్ట్ అయి ఉన్నప్పుడు మీ <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> మీ కారును అన్లాక్ చేస్తుంది. ఎవరైనా మీ <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>ను తీసుకున్నట్లయితే, వారు ఈ పరికరాన్ని యాక్సెస్ చేయగలరు"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"నిర్ధారించు"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"విశ్వసనీయ పరికరాన్ని తీసివేయి"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"పూర్తయింది"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"విశ్వసనీయ పరికరాన్ని సెటప్ చేయడానికి సహచర యాప్ను ఉపయోగించండి. ఒకసారి సెటప్ చేసుకున్న తర్వాత, వాహనం దగ్గరలో మీ ఫోన్ కనుగొనబడినప్పుడు మీ వినియోగదారు ప్రొఫైల్ ఆటోమేటిక్గా అన్లాక్ అవుతుంది."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. మీ ఫోన్లో సహచర యాప్ను డౌన్లోడ్ చేయండి"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. పరికరాలను జత చేయడానికి మీ ఫోన్లో <xliff:g id="CAR_NAME">%1$s</xliff:g>ను ఎంచుకోండి"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"కారులో ఎప్పుడైనా నిప్పు అంటుకోవడం లాంటివి జరిగితే, విశ్వసనీయ పరికరాన్ని వేరే వారు పట్టుకుని ఉన్నా కూడా ఆ పరికరం మీ వినియోగదారు ప్రొఫైల్ను అన్లాక్ చేస్తుంది."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"దయచేసి జత చేసే కోడ్లు సరిపోలాయని నిర్ధారించండి"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"ఫోన్ విజయవంతంగా నమోదు చేయబడింది"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> నమోదు విఫలమైంది"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"విశ్వసనీయ పరికరాన్ని జోడించడానికి తర్వాత ప్రమాణీకరణ పద్ధతిని సెట్ చేయాల్సిన అవసరం ఉంది. మీ వద్ద మీ విశ్వసనీయ పరికరం లేకపోతే, మీ ప్రొఫైల్ను యాక్సెస్ చేయడానికి ప్రామాణీకరణ చేయాల్సిన అవసరం ఉంది."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"పరికరం డిస్కనెక్ట్ చేయబడింది."</string>
<string name="forget" msgid="3971143908183848527">"విస్మరించు"</string>
<string name="connect" msgid="5861699594602380150">"కనెక్ట్ చేయి"</string>
<string name="disconnect" msgid="6140789953324820336">"డిస్కనెక్ట్ చేయి"</string>
diff --git a/res/values-th/arrays.xml b/res/values-th/arrays.xml
new file mode 100644
index 0000000..bc1d926
--- /dev/null
+++ b/res/values-th/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"ถาม"</item>
+ <item msgid="933409503308401889">"ไม่อนุญาตเลย"</item>
+ <item msgid="1154273129608299386">"อนุญาตเสมอ"</item>
+ </string-array>
+</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index b658aef..02c3fc6 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"โหมดกลางคืน"</string>
<string name="network_and_internet" msgid="4229023630498537530">"เครือข่ายและอินเทอร์เน็ต"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"เครือข่ายมือถือ"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ซิม</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ซิม</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"ใช้งานอยู่/ซิม"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"ไม่ได้ใช้งาน/ซิม"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"ใช้งานอยู่/ซิมที่ดาวน์โหลด"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"ไม่ได้ใช้งาน/ซิมที่ดาวน์โหลด"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"เพิ่มอีก"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"เน็ตมือถือ"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"เข้าถึงอินเทอร์เน็ตโดยใช้เครือข่ายมือถือ"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"ปิดเน็ตมือถือใช่ไหม"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"ต้องเลือก"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"ใช้อินเทอร์เน็ตมือถือของ <xliff:g id="CARRIER">%1$s</xliff:g> ไหม"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"คุณกำลังใช้อินเทอร์เน็ตมือถือของ <xliff:g id="CARRIER2_0">%2$s</xliff:g> หากเปลี่ยนเป็น <xliff:g id="CARRIER1">%1$s</xliff:g> ระบบจะหยุดใช้อินเทอร์เน็ตมือถือของ <xliff:g id="CARRIER2_1">%2$s</xliff:g>"</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"ใช้ <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"โรมมิ่ง"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"เชื่อมต่ออินเทอร์เน็ตมือถือขณะโรมมิ่ง"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"อนุญาตการโรมมิ่งข้อมูลไหม"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"คุณอาจต้องเสียค่าใช้จ่ายมาก"</string>
<string name="data_usage_settings" msgid="7877132994777987848">"ปริมาณการใช้อินเทอร์เน็ต"</string>
<string name="data_usage_title" msgid="2923515974389203812">"ข้อมูลหลัก"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"ใช้ไป <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"SMS แบบพรีเมียมอาจมีค่าใช้จ่ายและจะเพิ่มเข้าไปในใบเรียกเก็บเงินจากผู้ให้บริการ หากคุณให้สิทธิ์แอปหนึ่งๆ คุณจะใช้แอปนั้นส่ง SMS แบบพรีเมียมได้"</string>
<string name="usage_access_title" msgid="7153427122072303254">"การเข้าถึงการใช้งาน"</string>
<string name="usage_access_description" msgid="2413168719257435422">"การเข้าถึงการใช้งานทำให้แอปติดตามได้ว่าคุณกำลังใช้แอปอื่นใดอยู่บ้างในความถี่มากน้อยเท่าใด ตลอดจนทราบข้อมูลผู้ให้บริการ การตั้งค่าภาษา และรายละเอียดอื่นๆ"</string>
- <string name="directory_access_title" msgid="7117264853202268740">"การเข้าถึงไดเรกทอรี"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"การควบคุม Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"การควบคุม Wi-Fi จะอนุญาตให้แอปเปิดหรือปิด Wi-Fi, สแกนหาและเชื่อมต่อเครือข่าย Wi-Fi, เพิ่มหรือนำเครือข่ายออก หรือเริ่มฮอตสปอตในพื้นที่เท่านั้น"</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"เพิ่มเติม"</string>
<string name="location_settings_title" msgid="901334356682423679">"ตำแหน่ง"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"คำขอตำแหน่งล่าสุด"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"ไม่มีคำขอตำแหน่งล่าสุด"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"อนุญาตให้แอปและบริการต่างๆ สแกนหาอุปกรณ์ใกล้เคียงตลอดเวลา แม้บลูทูธจะปิดอยู่ การตั้งค่านี้ใช้เพื่อปรับปรุงสิ่งต่างๆ เช่น ฟีเจอร์และบริการตามสถานที่"</string>
<string name="system_setting_title" msgid="6864599341809463440">"ระบบ"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"การอัปเดตระบบ"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"ไม่พร้อมใช้งาน"</string>
<string name="firmware_version" msgid="8491753744549309333">"เวอร์ชันของ Android"</string>
<string name="security_patch" msgid="4794276590178386903">"ระดับแพตช์ความปลอดภัยของ Android"</string>
<string name="model_info" msgid="4966408071657934452">"รุ่น"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"เวอร์ชันเคอร์เนล"</string>
<string name="build_number" msgid="3997326631001009102">"หมายเลขบิวด์"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"ที่อยู่บลูทูธ"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"ที่อยู่ MAC ของ Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"ไม่พร้อมให้บริการ"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"สถานะ"</string>
<string name="device_status" msgid="267298179806290920">"สถานะ"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ไม่อนุญาตให้เรียงจากน้อยไปมาก จากมากไปน้อย หรือเรียงลำดับตัวเลขที่ซ้ำกัน"</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"ตัวเลือกการล็อกหน้าจอ"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> วันที่ผ่านมา"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"เพิ่มอุปกรณ์ที่เชื่อถือได้"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"บลูทูธจะเปิดเพื่อเพิ่มอุปกรณ์ที่เชื่อถือได้"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"อุปกรณ์ที่เชื่อถือได้"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other">อุปกรณ์ <xliff:g id="COUNT_1">%d</xliff:g> เครื่อง</item>
+ <item quantity="one">อุปกรณ์ <xliff:g id="COUNT_0">%d</xliff:g> เครื่อง</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> จะปลดล็อกรถคันนี้เมื่อมีการเชื่อมต่อ หากมีคนเอา <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> ของคุณไป เขาก็อาจใช้งานอุปกรณ์นี้ได้"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"ยืนยัน"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"นำอุปกรณ์ที่เชื่อถือได้ออก"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"เสร็จ"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"ใช้แอปที่ใช้ร่วมกันเพื่อตั้งค่าอุปกรณ์ที่เชื่อถือได้ เมื่อตั้งค่าแล้ว โปรไฟล์ผู้ใช้ของคุณจะปลดล็อกโดยอัตโนมัติเมื่อระบบตรวจพบโทรศัพท์ใกล้ยานพาหนะ"</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. ดาวน์โหลดแอปที่ใช้ร่วมกันในโทรศัพท์"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. เลือก <xliff:g id="CAR_NAME">%1$s</xliff:g> ในโทรศัพท์เพื่อจับคู่กับอุปกรณ์"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"อุปกรณ์ที่เชื่อถือได้ใกล้รถของคุณจะปลดล็อกโปรไฟล์ผู้ใช้เมื่อสตาร์ทรถ แม้อุปกรณ์จะอยู่ในมือคนอื่น"</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"โปรดยืนยันว่ารหัสการจับคู่อุปกรณ์ตรงกัน"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"ลงทะเบียนโทรศัพท์เรียบร้อยแล้ว"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"การลงทะเบียน <xliff:g id="DEVICE_NAME">%1$s</xliff:g> ล้มเหลว"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"ในการเพิ่มอุปกรณ์ที่เชื่อถือได้ คุณจำเป็นต้องกำหนดวิธีการตรวจสอบสิทธิ์ในขั้นถัดไป หากไม่มีอุปกรณ์ที่เชื่อถือได้ ระบบจะขอให้มีการตรวจสอบสิทธิ์ในการเข้าถึงโปรไฟล์ของคุณ"</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"อุปกรณ์ถูกตัดการเชื่อมต่อ"</string>
<string name="forget" msgid="3971143908183848527">"ลืม"</string>
<string name="connect" msgid="5861699594602380150">"เชื่อมต่อ"</string>
<string name="disconnect" msgid="6140789953324820336">"ยกเลิกการเชื่อมต่อ"</string>
diff --git a/res/values-tl/arrays.xml b/res/values-tl/arrays.xml
new file mode 100644
index 0000000..701c61a
--- /dev/null
+++ b/res/values-tl/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Magtanong"</item>
+ <item msgid="933409503308401889">"Huwag kailanman payagan"</item>
+ <item msgid="1154273129608299386">"Palaging payagan"</item>
+ </string-array>
+</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 13f82ae..b2ab7c3 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Night mode"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Network at internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobile network"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> na SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Aktibo / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Hindi aktibo / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Aktibo / Na-download na SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Hindi aktibo / Na-download na SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Magdagdag pa"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobile data"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"I-access ang data gamit ang mobile network"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"I-off ang mobile data?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Kinakailangang pumili"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Gamitin ang <xliff:g id="CARRIER">%1$s</xliff:g> sa mobile data?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Ginagamit mo ang <xliff:g id="CARRIER2_0">%2$s</xliff:g> para sa mobile data. Kung lilipat ka sa <xliff:g id="CARRIER1">%1$s</xliff:g>, hindi na gagamitin ang <xliff:g id="CARRIER2_1">%2$s</xliff:g> para sa mobile data."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Gamitin ang <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Roaming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Kumonekta sa mga serbisyo ng data kapag naka-roaming"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Payagan ang data roaming?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Puwede kang magkaroon ng malaking bayarin."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Paggamit ng data"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Pangunahing data"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> ang nagamit"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Puwedeng kailanganin mong magbayad para sa Premium SMS at isasama ito sa mga singilin ng iyong carrier. Kung ie-enable mo ang pahintulot para sa isang app, magagawa mong magpadala ng premium SMS gamit ang app na iyon."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Access sa paggamit"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Ang access sa paggamit ay nagbibigay-daan sa isang app na subaybayan kung ano ang iba pang app na ginagamit mo at kung gaano kadalas, pati ang iyong carrier, mga setting ng wika, at iba pang detalye."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Access sa directory"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Kontrol sa Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Nagbibigay-daan ang kontrol sa Wi-Fi na i-on o i-off ng isang app ang Wi-Fi, mag-scan ng at kumonekta sa mga Wi-Fi network, magdagdag o mag-alis ng mga network, o magsimula ng panglokal lang na hotspot."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Higit pa"</string>
<string name="location_settings_title" msgid="901334356682423679">"Lokasyon"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Mga Kamakailang Kahilingan sa Lokasyon"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Walang kamakailang kahilingan sa lokasyon"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Bigyang-daan ang mga app at serbisyo na mag-scan ng mga kalapit na device anumang oras, kahit na naka-off ang Bluetooth. Magagamit ito, halimbawa, para pahusayin ang mga feature at serbisyong batay sa lokasyon."</string>
<string name="system_setting_title" msgid="6864599341809463440">"System"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Mga pag-update ng system"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Hindi available"</string>
<string name="firmware_version" msgid="8491753744549309333">"Bersyon ng Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Antas ng patch ng seguridad ng Android"</string>
<string name="model_info" msgid="4966408071657934452">"Modelo"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Kernel version"</string>
<string name="build_number" msgid="3997326631001009102">"Numero ng build"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Address ng bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"MAC Address ng Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Hindi available"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Status"</string>
<string name="device_status" msgid="267298179806290920">"Status"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Hindi pinapayagan ang pataas, pababa, o paulit-ulit na pagkakasunod-sunod ng mga digit."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Mga opsyon sa lock ng screen"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> (na) araw ang nakalipas"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Magdagdag ng trusted na device"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Mag-o-on ang Bluetooth para idagdag ang pinagkakatiwalaang device"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Trusted na device"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> device</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> na device</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"Maa-unlock ng iyong <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> ang kotseng ito kapag nakakonekta ito. Kung may kumuha ng iyong <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, maaari niyang ma-access ang device na ito"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Kumpirmahin"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Mag-alis ng pinagkakatiwalaang device"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Tapos na"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Buksan ang kasamang app para mag-set up ng pinagkakatiwalaang device. Kapag na-set up na, awtomatikong maa-unlock ang iyong profile ng user kapag na-detect na malapit sa sasakyan ang telepono."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. I-download ang kasamang app sa iyong telepono"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Piliin ang <xliff:g id="CAR_NAME">%1$s</xliff:g> sa iyong telepono para ipares ang mga device"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Ia-unlock ng pinagkakatiwalaang device malapit sa iyong kotse ang profile ng user kapag pinaandar ito, kahit na ibang tao ang humahawak sa device."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Pakikumpirma kung magkatugma ang mga code ng pagpapares"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Matagumpay na na-enroll ang teleponono"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Hindi na-enroll ang <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Kapag nagdagdag ng pinagkakatiwalaang device, kinakailangan mong magtakda ng paraan ng pag-authenticate. Kung wala sa iyo ang pinagkakatiwalaan mong device, kakailanganin ang pag-authenticate para ma-access ang iyong profile."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Nadiskonekta ang device."</string>
<string name="forget" msgid="3971143908183848527">"Kalimutan"</string>
<string name="connect" msgid="5861699594602380150">"Kumonekta"</string>
<string name="disconnect" msgid="6140789953324820336">"Idiskonekta"</string>
diff --git a/res/values-tr/arrays.xml b/res/values-tr/arrays.xml
new file mode 100644
index 0000000..9f1c8b2
--- /dev/null
+++ b/res/values-tr/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Sor"</item>
+ <item msgid="933409503308401889">"Asla izin verme"</item>
+ <item msgid="1154273129608299386">"Her zaman izin ver"</item>
+ </string-array>
+</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 54493ee..6290cc5 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Gece modu"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Ağ ve internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobil ağ"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Etkin/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Etkin değil/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Etkin/İndirilen SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Etkin değil/İndirilen SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Başka ekle"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobil veri"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Verilere mobil ağ üzerinden erişim"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Mobil veri kapatılsın mı?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Seçim yapmanız gerekiyor"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Mobil veride <xliff:g id="CARRIER">%1$s</xliff:g> kullanılsın mı?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Mobil veri için <xliff:g id="CARRIER2_0">%2$s</xliff:g> operatörünü kullanıyorsunuz. <xliff:g id="CARRIER1">%1$s</xliff:g> operatörüne geçiş yaparsanız mobil veri için <xliff:g id="CARRIER2_1">%2$s</xliff:g> operatörünü artık kullanamazsınız."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> adlı operatörü kullan"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Dolaşım"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Dolaşımdayken veri hizmetlerine bağlan"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Veri dolaşımına izin verilsin mi?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Yüksek miktarda ücretler ödeyebilirsiniz."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Veri kullanımı"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Birincil veriler"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> kullanıldı"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Premium SMS kullanımı, para ödemenizi gerektirebilir ve bu ücret operatör faturanıza eklenir. Bir uygulamaya bu izni verdiğinizde söz konusu uygulamayı kullanarak premium SMS gönderebilirsiniz."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Kullanım erişimi"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Kullanım erişimi vermeniz hâlinde uygulama, başka hangi uygulamaları ve ne sıklıkta kullandığınızı, operatörünüzü, dil ayarlarınızı ve diğer ayrıntıları takip edebilir."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Dizin erişimi"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi kontrolü"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Kablosuz bağlantı kontrolü, bir uygulamanın kablosuz bağlantıyı açmasına veya kapatmasına, kablosuz ağları taramasına, eklemesine ya da kaldırmasına, kablosuz ağlara bağlanmasına veya yalnızca yerel hotspot bağlantısı başlatmasına izin verir."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Daha fazla"</string>
<string name="location_settings_title" msgid="901334356682423679">"Konum"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Yeni Konum İstekleri"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Yeni konum isteği yok"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Uygulamaların ve hizmetlerin etrafınızdaki cihazları Bluetooth kapalıyken bile her zaman taramasına izin verin. Bu özellik, konuma dayalı özellikleri ve hizmetleri iyileştirme gibi amaçlar için kullanılabilir."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Sistem"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Sistem güncellemeleri"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Kullanılamıyor"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android sürümü"</string>
<string name="security_patch" msgid="4794276590178386903">"Android güvenlik yaması düzeyi"</string>
<string name="model_info" msgid="4966408071657934452">"Model"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Çekirdek sürümü"</string>
<string name="build_number" msgid="3997326631001009102">"Derleme numarası"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth adresi"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Kablosuz MAC Adresi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Kullanılamıyor"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Durum"</string>
<string name="device_status" msgid="267298179806290920">"Durum"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Artan, azalan veya tekrar eden rakam dizisine izin verilmez."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekran kilidi seçenekleri"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> gün önce"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Güvenilen cihaz ekle"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth, güvenilen cihaz eklemek için açılacak"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Güvenilen cihazlar"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> cihaz</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> cihaz</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> cihazınız bu araca bağlı olduğunda aracın kilidini açacaktır. <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> cihazınız bir kişinin eline geçerse bu kişi cihazınıza erişebilir."</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Onayla"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Güvenilen cihazı kaldır"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Bitti"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Güvenilen cihaz ayarlamak için tamamlayıcı uygulamayı kullanın. Ayarlama yapıldıktan sonra telefonunuz aracın yakınında algılandığında kullanıcı profiliniz kilidi otomatik olarak açacaktır."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Tamamlayıcı uygulamayı telefonunuza indirin"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Cihazları eşlemek için telefonunuzda <xliff:g id="CAR_NAME">%1$s</xliff:g> seçimini yapın"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Aracınızın yakınındaki güvenilen bir cihaz, cihazı başka biri tutuyor olsa bile kontak açıldıktan sonra kullanıcı profilinin kilidini açacaktır."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Lütfen eşleme kodlarının eşleştiğini onaylayın"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Telefon başarıyla kaydedildi"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> kaydı başarısız oldu"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Güvenilen cihaz eklemek için kimlik doğrulama yöntemi belirlemeniz gerekir. Güvenilen cihazınız yanınızda değilse profilinize erişmek için kimlik doğrulama gerekecektir."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Cihazın bağlantısı kesildi."</string>
<string name="forget" msgid="3971143908183848527">"Unut"</string>
<string name="connect" msgid="5861699594602380150">"Bağlan"</string>
<string name="disconnect" msgid="6140789953324820336">"Bağlantıyı kes"</string>
diff --git a/res/values-uk/arrays.xml b/res/values-uk/arrays.xml
new file mode 100644
index 0000000..a2df917
--- /dev/null
+++ b/res/values-uk/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Запитувати"</item>
+ <item msgid="933409503308401889">"Ніколи не дозволяти"</item>
+ <item msgid="1154273129608299386">"Завжди дозволяти"</item>
+ </string-array>
+</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 9a515c6..3f875b0 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -31,9 +31,28 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Нічний режим"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Мережа й Інтернет"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Мобільна мережа"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-карта</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-карти</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-карт</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM-карти</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Активовано/SIM-карта"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Не активовано/SIM-карта"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Активовано/завантажена SIM-карта"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Не активовано/завантажена SIM-карта"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Додати ще"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Мобільне передавання даних"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Доступ до даних через мобільну мережу"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Вимкнути мобільне передавання даних?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Виберіть варіант"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Використовувати оператора <xliff:g id="CARRIER">%1$s</xliff:g> для мобільного передавання даних?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Оператор <xliff:g id="CARRIER2_0">%2$s</xliff:g> використовується для мобільного передавання даних. Якщо ви перейдете до оператора <xliff:g id="CARRIER1">%1$s</xliff:g>, <xliff:g id="CARRIER2_1">%2$s</xliff:g> більше не використовуватиметься для мобільного передавання."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Використовувати <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Роумінг"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Підключатися до сервісів передавання даних у роумінгу"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Дозволити роумінг даних?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Може стягуватися значна плата."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Використання трафіку"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Основні дані"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Використано: <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -187,7 +206,7 @@
<string name="keyboard_settings" msgid="1959697870618278081">"Клавіатура"</string>
<string name="manage_keyboard" msgid="4045394766282200132">"Керуйте клавіатурами"</string>
<string name="text_to_speech_settings" msgid="811985746199507343">"Вивід синтезу мовлення"</string>
- <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Система за умовчанням"</string>
+ <string name="text_to_speech_preferred_engine_settings" msgid="2766782925699132256">"Бажана система"</string>
<string name="text_to_speech_current_engine" msgid="8133107484909612597">"Поточна система"</string>
<string name="tts_speech_rate" msgid="4512944877291943133">"Темп мовлення"</string>
<string name="tts_pitch" msgid="2389171233852604923">"Тон"</string>
@@ -324,10 +343,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Кошти за платні SMS стягує оператор. Ви зможете надсилати платні SMS у додатку, якому надасте такий дозвіл."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Доступ до історії використання"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Завдяки доступу до історії використання додаток може відстежувати, які інші додатки ви використовуєте та як часто, а також визначати назву вашого оператора, налаштування мови й інші відомості."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Доступ до каталогу"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Керування Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Додаток із дозволом на керування Wi-Fi може вмикати й вимикати Wi-Fi, шукати, додавати й вилучати мережі, підключатися до них, а також запускати локальну точку доступу."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Більше"</string>
<string name="location_settings_title" msgid="901334356682423679">"Місце"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Останні запити на геодані"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Немає останніх запитів на геодані"</string>
@@ -340,7 +358,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Дозволити додаткам і службам будь-коли шукати пристрої поруч, навіть коли Bluetooth вимкнено. Це може покращити, наприклад, роботу функцій і служб, які використовують геодані."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Система"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Оновлення системи"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Недоступно"</string>
<string name="firmware_version" msgid="8491753744549309333">"Версія Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Рівень виправлення системи безпеки Android"</string>
<string name="model_info" msgid="4966408071657934452">"Модель"</string>
@@ -348,7 +365,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Версія ядра"</string>
<string name="build_number" msgid="3997326631001009102">"Номер складання"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Адреса Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"MAC-адреса Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Недоступно"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Статус"</string>
<string name="device_status" msgid="267298179806290920">"Статус"</string>
@@ -626,6 +642,28 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Заборонено однакові цифри або в порядку зростання чи спадання."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Способи блокування екрана"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> дн. тому"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Додати надійний пристрій"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth увімкнеться, щоб додати надійні пристрої"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Надійні пристрої"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> пристрій</item>
+ <item quantity="few"><xliff:g id="COUNT_1">%d</xliff:g> пристрої</item>
+ <item quantity="many"><xliff:g id="COUNT_1">%d</xliff:g> пристроїв</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> пристрою</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> буде розблоковувати автомобіль, якщо його підключити. <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> надає доступ до цього пристрою в будь-чиїх руках"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Підтвердити"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Вилучити надійний пристрій"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Готово"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Налаштуйте надійний пристрій у супутньому додатку. Тоді ваш профіль користувача розблокуватиметься автоматично, коли телефон підключиться до транспортного засобу."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Завантажте супутній додаток на телефон"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. На телефоні виберіть <xliff:g id="CAR_NAME">%1$s</xliff:g>, щоб підключити пристрої"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Надійний пристрій розблоковує профіль користувача після запалювання, якщо він поруч, навіть в іншої людини."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Підтвердьте, що коди підключення збігаються"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Телефон зареєстровано"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Не вдалося зареєструвати пристрій <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Додавши надійний пристрій, потрібно налаштувати спосіб автентифікації. Якщо пристрій не з вами, автентифікація знадобиться для доступу в профіль."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Утрачено з’єднання з пристроєм."</string>
<string name="forget" msgid="3971143908183848527">"Забути"</string>
<string name="connect" msgid="5861699594602380150">"Підключити"</string>
<string name="disconnect" msgid="6140789953324820336">"Від’єднати"</string>
diff --git a/res/values-ur/arrays.xml b/res/values-ur/arrays.xml
new file mode 100644
index 0000000..7cdd01d
--- /dev/null
+++ b/res/values-ur/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"پوچھیں"</item>
+ <item msgid="933409503308401889">"کبھی اجازت نہ دیں"</item>
+ <item msgid="1154273129608299386">"ہمیشہ اجازت دیں"</item>
+ </string-array>
+</resources>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 475093b..59973fa 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"نائٹ موڈ"</string>
<string name="network_and_internet" msgid="4229023630498537530">"نیٹ ورک اور انٹرنیٹ"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"موبائل نیٹ ورک"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIMs</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"فعال / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"غیر فعال / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"فعال / ڈاؤن لوڈ کردہ SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"غیر فعال / ڈاؤن لوڈ کردہ SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"مزید شامل کریں"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"موبائل ڈیٹا"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"موبائل نیٹ ورک کے ذریعے ڈیٹا تک رسائی حاصل کریں"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"موبائل ڈیٹا آف کریں؟"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"انتخاب درکار ہے"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"موبائل ڈیٹا کیلئے <xliff:g id="CARRIER">%1$s</xliff:g> یوز کریں؟"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"آپ موبائل ڈیٹا کے لیے <xliff:g id="CARRIER2_0">%2$s</xliff:g> استعمال کر رہے ہیں۔ اگر آپ <xliff:g id="CARRIER1">%1$s</xliff:g> پر سوئچ کریں گے تو <xliff:g id="CARRIER2_1">%2$s</xliff:g> کو موبائل ڈیٹا کے لیے مزید استعمال نہیں کیا جائے گا۔"</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> استعمال کریں"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"رومنگ"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"رومنگ کے وقت ڈیٹا سروسز سے منسلک کریں"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"ڈیٹا رومنگ کی اجازت دیں؟"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"آپ پر خاطر خواہ چارجز لگ سکتے ہیں۔"</string>
<string name="data_usage_settings" msgid="7877132994777987848">"ڈیٹا کا استعمال"</string>
<string name="data_usage_title" msgid="2923515974389203812">"بنیادی ڈیٹا"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> استعمال شدہ"</string>
@@ -320,12 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"ہو سکتا ہے آپ کو پریمیم SMS کے پیسے ادا کرنا پڑیں اور یہ آپ کے کیرئیر بلز میں شامل ہو جائیں گے۔ اگر آپ ایک ایپ کیلئے اجازت فعال کرتے ہیں تو آپ اس ایپ کو استعمال کرکے آپ پریمیم SMS بھیج پائیں گے۔"</string>
<string name="usage_access_title" msgid="7153427122072303254">"استعمال تک رسائی"</string>
<string name="usage_access_description" msgid="2413168719257435422">"استعمال تک رسائی کسی ایپ کو آپ کا کیریئر، زبان کی ترتیبات اور دیگر تفصیلات سمیت یہ ٹریک کرنے کی اجازت دیتی ہے کہ آپ کن دیگر ایپس کو اور کتنی بار استعمال کر رہے ہیں۔"</string>
- <!-- no translation found for directory_access_title (7117264853202268740) -->
- <skip />
- <!-- no translation found for directory_on_volume (4947971311247097078) -->
- <skip />
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi کنٹرول"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi کنٹرول ایپ کو Wi-Fi آن یا آف کرنے، Wi-Fi نیٹ ورکس اسکین اور ان سے منسلک کرنے، نیٹ ورکس شامل کرنے یا ہٹانے یا صرف مقامی ہاٹ اسپاٹ شروع کرنے کی اجازت دیتا ہے۔"</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"مزید"</string>
<string name="location_settings_title" msgid="901334356682423679">"مقام"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"مقام کی حالیہ درخواستیں"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"مقام کی کوئی حالیہ درخواست نہیں ہے"</string>
@@ -338,8 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"بلوٹوتھ کے آف ہونے پر بھی ایپس اور سروسز کو کسی بھی وقت قریبی آلات اسکین کرنے کی اجازت دیں۔ مثال کے طور، اسے مقام پر مبنی خصوصیات اور سروسز کو بہتر بنانے کے لیے استعمال کیا جا سکتا ہے۔"</string>
<string name="system_setting_title" msgid="6864599341809463440">"سسٹم"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"سسٹم اپ ڈیٹس"</string>
- <!-- no translation found for status_unavailable (3737918179898732010) -->
- <skip />
<string name="firmware_version" msgid="8491753744549309333">"Android ورژن"</string>
<string name="security_patch" msgid="4794276590178386903">"Android سیکیورٹی پیچ کی سطح"</string>
<string name="model_info" msgid="4966408071657934452">"ماڈل"</string>
@@ -347,8 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"کرنل ورژن"</string>
<string name="build_number" msgid="3997326631001009102">"بلڈ نمبر"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"بلوٹوتھ پتہ"</string>
- <!-- no translation found for about_wifi_mac_address (3934228440550548053) -->
- <skip />
<string name="device_info_not_available" msgid="2095601973977376655">"دستیاب نہیں ہے"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"صورتحال"</string>
<string name="device_status" msgid="267298179806290920">"صورتحال"</string>
@@ -610,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"ہندسوں کی صعودی، نزولی یا مکرر ترتیب کی اجازت نہیں ہے۔"</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"اسکرین لاک کے اختیارات"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> دن پہلے"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"بھروسہ مند آلہ شامل کریں"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"بھروسہ مند آلات شامل کے لیے بلوٹوتھ آن ہو جائے گا"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"بھروسہ مند آلات"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> آلات</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> آلہ</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"منسلک ہونے پر آپ کا <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> اس کار کو غیر مقفل کر دے گا۔ اگر کوئی شخص آپ کا <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> لیتا ہے تو اسے اس آلہ تک رسائی حاصل ہو سکتی ہے"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"تصدیق کریں"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"بھروسہ مند آلہ ہٹائیں"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"ہو گیا"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"بھروسہ مند آلہ کو سیٹ اپ کرنے کے لیے ساتھی ایپ کا استعمال کریں۔ ایک بار سیٹ اپ ہو جانے پر، وہیکل کے قریب آپ کا فون دریافت ہونے پر آپ کا صارف پروفائل خودکار طور پر غیر مقفل ہو جائے گا۔"</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1۔ اپنے فون پر ساتھی ایپ ڈاؤن لوڈ کریں"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2۔ آلات کو جوڑنے کے لیے فون پر <xliff:g id="CAR_NAME">%1$s</xliff:g> منتخب کریں"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"آپ کی کار کے قریب ایک بھروسہ مند آلہ آتش زنی پر صارف پروفائل کو غیر مقفل کر دے گا، اس وقت بھی جب کوئی اور آلے کو پکڑے ہوئے ہے۔"</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"براہ کرم توثیق کریں کہ جوڑا بنانے کے کوڈز مماثل ہیں"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"فون کامیابی کے ساتھ اندراج کر دیا گیا ہے"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> اندراج ناکام ہوگیا"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"بھروسہ مند آلہ شامل کرنے کے لیے آپ کو آگے ایک تصدیقی طریقہ سیٹ کرنا ہوگا۔ اگر آپ کے پاس بھروسہ مند آلہ نہیں ہے تو آپ کے پروفائل تک رسائی حاصل کرنے کے لیے تصدیق درکار ہوگی۔"</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"آلہ غیر منسلک ہو گیا۔"</string>
<string name="forget" msgid="3971143908183848527">"بھول جائیں"</string>
<string name="connect" msgid="5861699594602380150">"منسلک کریں"</string>
<string name="disconnect" msgid="6140789953324820336">"غیر منسلک کریں"</string>
diff --git a/res/values-uz/arrays.xml b/res/values-uz/arrays.xml
new file mode 100644
index 0000000..a9d61e3
--- /dev/null
+++ b/res/values-uz/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Soʻrash"</item>
+ <item msgid="933409503308401889">"Hech qachon ruxsat berilmasin"</item>
+ <item msgid="1154273129608299386">"Har doim ruxsat berilsin"</item>
+ </string-array>
+</resources>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index a870e27..100bb4d 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Tungi rejim"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Tarmoq va Internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mobil tarmoq"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> ta SIM karta</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> ta SIM karta</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Faol / SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Nofaol / SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Faol / Yuklab olingan SIM"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Nofaol / Yuklab olingan SIM"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Yana"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Mobil internet"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Mobil internet trafik sarfi"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Mobil internet uzilsinmi?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Tanlash zarur"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Internet uchun <xliff:g id="CARRIER">%1$s</xliff:g> ishlatilsinmi?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Mobil internet uchun <xliff:g id="CARRIER2_0">%2$s</xliff:g> ishlatmoqdasiz. <xliff:g id="CARRIER1">%1$s</xliff:g> faollashtirilganda, <xliff:g id="CARRIER2_1">%2$s</xliff:g> qayta mobil internet uchun ishlatilmaydi."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"<xliff:g id="CARRIER">%1$s</xliff:g> ishlatish"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Rouming"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Rouming vaqtida mobil internetga ulanish"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Internet-roumingga ruxsat berilsinmi?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Roumingda internet narxi ancha yuqori."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Trafik sarfi"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Asosiy trafik"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> sarflandi"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"SMS uchun sizdan haq olinishi va operatorga qoʻshimcha to‘lov amalga oshirilishi mumkin. Agar ilova uchun ruxsatnoma taqdim etsangiz, oʻsha ilovadan SMS yuborishingiz mumkin boʻladi."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Foydalanish tarixiga kirish"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Foydalanish tarixiga kirish huquqi qanday ilovalardan va qancha muddatda foydalanishingiz, shuningdek, tarmoq operatori, til va boshqa parametrlarni kuzatish imkonini beradi."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Kataloglarga kirish"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi tarmoqlarni boshqarish"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi tarmoqlarni boshqarish ilovaga Wi-Fi aloqasini yoqish yoki faolsizlantirish, Wi-Fi tarmoqlarni aniqlash va ularga ulanish, tarmoqlar kiritish yoki ularni olib tashlash yoki faqat mahalliy hotspotni ishga tushirish imkoniyatini beradi."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Yana"</string>
<string name="location_settings_title" msgid="901334356682423679">"Joylashuv"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Oxirgi joylashuv axboroti talablari"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Hech qanday joylashuvga oid talablar olinmagan"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Bluetooth yoniq emasligida ham ilovalar va xizmatlarga yaqin-atrofdagi qurilmalarni qidirish uchun ruxsat. Shunda joylashuv axborotiga asoslangan funksiya va xizmatlarning ishlashi yanada yaxshilanadi."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Tizim"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Tizimni yangilash"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Mavjud emas"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android versiyasi"</string>
<string name="security_patch" msgid="4794276590178386903">"Tizim xavfsizligi uchun yangilanish"</string>
<string name="model_info" msgid="4966408071657934452">"Modeli"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Yadro versiyasi"</string>
<string name="build_number" msgid="3997326631001009102">"Nashr raqami"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Bluetooth manzili"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi‑Fi MAC manzili"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Mavjud emas"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Holati"</string>
<string name="device_status" msgid="267298179806290920">"Holati"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Oshib boruvchi, kamayib boruvchi yoki qaytarilgan ketma-ket raqamlarga ruxsat berilmaydi."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Ekran qulfi parametrlari"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> kun oldin"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Ishonchli qurilma kiritish"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Qurilmani kiritish uchun Bluetooth yoqiladi"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Ishonchli qurilmalar"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> ta qurilma</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> ta qurilma</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> avtomobilga ulanishi bilan uning qulfini ochadi. <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> yordamida boshqalar ham bu qurilmaga kira oladi"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"OK"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Ishonchli qurilmani olib tashlash"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"OK"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Ishonchli qurilma sifatida sozlash uchun hamroh ilovadan foydalaning. Sozlangandan keyin telefoningizni avtomobil tanishi bilan foydalanuvchi profilingizni qulfdan chiqarish imkoni paydo boʻladi"</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Telefoningiz orqali hamroh ilovani yuklab oling"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Qurilmalarni bir-biriga ulash uchun telefoningizdan <xliff:g id="CAR_NAME">%1$s</xliff:g> nomini tanlang"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Ishonchli qurilmangizni boshqa odam ushlab turgan holda ham, avtomobilingiz motori oʻt olgandan keyin foydalanuvchi profilini qulfdan chiqarish mumkin."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Ulanish kodlari bir xil ekanligini tasdiqlang"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Telefon qayd qilindi"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> qayd qilinmadi"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Ishonchl qurilma kiritgandan keyin autentifikatsiya usulini sozlash talab qilinadi. Agar ishonchli qurilma yoningizda boʻlmasa, autentifikatsiya profilingizga kirishda talab etiladi."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Qurilma uzildi."</string>
<string name="forget" msgid="3971143908183848527">"Olib tashlash"</string>
<string name="connect" msgid="5861699594602380150">"Ulash"</string>
<string name="disconnect" msgid="6140789953324820336">"Uzish"</string>
diff --git a/res/values-vi/arrays.xml b/res/values-vi/arrays.xml
new file mode 100644
index 0000000..3fe8aa1
--- /dev/null
+++ b/res/values-vi/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Hỏi"</item>
+ <item msgid="933409503308401889">"Không bao giờ cho phép"</item>
+ <item msgid="1154273129608299386">"Luôn cho phép"</item>
+ </string-array>
+</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 674ee8c..b78f271 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Chế độ ban đêm"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Mạng và Internet"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Mạng di động"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> SIM</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Đang hoạt động/SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Không hoạt động/SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Đang hoạt động/Đã tải SIM xuống"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Không hoạt động/Đã tải SIM xuống"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Thêm"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Dữ liệu di động"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Sử dụng dữ liệu qua mạng di động"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Tắt dữ liệu di động?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Cần phải lựa chọn"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Sử dụng <xliff:g id="CARRIER">%1$s</xliff:g> cho dữ liệu di động?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Bạn đang sử dụng <xliff:g id="CARRIER2_0">%2$s</xliff:g> cho dữ liệu di động. Nếu chuyển sang <xliff:g id="CARRIER1">%1$s</xliff:g>, bạn sẽ không dùng được <xliff:g id="CARRIER2_1">%2$s</xliff:g> cho dữ liệu di động nữa."</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Sử dụng <xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Chuyển vùng"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Kết nối với dịch vụ dữ liệu khi chuyển vùng"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Cho phép chuyển vùng dữ liệu?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Bạn có thể phải trả khoản phí đáng kể."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Mức sử dụng dữ liệu"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Dữ liệu chính"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"Đã dùng <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"Tin nhắn dịch vụ có thể làm bạn mất tiền và sẽ cộng thêm vào hóa đơn nhà mạng của bạn. Nếu cấp quyền cho một ứng dụng, thì bạn có thể gửi Tin nhắn dịch vụ bằng ứng dụng đó."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Quyền truy cập dữ liệu sử dụng"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Quyền truy cập vào dữ liệu sử dụng cho phép một ứng dụng theo dõi các ứng dụng khác mà bạn đang dùng và tần suất sử dụng, cũng như thông tin nhà mạng, các tùy chọn cài đặt ngôn ngữ và thông tin chi tiết khác."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Quyền truy cập vào thư mục"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Kiểm soát Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Tùy chọn kiểm soát Wi-Fi cho phép một ứng dụng bật/tắt Wi-Fi, quét và kết nối vào mạng Wi-Fi, thêm/xóa mạng hoặc bắt đầu một điểm phát sóng chỉ dành cho mạng cục bộ."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Xem thêm"</string>
<string name="location_settings_title" msgid="901334356682423679">"Vị trí"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Yêu cầu vị trí gần đây"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Không có yêu cầu vị trí gần đây nào"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Cho phép các ứng dụng và dịch vụ quét tìm thiết bị lân cận bất kỳ lúc nào, ngay cả khi Bluetooth đang tắt. Bạn có thể sử dụng tùy chọn cài đặt này để cải thiện các tính năng và dịch vụ dựa trên vị trí."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Hệ thống"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Bản cập nhật hệ thống"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Không có sẵn"</string>
<string name="firmware_version" msgid="8491753744549309333">"Phiên bản Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Cấp bản vá bảo mật của Android"</string>
<string name="model_info" msgid="4966408071657934452">"Kiểu máy"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Phiên bản Kernel"</string>
<string name="build_number" msgid="3997326631001009102">"Số bản dựng"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Địa chỉ Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Địa chỉ MAC của Wi-Fi"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Không có"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Trạng thái"</string>
<string name="device_status" msgid="267298179806290920">"Trạng thái"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Không cho phép thứ tự chữ số tăng dần, giảm dần hoặc lặp lại."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Tùy chọn phương thức khóa màn hình"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> ngày trước"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Thêm thiết bị tin cậy"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"Bluetooth sẽ bật để thêm thiết bị tin cậy"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Thiết bị tin cậy"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> thiết bị</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> thiết bị</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> của bạn sẽ mở khóa ô tô này khi kết nối với ô tô. Nếu người khác cầm <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g> của bạn, họ có thể truy cập vào thiết bị này"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Xác nhận"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Xóa thiết bị tin cậy"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Xong"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Dùng ứng dụng đồng hành để thiết lập thiết bị tin cậy. Sau khi thiết lập xong, hồ sơ người dùng của bạn sẽ tự động mở khóa khi hệ thống phát hiện điện thoại ở gần ô tô."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Tải ứng dụng đồng hành xuống điện thoại"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Chọn <xliff:g id="CAR_NAME">%1$s</xliff:g> trên điện thoại để ghép nối các thiết bị"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Thiết bị tin cậy ở gần ô tô của bạn sẽ mở khóa hồ sơ người dùng khi ô tô nổ máy, kể cả khi người khác đang giữ thiết bị này."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Vui lòng xác nhận rằng mã ghép nối trùng khớp"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Đã đăng ký thành công điện thoại"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Không đăng ký được <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Sau khi thêm thiết bị tin cậy, bạn phải đặt một phương thức xác thực. Nếu không mang theo thiết bị tin cậy, bạn sẽ phải sử dụng phương thức xác thực này để truy cập hồ sơ của mình."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Đã ngắt kết nối thiết bị."</string>
<string name="forget" msgid="3971143908183848527">"Xóa"</string>
<string name="connect" msgid="5861699594602380150">"Kết nối"</string>
<string name="disconnect" msgid="6140789953324820336">"Ngắt kết nối"</string>
diff --git a/res/values-zh-rCN/arrays.xml b/res/values-zh-rCN/arrays.xml
new file mode 100644
index 0000000..b6ec898
--- /dev/null
+++ b/res/values-zh-rCN/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"询问"</item>
+ <item msgid="933409503308401889">"一律不允许"</item>
+ <item msgid="1154273129608299386">"一律允许"</item>
+ </string-array>
+</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 8da4ac2..a6cf95a 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"夜间模式"</string>
<string name="network_and_internet" msgid="4229023630498537530">"网络和互联网"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"移动网络"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 个 SIM 卡</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 个 SIM 卡</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"已启用/SIM 卡"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"未启用/SIM 卡"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"已启用/已下载的 SIM 卡"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"未启用/已下载的 SIM 卡"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"添加更多"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"移动数据"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"通过移动网络访问数据"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"要关闭移动数据网络吗?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"必须选择"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"要使用<xliff:g id="CARRIER">%1$s</xliff:g>的移动数据吗?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"您目前使用的是<xliff:g id="CARRIER2_0">%2$s</xliff:g>的移动数据。如果切换到<xliff:g id="CARRIER1">%1$s</xliff:g>,系统将不再使用<xliff:g id="CARRIER2_1">%2$s</xliff:g>的移动数据。"</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"使用<xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"漫游"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"漫游时连接到移动数据网络服务"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"要允许数据网络漫游吗?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"这可能会产生高额费用。"</string>
<string name="data_usage_settings" msgid="7877132994777987848">"流量消耗"</string>
<string name="data_usage_title" msgid="2923515974389203812">"主要数据"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"已使用 <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -322,10 +339,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"“付费短信”可能会产生费用,而且相关费用将计入您的运营商帐单。如果您为某个应用启用该权限,那么您将能够使用该应用发送付费短信。"</string>
<string name="usage_access_title" msgid="7153427122072303254">"使用情况访问权限"</string>
<string name="usage_access_description" msgid="2413168719257435422">"向应用授予“使用情况访问权限”后,应用即可跟踪您正在使用的其他应用和使用频率,以及您的运营商、语言设置及其他详细信息。"</string>
- <string name="directory_access_title" msgid="7117264853202268740">"目录访问权限"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g>(<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"WLAN 控制"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"向应用授予“WLAN 控制”权限后,应用就能开启或关闭 WLAN、扫描及连接到 WLAN 网络、添加或移除网络,或启动仅限本地的热点。"</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"更多"</string>
<string name="location_settings_title" msgid="901334356682423679">"位置信息"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"最近的位置信息请求"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"最近没有任何位置信息请求"</string>
@@ -338,7 +354,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"允许应用和服务随时扫描附近的设备(即使蓝牙已关闭)。这可用于改进基于位置的功能和服务。"</string>
<string name="system_setting_title" msgid="6864599341809463440">"系统"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"系统更新"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"不可用"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android 版本"</string>
<string name="security_patch" msgid="4794276590178386903">"Android 安全补丁程序级别"</string>
<string name="model_info" msgid="4966408071657934452">"型号"</string>
@@ -346,7 +361,6 @@
<string name="kernel_version" msgid="7327212934187011508">"内核版本"</string>
<string name="build_number" msgid="3997326631001009102">"版本号"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"蓝牙地址"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"WLAN MAC 地址"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"未提供"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"状态"</string>
<string name="device_status" msgid="267298179806290920">"状态"</string>
@@ -609,6 +623,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"不允许使用以升序、降序或重复序列进行排列的一串数字。"</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"屏幕锁定选项"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>:<xliff:g id="NUM_DAYS">%3$s</xliff:g> 天前"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"添加可信设备"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"系统将开启蓝牙以添加可信设备"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"可信设备"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 台设备</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 台设备</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"您的 <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> 会在连接到这辆车后将其解锁。如果有人拿到您的 <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>,对方也许能够访问此设备"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"确认"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"移除可信设备"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"完成"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"请使用配套应用来设置可信设备。设置后,您的用户个人资料就会在系统检测到手机位于汽车附近时自动解锁。"</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1.在手机上下载配套应用"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2.在手机上选择“<xliff:g id="CAR_NAME">%1$s</xliff:g>”以与相应设备配对"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"只要可信设备位于您的汽车附近,即可在汽车发动后将用户个人资料解锁(即使该设备在其他人手中也是如此)。"</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"请确认配对码是否一致"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"手机已成功注册"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> 注册失败"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"添加可信设备后,接下来您必须设置身份验证方法。如果您没有随身携带可信设备,则必须进行身份验证才能访问自己的个人资料。"</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"设备已断开连接。"</string>
<string name="forget" msgid="3971143908183848527">"忽略"</string>
<string name="connect" msgid="5861699594602380150">"连接"</string>
<string name="disconnect" msgid="6140789953324820336">"断开连接"</string>
diff --git a/res/values-zh-rHK/arrays.xml b/res/values-zh-rHK/arrays.xml
new file mode 100644
index 0000000..fd9b1b8
--- /dev/null
+++ b/res/values-zh-rHK/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"詢問"</item>
+ <item msgid="933409503308401889">"永不允許"</item>
+ <item msgid="1154273129608299386">"永遠允許"</item>
+ </string-array>
+</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 2bd149c..fcb4711 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"夜間模式"</string>
<string name="network_and_internet" msgid="4229023630498537530">"網絡和互聯網"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"流動網絡"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 張 SIM 卡</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 張 SIM 卡</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"已啟用/SIM 卡"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"已停用/SIM 卡"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"已啟用/已下載的 SIM 卡"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"已停用/已下載的 SIM 卡"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"新增更多"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"流動數據"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"使用流動網絡存取數據"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"要關閉流動數據嗎?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"請選取偏好設定"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"是否使用<xliff:g id="CARRIER">%1$s</xliff:g>提供的流動數據服務?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"您正在使用<xliff:g id="CARRIER2_0">%2$s</xliff:g>提供的流動數據服務。如果您切換至<xliff:g id="CARRIER1">%1$s</xliff:g>,<xliff:g id="CARRIER2_1">%2$s</xliff:g>將不再用於提供流動數據服務。"</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"使用<xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"漫遊"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"漫遊時連線到數據服務"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"要允許數據漫遊嗎?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"您可能需要支付龐大的費用。"</string>
<string name="data_usage_settings" msgid="7877132994777987848">"數據用量"</string>
<string name="data_usage_title" msgid="2923515974389203812">"主要數據"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"已使用 <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"付費短訊的費用可能高昂,並會增加您流動網絡供應商帳單的款項。如果您為應用程式開放權限,將可以透過該應用程式發送付費短訊。"</string>
<string name="usage_access_title" msgid="7153427122072303254">"使用情況存取權"</string>
<string name="usage_access_description" msgid="2413168719257435422">"使用記錄存取權允許應用程式追蹤您正在使用的其他應用程式和使用頻率,以及流動網絡供應商、語言設定和其他詳情。"</string>
- <string name="directory_access_title" msgid="7117264853202268740">"目錄存取權"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi 控制"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Wi-Fi 控制允許應用程式開啟或關閉 Wi-Fi,掃瞄和連線至 Wi-Fi 網絡、新增或移除網絡,或啟動僅限本機的熱點。"</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"更多"</string>
<string name="location_settings_title" msgid="901334356682423679">"位置"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"最近的位置資訊要求"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"最近沒有位置資訊要求"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"允許應用程式和服務隨時掃瞄附近的裝置 (即使藍牙功能已關閉)。此操作可用來改善適地性功能和服務。"</string>
<string name="system_setting_title" msgid="6864599341809463440">"系統"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"系統更新"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"無法提供"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android 版本"</string>
<string name="security_patch" msgid="4794276590178386903">"Android 安全性修補程式級別"</string>
<string name="model_info" msgid="4966408071657934452">"型號"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"核心版本"</string>
<string name="build_number" msgid="3997326631001009102">"版本號碼"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"藍牙位址"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi MAC 位址"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"未有資料"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"狀態"</string>
<string name="device_status" msgid="267298179806290920">"狀態"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"不可使用依遞增或遞減順序排列或重複的連續數字。"</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"螢幕鎖定選項"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>:<xliff:g id="NUM_DAYS">%3$s</xliff:g> 天前"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"加入信任的裝置"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"系統將開啟藍牙以新增信任的裝置"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"信任的裝置"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 部裝置</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 部裝置</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"您的 <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> 將在連接後為此汽車解鎖。如果有人取得您的 <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>,他們或許能存取此裝置。"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"確認"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"移除信任的裝置"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"完成"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"使用隨附應用程式設定信任的裝置。完成設定後,汽車將會在偵測到您的手機時自動解鎖使用者設定檔。"</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1.在手機下載隨附應用程式"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2.在手機選取「<xliff:g id="CAR_NAME">%1$s</xliff:g>」以配對裝置"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"在汽車引擎啟動後,即使信任的裝置在他人手上,仍可在靠近汽車時解鎖使用者設定檔。"</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"請確認配對碼相符"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"已成功註冊手機"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"「<xliff:g id="DEVICE_NAME">%1$s</xliff:g>」註冊失敗"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"如要加入信任的裝置,則需要在下一步設定驗證方法。如果未有攜帶信任的裝置,便需要通過驗證才可存取您的設定檔。"</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"裝置已中斷連線。"</string>
<string name="forget" msgid="3971143908183848527">"忘記"</string>
<string name="connect" msgid="5861699594602380150">"連接"</string>
<string name="disconnect" msgid="6140789953324820336">"解除連接"</string>
diff --git a/res/values-zh-rTW/arrays.xml b/res/values-zh-rTW/arrays.xml
new file mode 100644
index 0000000..5f0415e
--- /dev/null
+++ b/res/values-zh-rTW/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"詢問"</item>
+ <item msgid="933409503308401889">"一律不允許"</item>
+ <item msgid="1154273129608299386">"一律允許"</item>
+ </string-array>
+</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index a32330d..b612028 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"夜間模式"</string>
<string name="network_and_internet" msgid="4229023630498537530">"網路和網際網路"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"行動網路"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> 張 SIM 卡</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%1$d</xliff:g> 張 SIM 卡</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"已啟用/SIM 卡"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"未啟用/SIM 卡"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"已啟用/已下載的 SIM 卡"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"未啟用/已下載的 SIM 卡"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"新增更多"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"行動數據"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"使用行動網路存取數據"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"要關閉行動數據嗎?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"請選取要使用的 SIM 卡"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"要使用「<xliff:g id="CARRIER">%1$s</xliff:g>」的行動數據網路嗎?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"你目前使用的是「<xliff:g id="CARRIER2_0">%2$s</xliff:g>」的行動數據網路。如果你切換至「<xliff:g id="CARRIER1">%1$s</xliff:g>」,系統將不再使用「<xliff:g id="CARRIER2_1">%2$s</xliff:g>」的行動數據網路。"</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"使用「<xliff:g id="CARRIER">%1$s</xliff:g>」"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"漫遊"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"漫遊時連線到數據傳輸服務"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"要允許漫遊服務嗎?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"你可能需要支付可觀的費用。"</string>
<string name="data_usage_settings" msgid="7877132994777987848">"數據用量"</string>
<string name="data_usage_title" msgid="2923515974389203812">"主要數據"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"已使用 <xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g>"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"傳送付費簡訊必須另外付費,相關費用會併入電信費帳單。如果你為某個應用程式啟用權限,即可利用該應用程式傳送付費簡訊。"</string>
<string name="usage_access_title" msgid="7153427122072303254">"使用情況存取權"</string>
<string name="usage_access_description" msgid="2413168719257435422">"取得「使用情況存取權」權限後,應用程式就能追蹤你使用的其他應用程式與頻率,以及你的電信業者、語言設定和其他詳細資料。"</string>
- <string name="directory_access_title" msgid="7117264853202268740">"目錄存取權"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Wi-Fi 控制"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"取得「Wi-Fi 控制」權限後,應用程式就能開啟或關閉 Wi-Fi、掃描及連上 Wi-Fi 網路、新增或移除網路,或者啟動僅限本機的無線基地台。"</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"更多"</string>
<string name="location_settings_title" msgid="901334356682423679">"定位"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"最近的定位要求"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"最近沒有任何定位要求"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"允許應用程式和服務隨時掃描附近裝置 (即使藍牙功能處於關閉狀態)。這可以用來改善適地性功能和服務。"</string>
<string name="system_setting_title" msgid="6864599341809463440">"系統"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"系統更新"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"無法取得"</string>
<string name="firmware_version" msgid="8491753744549309333">"Android 版本"</string>
<string name="security_patch" msgid="4794276590178386903">"Android 安全性修補程式等級"</string>
<string name="model_info" msgid="4966408071657934452">"型號"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"核心版本"</string>
<string name="build_number" msgid="3997326631001009102">"版本號碼"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"藍牙位址"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Wi-Fi MAC 位址"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"無法取得"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"狀態"</string>
<string name="device_status" msgid="267298179806290920">"狀態"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"不得使用依遞增或遞減順序排列或是重複的數字。"</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"螢幕鎖定選項"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g>:<xliff:g id="NUM_DAYS">%3$s</xliff:g> 天前"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"新增信任的裝置"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"系統會在新增信任的裝置時開啟藍牙"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"信任的裝置"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> 部裝置</item>
+ <item quantity="one"><xliff:g id="COUNT_0">%d</xliff:g> 部裝置</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"如果你的 <xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> 與這輛車連結,就能將其解鎖。如果其他人取得你的 <xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>,對方或許能夠存取這個裝置"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"確認"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"移除信任的裝置"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"完成"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"請使用隨附應用程式設定信任的裝置。設定完成後,使用者設定檔就會在你的手機位於車輛附近時自動解鎖。"</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. 在手機上下載隨附應用程式"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. 在手機上選取 [<xliff:g id="CAR_NAME">%1$s</xliff:g>] 以便將裝置配對"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"只要信任的裝置位於車輛附近,即可在車輛處於發動狀態時將使用者設定檔解鎖,就算該裝置在其他人手中也一樣。"</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"請確認配對碼是否相符"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"已成功註冊手機"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"無法註冊 <xliff:g id="DEVICE_NAME">%1$s</xliff:g>"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"你必須在新增信任的裝置後設定驗證方法。如果你手邊沒有信任的裝置,就必須通過驗證才能存取自己的個人資料。"</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"裝置已中斷連線。"</string>
<string name="forget" msgid="3971143908183848527">"清除"</string>
<string name="connect" msgid="5861699594602380150">"連線"</string>
<string name="disconnect" msgid="6140789953324820336">"中斷連線"</string>
diff --git a/res/values-zu/arrays.xml b/res/values-zu/arrays.xml
new file mode 100644
index 0000000..8468802
--- /dev/null
+++ b/res/values-zu/arrays.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string-array name="premium_sms_access_values">
+ <item msgid="1035030245423608806">"Buza"</item>
+ <item msgid="933409503308401889">"Ungavumeli"</item>
+ <item msgid="1154273129608299386">"Hlala uvumela"</item>
+ </string-array>
+</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 9f488d7..f15241c 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -31,9 +31,26 @@
<string name="night_mode_tile_label" msgid="6603597795502131664">"Imodi yasebusuku"</string>
<string name="network_and_internet" msgid="4229023630498537530">"Inethiwekhi ne-inthanethi"</string>
<string name="mobile_network_settings" msgid="1708621113321368597">"Inethiwekhi yeselula"</string>
+ <plurals name="mobile_network_summary_count" formatted="false" msgid="6917348330386831454">
+ <item quantity="one"><xliff:g id="COUNT_1">%1$d</xliff:g> Ama-SIM</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%1$d</xliff:g> Ama-SIM</item>
+ </plurals>
+ <string name="mobile_network_active_sim" msgid="1901674954229832811">"Ukusebenza / i-SIM"</string>
+ <string name="mobile_network_inactive_sim" msgid="3644984830926224318">"Ukungasebenzi / i-SIM"</string>
+ <string name="mobile_network_active_esim" msgid="5864100786496761032">"Kuyasebenza / I-SIM elandiwe"</string>
+ <string name="mobile_network_inactive_esim" msgid="1397332352238119032">"Akusebenzi / i-SIM elandiwe"</string>
+ <string name="mobile_network_list_add_more" msgid="6174294462747070655">"Engeza okuningi"</string>
<string name="mobile_network_toggle_title" msgid="3515647310810280063">"Idatha yeselula"</string>
<string name="mobile_network_toggle_summary" msgid="8698267487987697148">"Finyelela kudatha usebenzisa inethiwekhi yeselula"</string>
<string name="confirm_mobile_data_disable" msgid="826493998804496639">"Vala idatha yeselula?"</string>
+ <string name="sim_selection_required_pref" msgid="6599562910262785784">"Ukukhetha kuyadingeka"</string>
+ <string name="sim_change_data_title" msgid="6677115745127365131">"Sebenzisa i-<xliff:g id="CARRIER">%1$s</xliff:g> yedatha yeselula?"</string>
+ <string name="sim_change_data_message" msgid="4669775284395549069">"Usebenzisa i-<xliff:g id="CARRIER2_0">%2$s</xliff:g> yedatha yeselula. Uma ushintshela ku-<xliff:g id="CARRIER1">%1$s</xliff:g>, i-<xliff:g id="CARRIER2_1">%2$s</xliff:g> ngeke isasetshenziselwa idatha yeselula"</string>
+ <string name="sim_change_data_ok" msgid="2348804996223271081">"Sebenzisa i-<xliff:g id="CARRIER">%1$s</xliff:g>"</string>
+ <string name="roaming_title" msgid="6218635014519017734">"Iyazulazula"</string>
+ <string name="roaming_summary" msgid="7476127740259728901">"Xhuma emasevisini edatha uma uzulazula"</string>
+ <string name="roaming_alert_title" msgid="4433901635766775763">"Vumela ukuhamba kwedatha?"</string>
+ <string name="roaming_warning" msgid="5313281900566657209">"Ungathola izindleko ezithile."</string>
<string name="data_usage_settings" msgid="7877132994777987848">"Ukusebenzisa idatha"</string>
<string name="data_usage_title" msgid="2923515974389203812">"Idatha eyinhloko"</string>
<string name="data_used_formatted" msgid="6684557577780068339">"<xliff:g id="ID_1">^1</xliff:g> <xliff:g id="ID_2">^2</xliff:g> esetshenzisiwe"</string>
@@ -320,10 +337,9 @@
<string name="premium_sms_access_description" msgid="7119026067677052169">"I-Premium SMS ingakwenzela izindleko zemali futhi izongeza kumabhili enkampani yenethiwekhi. Uma unika amandla imvume yohlelo lokusebenza, uzokwazi ukuthumela i-premium SMS usebenzisa lolo hlelo lokusebenza."</string>
<string name="usage_access_title" msgid="7153427122072303254">"Ukufinyelela ukusebenzisa"</string>
<string name="usage_access_description" msgid="2413168719257435422">"Ukufinyelela kokusebenzisa kuvumela uhlelo lokusebenza ukuthi lulandelele ukuthi yiziphi ezinye izinhlelo zokusebenza ozisebenzisayo nokuthi kaningi kangakanani, kanye nenkampani yakho yenethiwekhi, izilungiselelo zolimi neminye imininingwane."</string>
- <string name="directory_access_title" msgid="7117264853202268740">"Ukufinyelela kuhla lwemibhalo"</string>
- <string name="directory_on_volume" msgid="4947971311247097078">"<xliff:g id="VOLUME">%1$s</xliff:g> (<xliff:g id="DIRECTORY">%2$s</xliff:g>)"</string>
<string name="wifi_control_title" msgid="5660436566907731929">"Ulawulo lwe-Wi-Fi"</string>
<string name="wifi_control_description" msgid="6021926850423169261">"Isilawuli se-Wi-Fi sivumela uhlelo lokusebenza ukuthi luvule noma luvale i-Wi-Fi, luskene futhi luxhumeke kumanethiwekhi e-Wi-Fi, lungeze noma lususe amanethiwekhi, noma luqale i-hotspot yasendaweni kuphela."</string>
+ <string name="more_special_access_title" msgid="166115485446645971">"Okuningi"</string>
<string name="location_settings_title" msgid="901334356682423679">"Indawo"</string>
<string name="location_settings_recent_requests_title" msgid="6345634382240930628">"Izicelo zakamuva zendawo"</string>
<string name="location_settings_recent_requests_empty_message" msgid="7789667070033674910">"Azikho izicelo zakamuva zendawo"</string>
@@ -336,7 +352,6 @@
<string name="location_settings_bluetooth_scanning_summary" msgid="9158101751700727062">"Vumela izinhlelo zokusebenza namasevisi ukuthi askenele amadivayisi aseduze noma kunini, nanoma i-Bluetooth ivaliwe. Lokhu kungasetshenziselwa, njengesibonelo, ukuthuthukisa izici ezisuselwa endaweni namasevisi."</string>
<string name="system_setting_title" msgid="6864599341809463440">"Isistimu"</string>
<string name="system_update_settings_title" msgid="8448588267784138855">"Izibuyekezo zesistimu"</string>
- <string name="status_unavailable" msgid="3737918179898732010">"Akutholakali"</string>
<string name="firmware_version" msgid="8491753744549309333">"Inguqulo ye-Android"</string>
<string name="security_patch" msgid="4794276590178386903">"Ileveli yokuvikeleka ye-Android"</string>
<string name="model_info" msgid="4966408071657934452">"Imodeli"</string>
@@ -344,7 +359,6 @@
<string name="kernel_version" msgid="7327212934187011508">"Inguqulo ye-Kernel"</string>
<string name="build_number" msgid="3997326631001009102">"Yakha inombolo"</string>
<string name="bluetooth_mac_address" msgid="7641425947941688072">"Ikheli le-Bluetooth"</string>
- <string name="about_wifi_mac_address" msgid="3934228440550548053">"Ikheli le-Wi-Fi MAC"</string>
<string name="device_info_not_available" msgid="2095601973977376655">"Ayitholakali"</string>
<string name="device_status_activity_title" msgid="4083567497305368200">"Isimo"</string>
<string name="device_status" msgid="267298179806290920">"Isimo"</string>
@@ -606,6 +620,26 @@
<string name="lockpassword_pin_no_sequential_digits" msgid="38813552228809240">"Ukwenyuka, ukwehla, noma ukulandelana okuphindiwe kwamadijithi akuvunyelwe."</string>
<string name="setup_lock_settings_options_button_label" msgid="3337845811029780896">"Izinketho zokukhiya isikrini"</string>
<string name="build_info_fmt" msgid="5592554123908086426">"<xliff:g id="FINGERPRINT">%1$s</xliff:g>\n<xliff:g id="DATE">%2$s</xliff:g> : <xliff:g id="NUM_DAYS">%3$s</xliff:g> izinsuku ezedlule"</string>
+ <string name="add_device_title" msgid="8452168024017866232">"Engeza idivayisi ethenjiwe"</string>
+ <string name="add_device_summary" msgid="5368217520710573302">"I-Bluetooth izovula ukungeza idivayisi ethembekile"</string>
+ <string name="trusted_device" msgid="5637378361866787603">"Amadivayisi athenjwa"</string>
+ <plurals name="trusted_device_subtitle" formatted="false" msgid="462041049834264945">
+ <item quantity="one"><xliff:g id="COUNT_1">%d</xliff:g> amadivayisi</item>
+ <item quantity="other"><xliff:g id="COUNT_1">%d</xliff:g> amadivayisi</item>
+ </plurals>
+ <string name="remove_device_message" msgid="6447820559674148349">"I-<xliff:g id="CONNECTED_DEVICE_NAME_0">%1$s</xliff:g> yakho izovula le moto uma ixhunyiwe. Uma omunye umuntu athatha i-<xliff:g id="CONNECTED_DEVICE_NAME_1">%1$s</xliff:g>, angakwazi ukufinyelela le divayisi"</string>
+ <string name="trusted_device_confirm_button" msgid="102354635014627996">"Qinisekisa"</string>
+ <string name="trusted_device_remove_button" msgid="6140476996063415420">"Susa idivayisi ethenjiwe"</string>
+ <string name="trusted_device_done_button" msgid="8481956533222625296">"Kwenziwe"</string>
+ <string name="add_trusted_device_instruction" msgid="2280382609884918033">"Sebenzisa uhlelo lokusebenza elingumngane ukuze usethe idivayisi ethembekile. Uma seyisethiwe, iphrofayela yakho yomsebenzisi izovuleka ngokuzenzakalela uma ifoni yakho itholwa eduze kwemoto."</string>
+ <string name="trusted_device_download_app" msgid="6971096140154499983">"1. Landa uhlelo lokusebenza elingumngane efonini yakho"</string>
+ <string name="trusted_device_select_device" msgid="198902765179270739">"2. Khetha u-<xliff:g id="CAR_NAME">%1$s</xliff:g> efonini yakho ukuze ubhanqe amadivayisi"</string>
+ <string name="trusted_device_safety_alert" msgid="3834898922112046769">"Idivayisi ethenjiwe eseduze kwemoto yakho izovula iphrofayela yomsebenzisi uma isidunyiswa, nanoma kukhona omunye umuntu ophethe idivayisi."</string>
+ <string name="trusted_device_pairing_code_dialog_title" msgid="8173792468216796873">"Sicela uqinisekise ukuthi amakhodi okubhanqa ayafana"</string>
+ <string name="trusted_device_success_enrollment_toast" msgid="1238468775285575827">"Ifoni ibhaliswe ngempumelelo"</string>
+ <string name="trusted_device_fail_enrollment_toast" msgid="6801324174861209092">"Ukubhaliswa kwe-<xliff:g id="DEVICE_NAME">%1$s</xliff:g> kwehlulekiile"</string>
+ <string name="trusted_device_set_authentication_reminder" msgid="5947077589994822305">"Ukungeza idivayisi ethembekile kudinga ukuthi usethe indlela yokugunyaza elandelayo. Uma ungenayo idivayisi yakho ethembekile, ukugunyaza kuzodingeka ukufinyelela iphrofayela yakho."</string>
+ <string name="trusted_device_disconnected_toast" msgid="2541862946536880255">"Idivayisi inqanyuliwe."</string>
<string name="forget" msgid="3971143908183848527">"Khohlwa"</string>
<string name="connect" msgid="5861699594602380150">"Xhuma"</string>
<string name="disconnect" msgid="6140789953324820336">"Nqamula"</string>
diff --git a/res/values/preference_keys.xml b/res/values/preference_keys.xml
index fffc0df..5dcf88c 100644
--- a/res/values/preference_keys.xml
+++ b/res/values/preference_keys.xml
@@ -50,7 +50,12 @@
<string name="pk_network_and_internet_extra_settings" translatable="false">
network_and_internet_extra_settings
</string>
+ <string name="pk_mobile_network_list" translatable="false">mobile_network_list</string>
+ <string name="pk_mobile_network_list_add_more" translatable="false">
+ mobile_network_list_add_more
+ </string>
<string name="pk_mobile_data_toggle" translatable="false">mobile_data_toggle</string>
+ <string name="pk_mobile_roaming_toggle" translatable="false">mobile_roaming_toggle</string>
<string name="pk_data_usage_settings_entry" translatable="false">data_usage_settings_entry
</string>
<string name="pk_data_usage_summary" translatable="false">data_usage_summary</string>
@@ -144,9 +149,6 @@
<string name="pk_default_assist_and_voice" translatable="false">default_assist_and_voice
</string>
<string name="pk_default_assist" translatable="false">default_assist</string>
- <string name="pk_default_assist_and_voice_options" translatable="false">
- default_assist_and_voice_options
- </string>
<string name="pk_assist_use_text_context" translatable="false">assist_use_text_context</string>
<string name="pk_assist_use_screenshot" translatable="false">assist_use_screenshot</string>
<string name="pk_default_voice_input" translatable="false">default_voice_input</string>
@@ -192,17 +194,11 @@
<string name="pk_usage_access" translatable="false">usage_access</string>
<string name="pk_usage_access_description" translatable="false">usage_access_description
</string>
- <string name="pk_directory_access_entry" translatable="false">directory_access_entry</string>
- <string name="pk_directory_access" translatable="false">directory_access</string>
- <string name="pk_directory_access_details" translatable="false">directory_access_details
- </string>
- <string name="pk_directory_access_details_app" translatable="false">
- directory_access_details_app
- </string>
<string name="pk_wifi_control_entry" translatable="false">wifi_control_entry</string>
<string name="pk_wifi_control" translatable="false">wifi_control</string>
<string name="pk_wifi_control_description" translatable="false">wifi_control_description
</string>
+ <string name="pk_more_special_access" translatable="false">more_special_access</string>
<!-- DateTime Settings -->
<string name="pk_auto_datetime_switch" translatable="false">auto_datetime_switch</string>
@@ -303,6 +299,15 @@
<string name="pk_pattern_lock" translatable="false">pattern_lock</string>
<string name="pk_password_lock" translatable="false">password_lock</string>
<string name="pk_pin_lock" translatable="false">pin_lock</string>
+ <string name="pk_choose_lock_type" translatable="false">choose_lock_type</string>
+ <string name="pk_trusted_device" translatable="false">trusted_device</string>
+ <string name="pk_car_ble_name" translatable="false">car_ble_name</string>
+ <string name="pk_add_trusted_device" translatable="false">add_trusted_device</string>
+ <string name="pk_trusted_device_list" translatable="false">trusted_device_list</string>
+ <string name="pk_add_device_instruction" translatable="false">add_device_instruction</string>
+ <string name="pk_companion_app_download" translatable="false">companion_app_download</string>
+ <string name="pk_trusted_device_safety_alert" translatable="false">trusted_device_safety_alert
+ </string>
<!-- System Settings -->
<string name="pk_languages_and_input_settings" translatable="false">
@@ -359,7 +364,6 @@
<string name="pk_regulatory_labels" translatable="false">regulatory_labels</string>
<string name="pk_about_bluetooth_mac_address" translatable="false">about_bluetooth_mac_address
</string>
- <string name="pk_about_wifi_mac_address" translatable="false">about_wifi_mac_address</string>
<!-- Reset Options -->
<string name="pk_reset_network" translatable="false">reset_network</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 7b27df0..fd926b2 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -39,12 +39,59 @@
<string name="network_and_internet">Network & internet</string>
<!-- Mobile network settings [CHAR LIMIT=30] -->
<string name="mobile_network_settings">Mobile network</string>
+ <!-- Summary of the 'Mobile network' item on the Network & internet page when there is more than
+ one mobile service configured (aka "dual SIM") - it shows a count of SIM/eSIM and tapping
+ it leads to a page showing a list of the mobile service subscriptions. [CHAR LIMIT=40] -->
+ <plurals name="mobile_network_summary_count">
+ <item quantity="one"><xliff:g id="count" example="1">%1$d</xliff:g> SIM</item>
+ <item quantity="other"><xliff:g id="count" example="2">%1$d</xliff:g> SIMs</item>
+ </plurals>
+ <!-- Summary for an item in the page listing multiple mobile service subscriptions, indicating
+ that service is active and is tied to a physical SIM card [CHAR LIMIT=40] -->
+ <string name="mobile_network_active_sim">Active / SIM</string>
+ <!-- Summary for an item in the page listing multiple mobile service subscriptions, indicating
+ that service is inactive and is tied to a physical SIM card [CHAR LIMIT=40] -->
+ <string name="mobile_network_inactive_sim">Inactive / SIM</string>
+ <!-- Summary for an item in the page listing multiple mobile service subscriptions, indicating
+ that service is active and is tied to an eSIM profile [CHAR LIMIT=40] -->
+ <string name="mobile_network_active_esim">Active / Downloaded SIM</string>
+ <!-- Summary for an item in the page listing multiple mobile service subscriptions, indicating
+ that service is inactive and is tied to an eSIM profile [CHAR LIMIT=40] -->
+ <string name="mobile_network_inactive_esim">Inactive / Downloaded SIM</string>
+ <!-- Title of item shown at the bottom of the page listing multiple mobile service
+ subscriptions; tapping it leads to a UI to add more [CHAR LIMIT=40] -->
+ <string name="mobile_network_list_add_more">Add more</string>
<!-- Mobile network screen, toggle mobile data title [CHAR LIMIT=30] -->
<string name="mobile_network_toggle_title">Mobile data</string>
<!-- Mobile network screen, toggle mobile data summary [CHAR LIMIT=50] -->
<string name="mobile_network_toggle_summary">Access data using mobile network</string>
<!-- Mobile network screen, confirmation dialog to turn off mobile data [CHAR LIMIT=50] -->
<string name="confirm_mobile_data_disable">Turn off mobile data?</string>
+ <!-- When a SIM preference hasn't been selected yet, this string is displayed as the pref summary until the user chooses a SIM subscription from the preference list. [CHAR LIMIT=50] -->
+ <string name="sim_selection_required_pref">Selection required</string>
+ <!-- Title asking user if they wish to change the default sim for cellular data. [CHAR LIMIT=60] -->
+ <string name="sim_change_data_title">
+ Use <xliff:g id="carrier" example="Google Fi">%1$s</xliff:g> for mobile data?
+ </string>
+ <!-- Message confirming that the user wishes to change the default data SIM from one to another. [CHAR LIMIT=NONE] -->
+ <string name="sim_change_data_message">
+ You\u0027re using <xliff:g id="carrier2" example="Google Fi">%2$s</xliff:g> for mobile data.
+ If you switch to <xliff:g id="carrier1" example="Verizon">%1$s</xliff:g>,
+ <xliff:g id="carrier2" example="Google Fi">%2$s</xliff:g> will no longer be used for mobile
+ data.
+ </string>
+ <!-- Ok button label confirming the user wishes to change the default data SIM from one to another. [CHAR LIMIT=25] -->
+ <string name="sim_change_data_ok">
+ Use <xliff:g id="carrier" example="Verizon">%1$s</xliff:g>
+ </string>
+ <!-- Mobile network screen, preference title for toggle to enable roaming [CHAR LIMIT=30] -->
+ <string name="roaming_title">Roaming</string>
+ <!-- Mobile network screen, preference summary for toggle to enable roaming [CHAR LIMIT=60] -->
+ <string name="roaming_summary">Connect to data services when roaming</string>
+ <!-- Mobile network settings screen, dialog message title when user selects the Data roaming toggle [CHAR LIMIT=60] -->
+ <string name="roaming_alert_title">Allow data roaming?</string>
+ <!-- Mobile network settings screen, message in dialog box that appears when you select the Data roaming toggle [CHAR LIMIT=80] -->
+ <string name="roaming_warning">You may incur significant charges.</string>
<!-- Data usage settings [CHAR LIMIT=30] -->
<string name="data_usage_settings">Data usage</string>
<!-- Data usage title text [CHAR LIMIT=30] -->
@@ -665,14 +712,12 @@
<string name="usage_access_title">Usage access</string>
<!-- Description of the usage access permission. [CHAR_LIMIT=NONE] -->
<string name="usage_access_description">Usage access allows an app to track what other apps you\u2019re using and how often, as well as your carrier, language settings, and other details.</string>
- <!-- Title for managing external storage directory access settings. [CHAR_LIMIT=30] -->
- <string name="directory_access_title">Directory access</string>
- <!-- String used to describe the name of a directory on a particular volume. Example: SD Card (Movies). [CHAR_LIMIT=50] -->
- <string name="directory_on_volume"><xliff:g id="volume" example="SD Card">%1$s</xliff:g> (<xliff:g id="directory" example="Movies">%2$s</xliff:g>)</string>
<!-- Title for managing apps which can change Wi-Fi state. [CHAR_LIMIT=30] -->
<string name="wifi_control_title">Wi-Fi control</string>
<!-- Description of the change wifi state permission. [CHAR_LIMIT=NONE] -->
<string name="wifi_control_description">Wi-Fi control allows an app to turn Wi-Fi on or off, scan and connect to Wi-Fi networks, add or remove networks, or start a local-only hotspot.</string>
+ <!-- Title for item that when selected will launch into additional special access settings. [CHAR_LIMIT=30] -->
+ <string name="more_special_access_title">More</string>
<!-- Location --><skip/>
<!-- Main setting menu item to go into location settings [CHAR LIMIT=40] -->
@@ -704,9 +749,6 @@
<!-- System updates title. Takes the user to the screen for seeing and installing system updates. [CHAR LIMIT=40] -->
<string name="system_update_settings_title">System updates</string>
- <!-- Settings About screen, status item value if the actual value is not available. [CHAR LIMIT=NONE]-->
- <string name="status_unavailable">Unavailable</string>
-
<!-- About phone screen, status item label [CHAR LIMIT=40] -->
<string name="firmware_version">Android version</string>
<!-- About phone screen, status item label [CHAR LIMIT=60] -->
@@ -721,8 +763,6 @@
<string name="build_number">Build number</string>
<!-- About phone screen, setting option name [CHAR LIMIT=40] -->
<string name="bluetooth_mac_address">Bluetooth address</string>
- <!-- About phone screen, setting option name [CHAR LIMIT=40] -->
- <string name="about_wifi_mac_address">Wi-Fi MAC Address</string>
<!-- About phone screen, show when a value of some status item is unavailable. -->
<string name="device_info_not_available">Not available</string>
@@ -1290,6 +1330,45 @@
user-debug and eng builds. -->
<string name="build_info_fmt"><xliff:g example="google/gcar_emu_x86/..." id="fingerprint">%1$s</xliff:g>\n<xliff:g example="Thu Aug 30" id="date">%2$s</xliff:g> : <xliff:g example="4" id="num_days">%3$s</xliff:g> days ago</string>
+ <!-- security trusted device --><skip/>
+ <!-- Label for button to add a trusted device [CHAR LIMIT=50] -->
+ <string name="add_device_title">Add trusted device</string>
+ <!-- Label for button to add a trusted device [CHAR LIMIT=100] -->
+ <string name="add_device_summary">Bluetooth will turn on to add trusted device</string>
+ <!-- Screen title and label for button of trusted device [CHAR LIMIT=30]> -->
+ <string name="trusted_device">Trusted devices</string>
+ <!-- Subtitle of trusted device button in security page which displays the number of devices that are considered trusted[CHAR LIMIT=30]-->
+ <plurals name="trusted_device_subtitle">
+ <item quantity="one"><xliff:g id="count" example="1">%d</xliff:g> device</item>
+ <item quantity="other"><xliff:g id="count" example="10">%d</xliff:g> devices</item>
+ </plurals>
+ <!-- Message in dialog which will remind the user what a trusted device can do. [CHAR LIMIT=NONE]-->
+ <string name="remove_device_message">Your <xliff:g id="connected_device_name" example="Pixel2">%1$s</xliff:g> will unlock this car when it\'s connected. If someone takes your <xliff:g id="connected_device_name" example="Pixel2">%1$s</xliff:g>, they may be able to access this device</string>
+ <!-- Confirm button label of confirm pairing code dialog [CHAR LIMIT=30]-->
+ <string name="trusted_device_confirm_button">Confirm</string>
+ <!-- Confirm button label of confirm remove device dialog [CHAR LIMIT=40]-->
+ <string name="trusted_device_remove_button">Remove trusted device</string>
+ <!-- Cancel button label of confirm remove device dialog [CHAR LIMIT=20]-->
+ <string name="trusted_device_done_button">Done</string>
+ <!-- Message shown on the add trusted device page [CHAR LIMIT=NONE]-->
+ <string name="add_trusted_device_instruction">Use the companion app to set up a trusted device. Once set up, your user profile will unlock automatically when your phone is detected near the vehicle.</string>
+ <!-- Step one of adding a trusted device [CHAR LIMIT=NONE]-->
+ <string name="trusted_device_download_app">1. Download the companion app on your phone</string>
+ <!-- Step two of adding a trusted device [CHAR LIMIT=NONE]-->
+ <string name="trusted_device_select_device">2. Select <xliff:g id="car_name" example="MyCar">%1$s</xliff:g> on your phone to pair the devices</string>
+ <!-- Messages shown to alert user about the safety of the trusted device feature [CHAR LIMIT=NONE]-->
+ <string name="trusted_device_safety_alert">A trusted device nearby your car will unlock the user profile upon ignition, even if someone else is holding the device.</string>
+ <!-- Confirm pairing code dialog title [CHAR LIMIT=60]-->
+ <string name="trusted_device_pairing_code_dialog_title">Please confirm that the pairing codes match</string>
+ <!-- Toast shown when user enrolls a device successfully [CHAR LIMIT=100]-->
+ <string name="trusted_device_success_enrollment_toast">Phone has been enrolled successfully</string>
+ <!-- Toast shown when enrolling a device fails [CHAR LIMIT=50]-->
+ <string name="trusted_device_fail_enrollment_toast"><xliff:g id="device_name" example="Pixel2">%1$s</xliff:g> enrollment failed</string>
+ <!-- Message shown when user have not set authentication [CHAR LIMIT=NONE]-->
+ <string name="trusted_device_set_authentication_reminder">Adding a trusted device requires you to set an authentication method next. If you do not have your trusted device with you, authentication will be required to access your profile.</string>
+ <!-- Toast shown when phone is disconnected [CHAR LIMIT=50]-->
+ <string name="trusted_device_disconnected_toast">Device disconnected.</string>
+
<!-- generic --><skip/>
<!-- Button label for generic forget action [CHAR LIMIT=20] -->
<string name="forget">Forget</string>
diff --git a/res/xml/about_settings_fragment.xml b/res/xml/about_settings_fragment.xml
index c7c2b20..7dae157 100644
--- a/res/xml/about_settings_fragment.xml
+++ b/res/xml/about_settings_fragment.xml
@@ -49,8 +49,4 @@
android:key="@string/pk_about_bluetooth_mac_address"
android:title="@string/bluetooth_mac_address"
settings:controller="com.android.car.settings.system.BluetoothMacAddressPreferenceController"/>
- <Preference
- android:key="@string/pk_about_wifi_mac_address"
- android:title="@string/about_wifi_mac_address"
- settings:controller="com.android.car.settings.system.WifiMacAddressPreferenceController"/>
</PreferenceScreen>
diff --git a/res/xml/add_trusted_device_progress_fragment.xml b/res/xml/add_trusted_device_progress_fragment.xml
new file mode 100644
index 0000000..a7921f3
--- /dev/null
+++ b/res/xml/add_trusted_device_progress_fragment.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:settings="http://schemas.android.com/apk/res-auto"
+ android:title="@string/add_device_title">
+ <Preference
+ android:key="@string/pk_add_device_instruction"
+ android:summary="@string/add_trusted_device_instruction"/>
+ <Preference
+ android:key="@string/pk_companion_app_download"
+ android:title="@string/trusted_device_download_app"/>
+ <Preference
+ android:key="@string/pk_car_ble_name"
+ settings:controller="com.android.car.settings.security.ChooseDeviceInstructionPreferenceController"/>
+ <Preference
+ android:key="@string/pk_trusted_device_safety_alert"
+ android:summary="@string/trusted_device_safety_alert"/>
+</PreferenceScreen>
diff --git a/res/xml/apps_and_notifications_fragment.xml b/res/xml/apps_and_notifications_fragment.xml
index 42f8aea..9bd08f7 100644
--- a/res/xml/apps_and_notifications_fragment.xml
+++ b/res/xml/apps_and_notifications_fragment.xml
@@ -25,10 +25,11 @@
android:title="@string/all_applications"
settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
<Preference
- android:fragment="com.android.car.settings.applications.DefaultApplicationsSettingsFragment"
android:key="@string/pk_default_applications_settings_entry"
android:title="@string/default_applications"
- settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+ settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController">
+ <intent android:action="android.settings.MANAGE_DEFAULT_APPS_SETTINGS"/>
+ </Preference>
<Preference
android:key="@string/pk_app_permissions_entry"
android:title="@string/app_permissions"
diff --git a/res/xml/choose_trusted_device_fragment.xml b/res/xml/choose_trusted_device_fragment.xml
new file mode 100644
index 0000000..261b9b9
--- /dev/null
+++ b/res/xml/choose_trusted_device_fragment.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:settings="http://schemas.android.com/apk/res-auto"
+ android:title="@string/trusted_device">
+ <com.android.car.settings.common.LogicalPreferenceGroup
+ android:key="@string/pk_trusted_device_list"
+ settings:controller="com.android.car.settings.security.TrustedDeviceListPreferenceController"/>
+ <Preference
+ android:icon="@drawable/ic_add"
+ android:key="@string/pk_add_trusted_device"
+ android:title="@string/add_device_title"
+ settings:controller="com.android.car.settings.security.AddTrustedDevicePreferenceController">
+ <intent
+ android:targetClass="com.android.car.settings.security.AddTrustedDeviceActivity"
+ android:targetPackage="com.android.car.settings"/>
+ </Preference>
+</PreferenceScreen>
diff --git a/res/xml/default_applications_settings_fragment.xml b/res/xml/default_applications_settings_fragment.xml
deleted file mode 100644
index 4282fc4..0000000
--- a/res/xml/default_applications_settings_fragment.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright 2019 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<PreferenceScreen
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:settings="http://schemas.android.com/apk/res-auto"
- android:title="@string/default_applications">
- <Preference
- android:fragment="com.android.car.settings.applications.assist.ManageAssistFragment"
- android:key="@string/pk_default_assist_and_voice"
- android:title="@string/assist_and_voice_input_settings"
- settings:controller="com.android.car.settings.applications.assist.ManageAssistEntryPreferenceController"
- settings:iconSpaceReserved="true"/>
- <Preference
- android:fragment="com.android.car.settings.applications.managedomainurls.ManageDomainUrlsFragment"
- android:key="@string/pk_opening_links_entry"
- android:title="@string/app_launch_domain_links_title"
- settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"
- settings:iconSpaceReserved="true"/>
-</PreferenceScreen>
diff --git a/res/xml/default_assistant_picker_fragment.xml b/res/xml/default_assistant_picker_fragment.xml
deleted file mode 100644
index 27545a9..0000000
--- a/res/xml/default_assistant_picker_fragment.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright 2019 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<PreferenceScreen
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:settings="http://schemas.android.com/apk/res-auto"
- android:title="@string/assist_app_settings">
- <com.android.car.settings.common.LogicalPreferenceGroup
- android:key="@string/pk_default_assist_and_voice_options"
- settings:controller="com.android.car.settings.applications.defaultapps.DefaultAssistantPickerPreferenceController"/>
-</PreferenceScreen>
diff --git a/res/xml/directory_access_fragment.xml b/res/xml/directory_access_fragment.xml
deleted file mode 100644
index ff5d2cb..0000000
--- a/res/xml/directory_access_fragment.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright 2019 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<PreferenceScreen
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:settings="http://schemas.android.com/apk/res-auto"
- android:title="@string/directory_access_title">
- <com.android.car.settings.common.LogicalPreferenceGroup
- android:key="@string/pk_directory_access"
- settings:controller="com.android.car.settings.applications.specialaccess.DirectoryAccessPreferenceController"/>
-</PreferenceScreen>
diff --git a/res/xml/homepage_fragment.xml b/res/xml/homepage_fragment.xml
index fa343f6..2a69c32 100644
--- a/res/xml/homepage_fragment.xml
+++ b/res/xml/homepage_fragment.xml
@@ -97,14 +97,11 @@
android:title="@string/storage_settings_title"
settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
<Preference
+ android:fragment="com.android.car.settings.security.SecuritySettingsFragment"
android:icon="@drawable/ic_lock"
android:key="@string/pk_security_settings_entry"
android:title="@string/security_settings_title"
- settings:controller="com.android.car.settings.security.SecurityEntryPreferenceController">
- <intent
- android:targetClass="com.android.car.settings.security.SettingsScreenLockActivity"
- android:targetPackage="com.android.car.settings"/>
- </Preference>
+ settings:controller="com.android.car.settings.security.SecurityEntryPreferenceController"/>
<Preference
android:fragment="com.android.car.settings.system.SystemSettingsFragment"
android:icon="@drawable/ic_settings_about"
diff --git a/res/xml/manage_assist_fragment.xml b/res/xml/manage_assist_fragment.xml
index 0f682bc..e5010f8 100644
--- a/res/xml/manage_assist_fragment.xml
+++ b/res/xml/manage_assist_fragment.xml
@@ -20,7 +20,6 @@
xmlns:settings="http://schemas.android.com/apk/res-auto"
android:title="@string/assist_and_voice_input_settings">
<com.android.car.settings.common.ButtonPreference
- android:fragment="com.android.car.settings.applications.defaultapps.DefaultAssistantPickerFragment"
android:key="@string/pk_default_assist"
android:title="@string/assist_app_settings"
android:widgetLayout="@layout/details_preference_widget"
diff --git a/res/xml/mobile_network_fragment.xml b/res/xml/mobile_network_fragment.xml
index 675ecb0..1b59b1c 100644
--- a/res/xml/mobile_network_fragment.xml
+++ b/res/xml/mobile_network_fragment.xml
@@ -24,4 +24,9 @@
android:summary="@string/mobile_network_toggle_summary"
android:title="@string/mobile_network_toggle_title"
settings:controller="com.android.car.settings.network.MobileDataTogglePreferenceController"/>
+ <SwitchPreference
+ android:key="@string/pk_mobile_roaming_toggle"
+ android:summary="@string/roaming_summary"
+ android:title="@string/roaming_title"
+ settings:controller="com.android.car.settings.network.RoamingPreferenceController"/>
</PreferenceScreen>
diff --git a/res/xml/directory_access_details_fragment.xml b/res/xml/mobile_network_list_fragment.xml
similarity index 63%
rename from res/xml/directory_access_details_fragment.xml
rename to res/xml/mobile_network_list_fragment.xml
index f773dd0..3c7d769 100644
--- a/res/xml/directory_access_details_fragment.xml
+++ b/res/xml/mobile_network_list_fragment.xml
@@ -18,12 +18,14 @@
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res-auto"
- android:title="@string/directory_access_title">
- <Preference
- android:key="@string/pk_directory_access_details_app"
- android:selectable="false"
- settings:controller="com.android.car.settings.applications.ApplicationPreferenceController"/>
+ android:title="@string/mobile_network_settings">
<com.android.car.settings.common.LogicalPreferenceGroup
- android:key="@string/pk_directory_access_details"
- settings:controller="com.android.car.settings.applications.specialaccess.DirectoryAccessDetailsPreferenceController"/>
+ android:key="@string/pk_mobile_network_list"
+ settings:controller="com.android.car.settings.network.MobileNetworkListPreferenceController"/>
+ <Preference
+ android:icon="@drawable/ic_add"
+ android:key="@string/pk_mobile_network_list_add_more"
+ android:title="@string/mobile_network_list_add_more"
+ android:visibility="gone"
+ settings:controller="com.android.car.settings.network.AddMobileNetworkPreferenceController"/>
</PreferenceScreen>
diff --git a/res/xml/security_settings_fragment.xml b/res/xml/security_settings_fragment.xml
new file mode 100644
index 0000000..b71d532
--- /dev/null
+++ b/res/xml/security_settings_fragment.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<PreferenceScreen
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:settings="http://schemas.android.com/apk/res-auto"
+ android:title="@string/security_settings_title">
+ <Preference
+ android:icon="@drawable/ic_lock"
+ android:key="@string/pk_choose_lock_type"
+ android:title="@string/lock_settings_picker_title"
+ settings:controller="com.android.car.settings.security.SecurityEntryPreferenceController">
+ <intent
+ android:targetClass="com.android.car.settings.security.SettingsScreenLockActivity"
+ android:targetPackage="com.android.car.settings"/>
+ </Preference>
+ <Preference
+ android:fragment="com.android.car.settings.security.ChooseTrustedDeviceFragment"
+ android:icon="@drawable/ic_lock"
+ android:key="@string/pk_trusted_device"
+ android:title="@string/trusted_device"
+ settings:controller="com.android.car.settings.security.TrustedDeviceEntryPreferenceController"/>
+</PreferenceScreen>
\ No newline at end of file
diff --git a/res/xml/special_access_fragment.xml b/res/xml/special_access_fragment.xml
index ecae227..e6cadfb 100644
--- a/res/xml/special_access_fragment.xml
+++ b/res/xml/special_access_fragment.xml
@@ -40,13 +40,12 @@
android:title="@string/usage_access_title"
settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
<Preference
- android:fragment="com.android.car.settings.applications.specialaccess.DirectoryAccessFragment"
- android:key="@string/pk_directory_access_entry"
- android:title="@string/directory_access_title"
- settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
- <Preference
android:fragment="com.android.car.settings.applications.specialaccess.WifiControlFragment"
android:key="@string/pk_wifi_control_entry"
android:title="@string/wifi_control_title"
settings:controller="com.android.car.settings.common.DefaultRestrictionsPreferenceController"/>
+ <Preference
+ android:key="@string/pk_more_special_access"
+ android:title="@string/more_special_access_title"
+ settings:controller="com.android.car.settings.applications.specialaccess.MoreSpecialAccessPreferenceController"/>
</PreferenceScreen>
diff --git a/src/com/android/car/settings/accounts/AccountDetailsFragment.java b/src/com/android/car/settings/accounts/AccountDetailsFragment.java
index 8cb230e..465cde8 100644
--- a/src/com/android/car/settings/accounts/AccountDetailsFragment.java
+++ b/src/com/android/car/settings/accounts/AccountDetailsFragment.java
@@ -177,27 +177,27 @@
private static final String KEY_ACCOUNT = "account";
private static final String DIALOG_TAG = "confirmRemoveAccount";
private static final Logger LOG = new Logger(ConfirmRemoveAccountDialogFragment.class);
-
- private Fragment mTargetFragment;
private final AccountManagerCallback<Bundle> mCallback =
future -> {
// If already out of this screen, don't proceed.
- if (!mTargetFragment.isResumed()) {
+ if (!getTargetFragment().isResumed()) {
return;
}
boolean success = false;
try {
- success = future.getResult().getBoolean(AccountManager.KEY_BOOLEAN_RESULT);
+ success =
+ future.getResult().getBoolean(
+ AccountManager.KEY_BOOLEAN_RESULT);
} catch (OperationCanceledException | IOException | AuthenticatorException e) {
LOG.v("removeAccount error: " + e);
}
-
- Activity activity = mTargetFragment.getActivity();
+ final Activity activity = getTargetFragment().getActivity();
if (!success && activity != null && !activity.isFinishing()) {
- ErrorDialog.show(mTargetFragment, R.string.remove_account_error_title);
+ ErrorDialog.show(getTargetFragment(),
+ R.string.remove_account_error_title);
} else {
- mTargetFragment.getFragmentManager().popBackStack();
+ getTargetFragment().getFragmentManager().popBackStack();
}
};
private Account mAccount;
@@ -205,7 +205,8 @@
public static void show(
Fragment parent, Account account, UserHandle userHandle) {
- ConfirmRemoveAccountDialogFragment dialog = new ConfirmRemoveAccountDialogFragment();
+ final ConfirmRemoveAccountDialogFragment dialog =
+ new ConfirmRemoveAccountDialogFragment();
Bundle bundle = new Bundle();
bundle.putParcelable(KEY_ACCOUNT, account);
bundle.putParcelable(Intent.EXTRA_USER, userHandle);
@@ -220,7 +221,6 @@
final Bundle arguments = getArguments();
mAccount = arguments.getParcelable(KEY_ACCOUNT);
mUserHandle = arguments.getParcelable(Intent.EXTRA_USER);
- mTargetFragment = getTargetFragment();
}
@Override
diff --git a/src/com/android/car/settings/applications/ApplicationDetailsFragment.java b/src/com/android/car/settings/applications/ApplicationDetailsFragment.java
index e997948..5042208 100644
--- a/src/com/android/car/settings/applications/ApplicationDetailsFragment.java
+++ b/src/com/android/car/settings/applications/ApplicationDetailsFragment.java
@@ -18,7 +18,6 @@
import static android.app.Activity.RESULT_OK;
-import static com.android.car.settings.applications.ApplicationsUtils.isFallbackPackage;
import static com.android.car.settings.applications.ApplicationsUtils.isKeepEnabledPackage;
import static com.android.car.settings.applications.ApplicationsUtils.isProfileOrDeviceOwner;
@@ -311,11 +310,6 @@
return true;
}
- if (isFallbackPackage(mPackageName)) {
- LOG.d("Uninstall disabled because package is a fallback package");
- return true;
- }
-
return false;
}
diff --git a/src/com/android/car/settings/applications/ApplicationsUtils.java b/src/com/android/car/settings/applications/ApplicationsUtils.java
index 2047000..00aa190 100644
--- a/src/com/android/car/settings/applications/ApplicationsUtils.java
+++ b/src/com/android/car/settings/applications/ApplicationsUtils.java
@@ -21,12 +21,9 @@
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.UserInfo;
-import android.os.RemoteException;
-import android.os.ServiceManager;
import android.telecom.DefaultDialerManager;
import android.text.TextUtils;
import android.util.ArraySet;
-import android.webkit.IWebViewUpdateService;
import com.android.internal.telephony.SmsApplication;
@@ -77,22 +74,4 @@
}
return false;
}
-
- /**
- * Returns {@code true} if the given {@code packageName} is a fallback package as defined by
- * {@link IWebViewUpdateService}.
- */
- public static boolean isFallbackPackage(String packageName) {
- try {
- IWebViewUpdateService webviewUpdateService = IWebViewUpdateService.Stub.asInterface(
- ServiceManager.getService("webviewupdate"));
- if (webviewUpdateService != null && webviewUpdateService.isFallbackPackage(
- packageName)) {
- return true;
- }
- } catch (RemoteException e) {
- throw new RuntimeException(e);
- }
- return false;
- }
}
diff --git a/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerEntryPreferenceController.java b/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerEntryPreferenceController.java
index e923e7f..e0ed7a9 100644
--- a/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerEntryPreferenceController.java
+++ b/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerEntryPreferenceController.java
@@ -32,7 +32,6 @@
import com.android.car.settings.common.FragmentController;
import com.android.internal.app.AssistUtils;
import com.android.settingslib.applications.DefaultAppInfo;
-import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.Objects;
@@ -57,14 +56,12 @@
}
};
- private final PackageManagerWrapper mPm;
private final VoiceInputInfoProvider mVoiceInputInfoProvider;
private final AssistUtils mAssistUtils;
public DefaultVoiceInputPickerEntryPreferenceController(Context context, String preferenceKey,
FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
super(context, preferenceKey, fragmentController, uxRestrictions);
- mPm = new PackageManagerWrapper(context.getPackageManager());
mVoiceInputInfoProvider = new VoiceInputInfoProvider(context);
mAssistUtils = new AssistUtils(context);
}
@@ -95,8 +92,9 @@
protected DefaultAppInfo getCurrentDefaultAppInfo() {
VoiceInputInfoProvider.VoiceInputInfo info = mVoiceInputInfoProvider.getInfoForComponent(
VoiceInputUtils.getCurrentService(getContext()));
- return (info == null) ? null : new DefaultVoiceInputServiceInfo(getContext(), mPm,
- getCurrentProcessUserId(), info, /* enabled= */ true);
+ return (info == null) ? null : new DefaultVoiceInputServiceInfo(getContext(),
+ getContext().getPackageManager(), getCurrentProcessUserId(), info,
+ /* enabled= */ true);
}
@Nullable
diff --git a/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerPreferenceController.java b/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerPreferenceController.java
index 343c43f..0cc1eaf 100644
--- a/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerPreferenceController.java
+++ b/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerPreferenceController.java
@@ -28,7 +28,6 @@
import com.android.car.settings.common.FragmentController;
import com.android.internal.app.AssistUtils;
import com.android.settingslib.applications.DefaultAppInfo;
-import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.ArrayList;
import java.util.List;
@@ -40,7 +39,6 @@
private final AssistUtils mAssistUtils;
private final VoiceInputInfoProvider mVoiceInputInfoProvider;
- private final PackageManagerWrapper mPm;
// Current assistant component name, used to restrict available voice inputs.
private String mAssistComponentName = null;
@@ -48,7 +46,6 @@
public DefaultVoiceInputPickerPreferenceController(Context context, String preferenceKey,
FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
super(context, preferenceKey, fragmentController, uxRestrictions);
- mPm = new PackageManagerWrapper(context.getPackageManager());
mAssistUtils = new AssistUtils(context);
mVoiceInputInfoProvider = new VoiceInputInfoProvider(context);
if (Objects.equals(mAssistUtils.getAssistComponentForUser(getCurrentProcessUserId()),
@@ -68,14 +65,16 @@
mVoiceInputInfoProvider.getVoiceInteractionInfoList()) {
boolean enabled = TextUtils.equals(info.getComponentName().flattenToString(),
mAssistComponentName);
- candidates.add(new DefaultVoiceInputServiceInfo(getContext(), mPm,
- getCurrentProcessUserId(), info, enabled));
+ candidates.add(
+ new DefaultVoiceInputServiceInfo(getContext(), getContext().getPackageManager(),
+ getCurrentProcessUserId(), info, enabled));
}
for (VoiceInputInfoProvider.VoiceRecognitionInfo info :
mVoiceInputInfoProvider.getVoiceRecognitionInfoList()) {
- candidates.add(new DefaultVoiceInputServiceInfo(getContext(), mPm,
- getCurrentProcessUserId(), info, /* enabled= */ true));
+ candidates.add(
+ new DefaultVoiceInputServiceInfo(getContext(), getContext().getPackageManager(),
+ getCurrentProcessUserId(), info, /* enabled= */ true));
}
return candidates;
}
diff --git a/src/com/android/car/settings/applications/assist/DefaultVoiceInputServiceInfo.java b/src/com/android/car/settings/applications/assist/DefaultVoiceInputServiceInfo.java
index 8682ebf..369281e 100644
--- a/src/com/android/car/settings/applications/assist/DefaultVoiceInputServiceInfo.java
+++ b/src/com/android/car/settings/applications/assist/DefaultVoiceInputServiceInfo.java
@@ -18,13 +18,13 @@
import android.content.Context;
import android.content.Intent;
+import android.content.pm.PackageManager;
import androidx.annotation.Nullable;
import com.android.car.settings.applications.assist.VoiceInputInfoProvider.VoiceInteractionInfo;
import com.android.car.settings.applications.assist.VoiceInputInfoProvider.VoiceRecognitionInfo;
import com.android.settingslib.applications.DefaultAppInfo;
-import com.android.settingslib.wrapper.PackageManagerWrapper;
/** An extension of {@link DefaultAppInfo} to help represent voice input services. */
public class DefaultVoiceInputServiceInfo extends DefaultAppInfo {
@@ -38,7 +38,7 @@
* the Voice Input Service.
* @param enabled determines whether the service should be selectable or not.
*/
- public DefaultVoiceInputServiceInfo(Context context, PackageManagerWrapper pm, int userId,
+ public DefaultVoiceInputServiceInfo(Context context, PackageManager pm, int userId,
VoiceInputInfoProvider.VoiceInputInfo info, boolean enabled) {
super(context, pm, userId, info.getComponentName(), /* summary= */ null, enabled);
mInfo = info;
diff --git a/src/com/android/car/settings/applications/assist/ManageAssistActivity.java b/src/com/android/car/settings/applications/assist/ManageAssistActivity.java
new file mode 100644
index 0000000..3ac4fa5
--- /dev/null
+++ b/src/com/android/car/settings/applications/assist/ManageAssistActivity.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.applications.assist;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.BaseCarSettingsActivity;
+
+/**
+ * Starts {@link ManageAssistFragment} in a separate activity to help with the back navigation
+ * flow. This setting differs from the other settings in that the user arrives here from the
+ * PermissionController rather than from within the Settings app itself.
+ */
+public class ManageAssistActivity extends BaseCarSettingsActivity {
+
+ @Nullable
+ @Override
+ protected Fragment getInitialFragment() {
+ return new ManageAssistFragment();
+ }
+}
diff --git a/src/com/android/car/settings/applications/assist/ManageAssistEntryPreferenceController.java b/src/com/android/car/settings/applications/assist/ManageAssistEntryPreferenceController.java
index 36a8704..b817e81 100644
--- a/src/com/android/car/settings/applications/assist/ManageAssistEntryPreferenceController.java
+++ b/src/com/android/car/settings/applications/assist/ManageAssistEntryPreferenceController.java
@@ -27,7 +27,6 @@
import com.android.car.settings.common.FragmentController;
import com.android.internal.app.AssistUtils;
import com.android.settingslib.applications.DefaultAppInfo;
-import com.android.settingslib.wrapper.PackageManagerWrapper;
/**
* Business logic to show the currently selected default assist.
@@ -36,13 +35,11 @@
DefaultAppEntryBasePreferenceController<Preference> {
private final AssistUtils mAssistUtils;
- private final PackageManagerWrapper mPm;
public ManageAssistEntryPreferenceController(Context context, String preferenceKey,
FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
super(context, preferenceKey, fragmentController, uxRestrictions);
mAssistUtils = new AssistUtils(context);
- mPm = new PackageManagerWrapper(context.getPackageManager());
}
@Override
@@ -56,6 +53,7 @@
if (cn == null) {
return null;
}
- return new DefaultAppInfo(getContext(), mPm, getCurrentProcessUserId(), cn);
+ return new DefaultAppInfo(getContext(), getContext().getPackageManager(),
+ getCurrentProcessUserId(), cn);
}
}
diff --git a/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerEntryPreferenceController.java b/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerEntryPreferenceController.java
index 374afef..a754297 100644
--- a/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerEntryPreferenceController.java
+++ b/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerEntryPreferenceController.java
@@ -16,6 +16,7 @@
package com.android.car.settings.applications.defaultapps;
+import android.app.role.RoleManager;
import android.car.drivingstate.CarUxRestrictions;
import android.content.ComponentName;
import android.content.Context;
@@ -28,10 +29,10 @@
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
+import com.android.car.settings.common.ButtonPreference;
import com.android.car.settings.common.FragmentController;
import com.android.internal.app.AssistUtils;
import com.android.settingslib.applications.DefaultAppInfo;
-import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.List;
@@ -47,13 +48,11 @@
VoiceInteractionService.SERVICE_INTERFACE);
private final AssistUtils mAssistUtils;
- private final PackageManagerWrapper mPm;
public DefaultAssistantPickerEntryPreferenceController(Context context, String preferenceKey,
FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
super(context, preferenceKey, fragmentController, uxRestrictions);
mAssistUtils = new AssistUtils(context);
- mPm = new PackageManagerWrapper(context.getPackageManager());
}
@Nullable
@@ -63,7 +62,20 @@
if (cn == null) {
return null;
}
- return new DefaultAppInfo(getContext(), mPm, getCurrentProcessUserId(), cn);
+ return new DefaultAppInfo(getContext(), getContext().getPackageManager(),
+ getCurrentProcessUserId(), cn);
+ }
+
+ @Override
+ protected boolean handlePreferenceClicked(ButtonPreference preference) {
+ String packageName = getContext().getPackageManager().getPermissionControllerPackageName();
+ if (packageName != null) {
+ Intent intent = new Intent(Intent.ACTION_MANAGE_DEFAULT_APP)
+ .setPackage(packageName)
+ .putExtra(Intent.EXTRA_ROLE_NAME, RoleManager.ROLE_ASSISTANT);
+ getContext().startActivity(intent);
+ }
+ return true;
}
@Nullable
@@ -75,7 +87,7 @@
}
Intent probe = ASSISTANT_SERVICE.setPackage(cn.getPackageName());
- PackageManager pm = mPm.getPackageManager();
+ PackageManager pm = getContext().getPackageManager();
List<ResolveInfo> services = pm.queryIntentServices(probe, PackageManager.GET_META_DATA);
if (services == null || services.isEmpty()) {
return null;
diff --git a/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerPreferenceController.java b/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerPreferenceController.java
deleted file mode 100644
index be3ebed..0000000
--- a/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerPreferenceController.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications.defaultapps;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.provider.Settings;
-import android.service.voice.VoiceInteractionService;
-import android.service.voice.VoiceInteractionServiceInfo;
-import android.speech.RecognitionService;
-import android.text.TextUtils;
-
-import androidx.annotation.VisibleForTesting;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.Logger;
-import com.android.internal.app.AssistUtils;
-import com.android.settingslib.applications.DefaultAppInfo;
-import com.android.settingslib.wrapper.PackageManagerWrapper;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/** Business logic for displaying and choosing the default assistant. */
-public class DefaultAssistantPickerPreferenceController extends
- DefaultAppsPickerBasePreferenceController {
-
- private static final Logger LOG = new Logger(DefaultAssistantPickerPreferenceController.class);
- @VisibleForTesting
- static final Intent ASSIST_SERVICE_PROBE = new Intent(
- VoiceInteractionService.SERVICE_INTERFACE);
- @VisibleForTesting
- static final Intent ASSIST_ACTIVITY_PROBE = new Intent(Intent.ACTION_ASSIST);
-
- private final AssistUtils mAssistUtils;
- private final Map<String, Info> mAvailableAssistants = new LinkedHashMap<>();
- private final PackageManagerWrapper mPm;
-
- public DefaultAssistantPickerPreferenceController(Context context, String preferenceKey,
- FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
- super(context, preferenceKey, fragmentController, uxRestrictions);
- mAssistUtils = new AssistUtils(context);
- mPm = new PackageManagerWrapper(getContext().getPackageManager());
- }
-
- @Override
- protected List<DefaultAppInfo> getCandidates() {
- mAvailableAssistants.clear();
-
- List<Info> assistants = new ArrayList<>();
- PackageManager pm = getContext().getPackageManager();
- addAssistServices(pm, assistants);
- addAssistActivities(pm, assistants);
-
- // Return things to show.
- Set<String> packages = new HashSet<>();
- List<DefaultAppInfo> candidates = new ArrayList<>();
- for (Info info : assistants) {
- if (packages.contains(info.getComponentName().getPackageName())) {
- continue;
- }
- packages.add(info.getComponentName().getPackageName());
- candidates.add(new DefaultAppInfo(getContext(), mPm, getCurrentProcessUserId(),
- info.getComponentName()));
- mAvailableAssistants.put(info.getComponentName().getPackageName(), info);
- }
-
- return candidates;
- }
-
- @Override
- protected CharSequence getConfirmationMessage(DefaultAppInfo info) {
- if (info == null) {
- return null;
- }
- return getContext().getString(R.string.assistant_security_warning);
- }
-
- @Override
- protected String getCurrentDefaultKey() {
- ComponentName cn = getCurrentAssistant();
- if (cn != null) {
- return new DefaultAppInfo(getContext(), mPm, getCurrentProcessUserId(), cn).getKey();
- }
- return DefaultAppsPickerBasePreferenceController.NONE_PREFERENCE_KEY;
- }
-
- @Override
- protected void setCurrentDefault(String key) {
- if (TextUtils.isEmpty(key)) {
- setAssistNone();
- return;
- }
-
- ComponentName cn = ComponentName.unflattenFromString(key);
- Info info = mAvailableAssistants.getOrDefault(cn.getPackageName(), null);
- if (info == null) {
- setAssistNone();
- return;
- }
-
- if (info.isVoiceInteractionService()) {
- setAssistService(info);
- } else {
- setAssistActivity(info);
- }
- }
-
- private ComponentName getCurrentAssistant() {
- return mAssistUtils.getAssistComponentForUser(getCurrentProcessUserId());
- }
-
- private void addAssistServices(PackageManager pm, List<Info> availableAssistants) {
- List<ResolveInfo> services = pm.queryIntentServices(ASSIST_SERVICE_PROBE,
- PackageManager.GET_META_DATA);
- for (ResolveInfo resolveInfo : services) {
- VoiceInteractionServiceInfo voiceInteractionServiceInfo =
- new VoiceInteractionServiceInfo(pm, resolveInfo.serviceInfo);
- if (!voiceInteractionServiceInfo.getSupportsAssist()) {
- continue;
- }
-
- Info info = new Info(new ComponentName(resolveInfo.serviceInfo.packageName,
- resolveInfo.serviceInfo.name), voiceInteractionServiceInfo);
- availableAssistants.add(info);
- }
- }
-
- private void addAssistActivities(PackageManager pm, List<Info> availableAssistants) {
- List<ResolveInfo> activities = pm.queryIntentActivities(ASSIST_ACTIVITY_PROBE,
- PackageManager.MATCH_DEFAULT_ONLY);
- for (ResolveInfo resolveInfo : activities) {
- Info info = new Info(new ComponentName(resolveInfo.activityInfo.packageName,
- resolveInfo.activityInfo.name));
- availableAssistants.add(info);
- }
- }
-
- private void setAssistNone() {
- Settings.Secure.putString(getContext().getContentResolver(),
- Settings.Secure.ASSISTANT, "");
- Settings.Secure.putString(getContext().getContentResolver(),
- Settings.Secure.VOICE_INTERACTION_SERVICE, "");
- Settings.Secure.putString(getContext().getContentResolver(),
- Settings.Secure.VOICE_RECOGNITION_SERVICE, getDefaultRecognizer());
- }
-
- private void setAssistService(Info serviceInfo) {
- String serviceComponentName = serviceInfo.getComponentName().flattenToShortString();
- String serviceRecognizerName = new ComponentName(
- serviceInfo.getComponentName().getPackageName(),
- serviceInfo.getVoiceInteractionServiceInfo().getRecognitionService())
- .flattenToShortString();
-
- Settings.Secure.putString(getContext().getContentResolver(),
- Settings.Secure.ASSISTANT, serviceComponentName);
- Settings.Secure.putString(getContext().getContentResolver(),
- Settings.Secure.VOICE_INTERACTION_SERVICE, serviceComponentName);
- Settings.Secure.putString(getContext().getContentResolver(),
- Settings.Secure.VOICE_RECOGNITION_SERVICE, serviceRecognizerName);
- }
-
- private void setAssistActivity(Info activityInfo) {
- Settings.Secure.putString(getContext().getContentResolver(),
- Settings.Secure.ASSISTANT, activityInfo.getComponentName().flattenToShortString());
- Settings.Secure.putString(getContext().getContentResolver(),
- Settings.Secure.VOICE_INTERACTION_SERVICE, "");
- Settings.Secure.putString(getContext().getContentResolver(),
- Settings.Secure.VOICE_RECOGNITION_SERVICE, getDefaultRecognizer());
- }
-
- private String getDefaultRecognizer() {
- ResolveInfo resolveInfo = getContext().getPackageManager().resolveService(
- new Intent(RecognitionService.SERVICE_INTERFACE),
- PackageManager.GET_META_DATA);
- if (resolveInfo == null || resolveInfo.serviceInfo == null) {
- LOG.w("Unable to resolve default voice recognition service.");
- return "";
- }
-
- return new ComponentName(resolveInfo.serviceInfo.packageName,
- resolveInfo.serviceInfo.name).flattenToShortString();
- }
-
- private static class Info {
- private final ComponentName mComponentName;
- private final VoiceInteractionServiceInfo mVoiceInteractionServiceInfo;
-
- Info(ComponentName component) {
- mComponentName = component;
- mVoiceInteractionServiceInfo = null;
- }
-
- Info(ComponentName component, VoiceInteractionServiceInfo voiceInteractionServiceInfo) {
- mComponentName = component;
- mVoiceInteractionServiceInfo = voiceInteractionServiceInfo;
- }
-
- /** Returns {@code true} if this object represents a voice interaction service. */
- public boolean isVoiceInteractionService() {
- return mVoiceInteractionServiceInfo != null;
- }
-
- /** Returns the component name. */
- public ComponentName getComponentName() {
- return mComponentName;
- }
-
- /** Returns the voice interaction service info. */
- public VoiceInteractionServiceInfo getVoiceInteractionServiceInfo() {
- return mVoiceInteractionServiceInfo;
- }
- }
-}
diff --git a/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerEntryPreferenceController.java b/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerEntryPreferenceController.java
index b070466..91652a1 100644
--- a/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerEntryPreferenceController.java
+++ b/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerEntryPreferenceController.java
@@ -34,7 +34,6 @@
import com.android.car.settings.common.FragmentController;
import com.android.car.settings.common.Logger;
import com.android.settingslib.applications.DefaultAppInfo;
-import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.List;
@@ -45,13 +44,11 @@
private static final Logger LOG = new Logger(
DefaultAutofillPickerEntryPreferenceController.class);
private final AutofillManager mAutofillManager;
- private final PackageManagerWrapper mPm;
public DefaultAutofillPickerEntryPreferenceController(Context context, String preferenceKey,
FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
super(context, preferenceKey, fragmentController, uxRestrictions);
mAutofillManager = context.getSystemService(AutofillManager.class);
- mPm = new PackageManagerWrapper(context.getPackageManager());
}
@Override
@@ -68,8 +65,9 @@
String flattenComponent = Settings.Secure.getString(getContext().getContentResolver(),
Settings.Secure.AUTOFILL_SERVICE);
if (!TextUtils.isEmpty(flattenComponent)) {
- DefaultAppInfo appInfo = new DefaultAppInfo(getContext(), mPm,
- getCurrentProcessUserId(), ComponentName.unflattenFromString(flattenComponent));
+ DefaultAppInfo appInfo = new DefaultAppInfo(getContext(),
+ getContext().getPackageManager(), getCurrentProcessUserId(),
+ ComponentName.unflattenFromString(flattenComponent));
return appInfo;
}
return null;
diff --git a/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerPreferenceController.java b/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerPreferenceController.java
index 0382352..8dcc5d9 100644
--- a/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerPreferenceController.java
+++ b/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerPreferenceController.java
@@ -33,7 +33,6 @@
import com.android.car.settings.R;
import com.android.car.settings.common.FragmentController;
import com.android.settingslib.applications.DefaultAppInfo;
-import com.android.settingslib.wrapper.PackageManagerWrapper;
import java.util.ArrayList;
import java.util.List;
@@ -42,24 +41,22 @@
public class DefaultAutofillPickerPreferenceController extends
DefaultAppsPickerBasePreferenceController {
- private final PackageManagerWrapper mPm;
-
public DefaultAutofillPickerPreferenceController(Context context, String preferenceKey,
FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
super(context, preferenceKey, fragmentController, uxRestrictions);
- mPm = new PackageManagerWrapper(context.getPackageManager());
}
@NonNull
@Override
protected List<DefaultAppInfo> getCandidates() {
List<DefaultAppInfo> candidates = new ArrayList<>();
- List<ResolveInfo> resolveInfos = mPm.queryIntentServices(
+ List<ResolveInfo> resolveInfos = getContext().getPackageManager().queryIntentServices(
new Intent(AutofillService.SERVICE_INTERFACE), PackageManager.GET_META_DATA);
for (ResolveInfo info : resolveInfos) {
String permission = info.serviceInfo.permission;
if (Manifest.permission.BIND_AUTOFILL_SERVICE.equals(permission)) {
- candidates.add(new DefaultAppInfo(getContext(), mPm, getCurrentProcessUserId(),
+ candidates.add(new DefaultAppInfo(getContext(), getContext().getPackageManager(),
+ getCurrentProcessUserId(),
new ComponentName(info.serviceInfo.packageName, info.serviceInfo.name)));
}
}
diff --git a/src/com/android/car/settings/applications/managedomainurls/ManageDomainUrlsActivity.java b/src/com/android/car/settings/applications/managedomainurls/ManageDomainUrlsActivity.java
new file mode 100644
index 0000000..6920892
--- /dev/null
+++ b/src/com/android/car/settings/applications/managedomainurls/ManageDomainUrlsActivity.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.applications.managedomainurls;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.BaseCarSettingsActivity;
+
+/**
+ * Starts {@link ManageDomainUrlsFragment} in a separate activity to help with the back navigation
+ * flow. This setting differs from the other settings in that the user arrives here from the
+ * PermissionController rather than from within the Settings app itself.
+ */
+public class ManageDomainUrlsActivity extends BaseCarSettingsActivity {
+
+ @Nullable
+ @Override
+ protected Fragment getInitialFragment() {
+ return new ManageDomainUrlsFragment();
+ }
+}
diff --git a/src/com/android/car/settings/applications/specialaccess/DirectoryAccessDetailsFragment.java b/src/com/android/car/settings/applications/specialaccess/DirectoryAccessDetailsFragment.java
deleted file mode 100644
index ac9d1d8..0000000
--- a/src/com/android/car/settings/applications/specialaccess/DirectoryAccessDetailsFragment.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications.specialaccess;
-
-import android.car.userlib.CarUserManagerHelper;
-import android.content.Context;
-import android.os.Bundle;
-
-import androidx.annotation.XmlRes;
-
-import com.android.car.settings.R;
-import com.android.car.settings.applications.ApplicationPreferenceController;
-import com.android.car.settings.common.SettingsFragment;
-import com.android.settingslib.applications.ApplicationsState;
-
-import java.util.ArrayList;
-
-/** Displays directory access permissions for a specific package. */
-public class DirectoryAccessDetailsFragment extends SettingsFragment {
-
- public static final String ARG_PACKAGE_NAME = "package";
-
- private CarUserManagerHelper mCarUserManagerHelper;
- private String mPackageName;
- private ApplicationsState mAppState;
- private ApplicationsState.Session mSession;
- private ApplicationsState.AppEntry mAppEntry;
-
- /** Creates an instance of this fragment, passing {@code packageName} as an argument. */
- public static DirectoryAccessDetailsFragment getInstance(String packageName) {
- DirectoryAccessDetailsFragment directoryAccessDetailsFragment =
- new DirectoryAccessDetailsFragment();
- Bundle bundle = new Bundle();
- bundle.putString(ARG_PACKAGE_NAME, packageName);
- directoryAccessDetailsFragment.setArguments(bundle);
- return directoryAccessDetailsFragment;
- }
-
- @Override
- @XmlRes
- protected int getPreferenceScreenResId() {
- return R.xml.directory_access_details_fragment;
- }
-
- @Override
- public void onAttach(Context context) {
- super.onAttach(context);
- mCarUserManagerHelper = new CarUserManagerHelper(context);
-
- mPackageName = getArguments().getString(ARG_PACKAGE_NAME);
-
- mAppState = ApplicationsState.getInstance(requireActivity().getApplication());
- mSession = mAppState.newSession(mApplicationStateCallbacks, getLifecycle());
-
- retrieveAppEntry();
-
- use(ApplicationPreferenceController.class,
- R.string.pk_directory_access_details_app).setAppEntry(mAppEntry).setAppState(
- mAppState);
- use(DirectoryAccessDetailsPreferenceController.class,
- R.string.pk_directory_access_details).setPackage(mPackageName);
- }
-
- @Override
- public void onStart() {
- super.onStart();
- // Resume the session earlier than the lifecycle so that cached information is updated
- // even if settings is not resumed (for example in multi-display).
- mSession.onResume();
- refresh();
- }
-
- @Override
- public void onStop() {
- super.onStop();
- // Since we resume early in onStart, make sure we clean up even if we don't receive onPause.
- mSession.onPause();
- }
-
- private void refresh() {
- retrieveAppEntry();
- if (mAppEntry == null) {
- goBack();
- }
- }
-
- private void retrieveAppEntry() {
- mAppEntry = mAppState.getEntry(mPackageName,
- mCarUserManagerHelper.getCurrentProcessUserId());
- }
-
- private final ApplicationsState.Callbacks mApplicationStateCallbacks =
- new ApplicationsState.Callbacks() {
- @Override
- public void onRunningStateChanged(boolean running) {
- }
-
- @Override
- public void onPackageListChanged() {
- refresh();
- }
-
- @Override
- public void onRebuildComplete(ArrayList<ApplicationsState.AppEntry> apps) {
- }
-
- @Override
- public void onPackageIconChanged() {
- }
-
- @Override
- public void onPackageSizeChanged(String packageName) {
- }
-
- @Override
- public void onAllSizesComputed() {
- }
-
- @Override
- public void onLauncherInfoChanged() {
- }
-
- @Override
- public void onLoadEntriesCompleted() {
- }
- };
-}
diff --git a/src/com/android/car/settings/applications/specialaccess/DirectoryAccessDetailsPreferenceController.java b/src/com/android/car/settings/applications/specialaccess/DirectoryAccessDetailsPreferenceController.java
deleted file mode 100644
index e565e91..0000000
--- a/src/com/android/car/settings/applications/specialaccess/DirectoryAccessDetailsPreferenceController.java
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications.specialaccess;
-
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.AUTHORITY;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.COL_GRANTED;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.TABLE_PERMISSIONS;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.TABLE_PERMISSIONS_COLUMNS;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.TABLE_PERMISSIONS_COL_DIRECTORY;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.TABLE_PERMISSIONS_COL_GRANTED;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.TABLE_PERMISSIONS_COL_PACKAGE;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.TABLE_PERMISSIONS_COL_VOLUME_UUID;
-
-import android.annotation.Nullable;
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.storage.StorageManager;
-import android.os.storage.VolumeInfo;
-import android.util.ArrayMap;
-import android.util.Pair;
-
-import androidx.preference.PreferenceGroup;
-import androidx.preference.SwitchPreference;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.Logger;
-import com.android.car.settings.common.PreferenceController;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Detailed settings for an app's directory access permissions (A.K.A Scoped Directory Access).
- *
- * <p>It shows the directories for which the user denied access with the "Do not ask again" flag.
- * The user can use the preference toggles to grant access again.
- *
- * <p>This controller dynamically lists all such permissions starting with one preference per
- * directory in the primary storage then adding additional preferences for external volumes (one
- * for the whole volume and one for each individual directory). Granting access to a whole volume
- * will hide individual directory permissions.
- */
-public class DirectoryAccessDetailsPreferenceController extends
- PreferenceController<PreferenceGroup> {
-
- private static final Logger LOG = new Logger(DirectoryAccessDetailsPreferenceController.class);
-
- private String mPackageName;
-
- public DirectoryAccessDetailsPreferenceController(Context context, String preferenceKey,
- FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
- super(context, preferenceKey, fragmentController, uxRestrictions);
- }
-
- @Override
- protected Class<PreferenceGroup> getPreferenceType() {
- return PreferenceGroup.class;
- }
-
- /**
- * Sets the package for which to display directory access. This should be called right after the
- * controller is instantiated.
- */
- public void setPackage(String packageName) {
- mPackageName = packageName;
- }
-
- @Override
- protected void checkInitialized() {
- if (mPackageName == null) {
- throw new IllegalStateException("Must specify package for directory access details");
- }
- }
-
- @Override
- protected void updateState(PreferenceGroup preferenceGroup) {
- preferenceGroup.removeAll();
- preferenceGroup.setOrderingAsAdded(false);
-
- Map<String, ExternalVolume> externalVolumes = new ArrayMap<>();
- Uri providerUri = new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT).authority(
- AUTHORITY).appendPath(TABLE_PERMISSIONS).appendPath("*").build();
- // Query provider for entries.
- try (Cursor cursor = getContext().getContentResolver().query(providerUri,
- TABLE_PERMISSIONS_COLUMNS, /* selection= */ null,
- new String[]{mPackageName}, /* sortOrder= */ null)) {
- if (cursor == null) {
- LOG.w("Didn't get cursor for " + mPackageName);
- return;
- }
- int count = cursor.getCount();
- if (count == 0) {
- // This setting screen should not be reached if there was no permission, so just
- // ignore it.
- LOG.w("No permissions for " + mPackageName);
- return;
- }
-
- while (cursor.moveToNext()) {
- String pkg = cursor.getString(TABLE_PERMISSIONS_COL_PACKAGE);
- String uuid = cursor.getString(TABLE_PERMISSIONS_COL_VOLUME_UUID);
- String dir = cursor.getString(TABLE_PERMISSIONS_COL_DIRECTORY);
- boolean granted = cursor.getInt(TABLE_PERMISSIONS_COL_GRANTED) == 1;
- LOG.v("Pkg:" + pkg + " uuid: " + uuid + " dir: " + dir + " granted:" + granted);
-
- if (!mPackageName.equals(pkg)) {
- // Sanity check, shouldn't happen.
- LOG.w("Ignoring " + uuid + "/" + dir + " due to package mismatch: "
- + "expected " + mPackageName + ", got " + pkg);
- continue;
- }
-
- if (uuid == null) {
- if (dir == null) {
- // Sanity check, shouldn't happen.
- LOG.wtf("Ignoring permission on primary storage root");
- } else {
- // Primary storage entry: add right away
- preferenceGroup.addPreference(
- createPreference(dir, providerUri, /* uuid= */ null, dir,
- granted));
- }
- } else {
- // External volume entry: save it for later.
- ExternalVolume externalVolume = externalVolumes.get(uuid);
- if (externalVolume == null) {
- externalVolume = new ExternalVolume(uuid);
- externalVolumes.put(uuid, externalVolume);
- }
- if (dir == null) {
- // Whole volume.
- externalVolume.mIsGranted = granted;
- } else {
- // Directory only.
- externalVolume.mChildren.add(new Pair<>(dir, granted));
- }
- }
- }
- }
-
- LOG.v("external volumes: " + externalVolumes);
-
- if (externalVolumes.isEmpty()) {
- // We're done!
- return;
- }
-
- // Add entries from external volumes
-
- // Query StorageManager to get the user-friendly volume names.
- StorageManager sm = getContext().getSystemService(StorageManager.class);
- List<VolumeInfo> volumes = sm.getVolumes();
- if (volumes.isEmpty()) {
- LOG.w("StorageManager returned no secondary volumes");
- return;
- }
- Map<String, String> volumeNames = new HashMap<>(volumes.size());
- for (VolumeInfo volume : volumes) {
- String uuid = volume.getFsUuid();
- if (uuid == null) {
- continue; // Primary storage, only directory name used.
- }
- String name = sm.getBestVolumeDescription(volume);
- if (name == null) {
- LOG.w("No description for " + volume + "; using uuid instead: " + uuid);
- name = uuid;
- }
- volumeNames.put(uuid, name);
- }
- LOG.v("UUID -> name mapping: " + volumeNames);
-
- for (ExternalVolume volume : externalVolumes.values()) {
- String volumeName = volumeNames.get(volume.mUuid);
- if (volumeName == null) {
- LOG.w("Ignoring entry for invalid UUID: " + volume.mUuid);
- continue;
- }
- // First add the preference for the whole volume...
- preferenceGroup.addPreference(createPreference(volumeName, providerUri, volume.mUuid,
- /* dir= */ null, volume.mIsGranted));
-
- // ... then the child preferences for directories.
- if (!volume.mIsGranted) {
- volume.mChildren.forEach(pair -> {
- String dir = pair.first;
- boolean isGranted = pair.second;
- String name = getContext().getResources()
- .getString(R.string.directory_on_volume, volumeName, dir);
- SwitchPreference childPref =
- createPreference(name, providerUri, volume.mUuid, dir, isGranted);
- preferenceGroup.addPreference(childPref);
- });
- }
- }
- }
-
- private SwitchPreference createPreference(String title, Uri providerUri, String uuid,
- String dir, boolean isGranted) {
- SwitchPreference pref = new SwitchPreference(getContext());
- pref.setKey(String.format("%s:%s", uuid, dir));
- pref.setTitle(title);
- pref.setChecked(isGranted);
- pref.setPersistent(false);
- pref.setOnPreferenceChangeListener((unused, value) -> {
- boolean newGrantedState = (Boolean) value;
- setGranted(newGrantedState, providerUri, uuid, dir);
- refreshUi();
- return true;
- });
- return pref;
- }
-
- private void setGranted(boolean isGranted, Uri providerUri,
- @Nullable String uuid, @Nullable String directory) {
- LOG.d("Asking " + providerUri + " to update " + uuid + "/" + directory + " to "
- + isGranted);
- ContentValues values = new ContentValues(1);
- values.put(COL_GRANTED, isGranted);
- int updated = getContext().getContentResolver().update(providerUri, values,
- /* where= */ null, new String[]{mPackageName, uuid, directory});
- LOG.d("Updated " + updated + " entries for " + uuid + "/" + directory);
- }
-
- private static class ExternalVolume {
-
- String mUuid;
- /** Key: directory, Value: isGranted */
- List<Pair<String, Boolean>> mChildren = new ArrayList<>();
- boolean mIsGranted;
-
- ExternalVolume(String uuid) {
- mUuid = uuid;
- }
-
- @Override
- public String toString() {
- return "ExternalVolume: [uuid=" + mUuid + ", granted=" + mIsGranted + ", children="
- + mChildren + "]";
- }
- }
-}
diff --git a/src/com/android/car/settings/applications/specialaccess/DirectoryAccessFragment.java b/src/com/android/car/settings/applications/specialaccess/DirectoryAccessFragment.java
deleted file mode 100644
index cb6394b..0000000
--- a/src/com/android/car/settings/applications/specialaccess/DirectoryAccessFragment.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications.specialaccess;
-
-import androidx.annotation.XmlRes;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.SettingsFragment;
-
-/** Displays the list of applications which have been denied external storage directory access. */
-public class DirectoryAccessFragment extends SettingsFragment {
-
- @Override
- @XmlRes
- protected int getPreferenceScreenResId() {
- return R.xml.directory_access_fragment;
- }
-}
diff --git a/src/com/android/car/settings/applications/specialaccess/DirectoryAccessPreferenceController.java b/src/com/android/car/settings/applications/specialaccess/DirectoryAccessPreferenceController.java
deleted file mode 100644
index 60c9a22..0000000
--- a/src/com/android/car/settings/applications/specialaccess/DirectoryAccessPreferenceController.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications.specialaccess;
-
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.AUTHORITY;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.TABLE_PACKAGES;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.TABLE_PACKAGES_COLUMNS;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.TABLE_PACKAGES_COL_PACKAGE;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.database.Cursor;
-import android.net.Uri;
-import android.util.ArraySet;
-
-import androidx.annotation.VisibleForTesting;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.Logger;
-import com.android.car.settings.common.PreferenceController;
-import com.android.settingslib.applications.ApplicationsState.AppEntry;
-import com.android.settingslib.applications.ApplicationsState.AppFilter;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * Displays a list of preferences for apps that have directory access permissions set. Selecting an
- * app launches a detailed view for controlling permissions at the directory level.
- */
-public class DirectoryAccessPreferenceController extends PreferenceController<PreferenceGroup> {
-
- private static final Logger LOG = new Logger(DirectoryAccessPreferenceController.class);
-
- private static final AppFilter FILTER_APP_HAS_DIRECTORY_ACCESS = new AppFilter() {
-
- private Set<String> mPackages;
-
- @Override
- public void init() {
- throw new UnsupportedOperationException("Need to call constructor that takes context");
- }
-
- @Override
- public void init(Context context) {
- mPackages = null;
- Uri providerUri = new Uri.Builder()
- .scheme(ContentResolver.SCHEME_CONTENT)
- .authority(AUTHORITY)
- .appendPath(TABLE_PACKAGES)
- .appendPath("*")
- .build();
- try (Cursor cursor = context.getContentResolver().query(providerUri,
- TABLE_PACKAGES_COLUMNS, /* queryArgs= */ null, /* cancellationSignal= */
- null)) {
- if (cursor == null) {
- LOG.w("Didn't get cursor for " + providerUri);
- return;
- }
- int count = cursor.getCount();
- if (count == 0) {
- LOG.d("No packages anymore (was " + mPackages + ")");
- return;
- }
- mPackages = new ArraySet<>(count);
- while (cursor.moveToNext()) {
- mPackages.add(cursor.getString(TABLE_PACKAGES_COL_PACKAGE));
- }
- LOG.d("init(): " + mPackages);
- }
- }
-
-
- @Override
- public boolean filterApp(AppEntry info) {
- return mPackages != null && mPackages.contains(info.info.packageName);
- }
- };
-
- private final AppEntryListManager.Callback mCallback = new AppEntryListManager.Callback() {
- @Override
- public void onAppEntryListChanged(List<AppEntry> entries) {
- mEntries = entries;
- refreshUi();
- }
- };
-
- @VisibleForTesting
- AppEntryListManager mAppEntryListManager;
- private List<AppEntry> mEntries;
-
- public DirectoryAccessPreferenceController(Context context, String preferenceKey,
- FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
- super(context, preferenceKey, fragmentController, uxRestrictions);
- mAppEntryListManager = new AppEntryListManager(context);
- }
-
- @Override
- protected Class<PreferenceGroup> getPreferenceType() {
- return PreferenceGroup.class;
- }
-
- @Override
- protected void onCreateInternal() {
- mAppEntryListManager.init(/* extraInfoBridge= */ null,
- () -> FILTER_APP_HAS_DIRECTORY_ACCESS, mCallback);
- }
-
- @Override
- protected void onStartInternal() {
- mAppEntryListManager.start();
- }
-
- @Override
- protected void onStopInternal() {
- mAppEntryListManager.stop();
- }
-
- @Override
- protected void onDestroyInternal() {
- mAppEntryListManager.destroy();
- }
-
- @Override
- protected void updateState(PreferenceGroup preference) {
- if (mEntries == null) {
- // Still loading.
- return;
- }
- preference.removeAll();
- for (AppEntry entry : mEntries) {
- Preference appPreference = new Preference(getContext());
- String key = entry.info.packageName + "|" + entry.info.uid;
- appPreference.setKey(key);
- appPreference.setTitle(entry.label);
- appPreference.setIcon(entry.icon);
- appPreference.setOnPreferenceClickListener(clickedPref -> {
- getFragmentController().launchFragment(
- DirectoryAccessDetailsFragment.getInstance(entry.info.packageName));
- return true;
- });
- preference.addPreference(appPreference);
- }
- }
-}
diff --git a/src/com/android/car/settings/applications/specialaccess/MoreSpecialAccessPreferenceController.java b/src/com/android/car/settings/applications/specialaccess/MoreSpecialAccessPreferenceController.java
new file mode 100644
index 0000000..05f2a80
--- /dev/null
+++ b/src/com/android/car/settings/applications/specialaccess/MoreSpecialAccessPreferenceController.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.applications.specialaccess;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+
+import androidx.annotation.Nullable;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Launches into additional special access settings if they are supported by the permission
+ * controller package.
+ */
+public class MoreSpecialAccessPreferenceController extends PreferenceController<Preference> {
+
+ @Nullable
+ private final Intent mIntent;
+
+ public MoreSpecialAccessPreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
+ PackageManager packageManager = getContext().getPackageManager();
+ String packageName = packageManager.getPermissionControllerPackageName();
+ if (packageName != null) {
+ Intent intent = new Intent(Intent.ACTION_MANAGE_SPECIAL_APP_ACCESSES).setPackage(
+ packageName);
+ ResolveInfo resolveInfo = packageManager.resolveActivity(intent,
+ PackageManager.MATCH_DEFAULT_ONLY);
+ mIntent = (resolveInfo != null) ? intent : null;
+ } else {
+ mIntent = null;
+ }
+ }
+
+ @Override
+ protected Class<Preference> getPreferenceType() {
+ return Preference.class;
+ }
+
+ @Override
+ protected int getAvailabilityStatus() {
+ return (mIntent != null) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+ }
+
+ @Override
+ protected boolean handlePreferenceClicked(Preference preference) {
+ if (mIntent != null) {
+ getContext().startActivity(mIntent);
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceController.java
index afb7db5..3d09b37 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceController.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceController.java
@@ -53,12 +53,9 @@
protected void updateState(Preference preference) {
CachedBluetoothDevice cachedDevice = getCachedDevice();
Pair<Drawable, String> pair =
- com.android.settingslib.bluetooth.Utils.getBtClassDrawableWithDescription(
+ com.android.settingslib.bluetooth.BluetoothUtils.getBtClassDrawableWithDescription(
getContext(),
- cachedDevice,
- getContext().getResources().getFraction(
- R.fraction.bt_battery_scale_fraction, /* base= */1, /* pbase= */
- 1));
+ cachedDevice);
StringJoiner summaryJoiner = new StringJoiner(System.lineSeparator());
summaryJoiner.setEmptyValue("");
@@ -68,8 +65,7 @@
}
// If hearing aids are connected, two battery statuses should be shown.
String pairDeviceSummary =
- getBluetoothManager().getCachedDeviceManager().getHearingAidPairDeviceSummary(
- cachedDevice);
+ getBluetoothManager().getCachedDeviceManager().getSubDeviceSummary(cachedDevice);
if (!TextUtils.isEmpty(pairDeviceSummary)) {
summaryJoiner.add(pairDeviceSummary);
}
diff --git a/src/com/android/car/settings/bluetooth/BluetoothDevicePreference.java b/src/com/android/car/settings/bluetooth/BluetoothDevicePreference.java
index 66274c9..dfba4c6 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothDevicePreference.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothDevicePreference.java
@@ -78,7 +78,7 @@
setTitle(mCachedDevice.getName());
setSummary(mCachedDevice.getCarConnectionSummary());
- final Pair<Drawable, String> pair = com.android.settingslib.bluetooth.Utils
+ final Pair<Drawable, String> pair = com.android.settingslib.bluetooth.BluetoothUtils
.getBtClassDrawableWithDescription(getContext(), mCachedDevice);
if (pair.first != null) {
setIcon(pair.first);
diff --git a/src/com/android/car/settings/bluetooth/BluetoothPairingDialog.java b/src/com/android/car/settings/bluetooth/BluetoothPairingDialog.java
index c70af2a..e4440e9 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothPairingDialog.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothPairingDialog.java
@@ -16,6 +16,7 @@
package com.android.car.settings.bluetooth;
+import android.annotation.Nullable;
import android.app.Activity;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
@@ -24,7 +25,6 @@
import android.content.IntentFilter;
import android.os.Bundle;
-import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
/**
diff --git a/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragment.java b/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragment.java
index 4f6af3e..5e19d01 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragment.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothPairingSelectionFragment.java
@@ -36,22 +36,10 @@
private final BluetoothCallback mCallback = new BluetoothCallback() {
@Override
- public void onBluetoothStateChanged(int bluetoothState) {
- }
-
- @Override
public void onScanningStateChanged(boolean started) {
}
@Override
- public void onDeviceAdded(CachedBluetoothDevice cachedDevice) {
- }
-
- @Override
- public void onDeviceDeleted(CachedBluetoothDevice cachedDevice) {
- }
-
- @Override
public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {
if (bondState == BluetoothDevice.BOND_BONDED) {
// We are in a dispatch loop from event manager to all listeners. goBack will pop
@@ -62,19 +50,6 @@
BluetoothPairingSelectionFragment.this::goBack);
}
}
-
- @Override
- public void onConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state) {
- }
-
- @Override
- public void onActiveDeviceChanged(CachedBluetoothDevice activeDevice,
- int bluetoothProfile) {
- }
-
- @Override
- public void onAudioModeChanged() {
- }
};
private LocalBluetoothManager mManager;
diff --git a/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceController.java b/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceController.java
index 04fc935..9b0861e 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceController.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceController.java
@@ -61,8 +61,8 @@
LOG.d("startPairing");
// Indicate that this client (vehicle) would like access to contacts (PBAP) and messages
// (MAP) if there is a server which permits it (usually a phone).
- cachedDevice.setPhonebookPermissionChoice(CachedBluetoothDevice.ACCESS_ALLOWED);
- cachedDevice.setMessagePermissionChoice(CachedBluetoothDevice.ACCESS_ALLOWED);
+ cachedDevice.getDevice().setPhonebookAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
+ cachedDevice.getDevice().setMessageAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
} else {
BluetoothUtils.showError(getContext(), cachedDevice.getName(),
R.string.bluetooth_pairing_error_message);
diff --git a/src/com/android/car/settings/bluetooth/BluetoothUtils.java b/src/com/android/car/settings/bluetooth/BluetoothUtils.java
index ec3c88b..d20e849 100644
--- a/src/com/android/car/settings/bluetooth/BluetoothUtils.java
+++ b/src/com/android/car/settings/bluetooth/BluetoothUtils.java
@@ -41,7 +41,8 @@
@Override
public void onBluetoothManagerInitialized(Context appContext,
LocalBluetoothManager bluetoothManager) {
- com.android.settingslib.bluetooth.Utils.setErrorListener(BluetoothUtils::showError);
+ com.android.settingslib.bluetooth.BluetoothUtils.setErrorListener(
+ com.android.car.settings.bluetooth.BluetoothUtils::showError);
}
};
diff --git a/src/com/android/car/settings/common/ConfirmationDialogFragment.java b/src/com/android/car/settings/common/ConfirmationDialogFragment.java
index 9b418b5..a9e9e68 100644
--- a/src/com/android/car/settings/common/ConfirmationDialogFragment.java
+++ b/src/com/android/car/settings/common/ConfirmationDialogFragment.java
@@ -77,6 +77,13 @@
}
/** Sets the positive button label. */
+ public Builder setPositiveButton(String label, ConfirmListener confirmListener) {
+ mPosLabel = label;
+ mConfirmListener = confirmListener;
+ return this;
+ }
+
+ /** Sets the positive button label. */
public Builder setPositiveButton(@StringRes int label, ConfirmListener confirmListener) {
mPosLabel = mContext.getString(label);
mConfirmListener = confirmListener;
@@ -84,6 +91,13 @@
}
/** Sets the negative button label. */
+ public Builder setNegativeButton(String label, RejectListener rejectListener) {
+ mNegLabel = label;
+ mRejectListener = rejectListener;
+ return this;
+ }
+
+ /** Sets the negative button label. */
public Builder setNegativeButton(@StringRes int label, RejectListener rejectListener) {
mNegLabel = mContext.getString(label);
mRejectListener = rejectListener;
diff --git a/src/com/android/car/settings/common/FragmentResolver.java b/src/com/android/car/settings/common/FragmentResolver.java
index 5350cbf..dc8656c 100644
--- a/src/com/android/car/settings/common/FragmentResolver.java
+++ b/src/com/android/car/settings/common/FragmentResolver.java
@@ -18,7 +18,7 @@
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
-import android.os.storage.StorageManager;
+import android.net.wifi.WifiManager;
import android.provider.Settings;
import android.text.TextUtils;
@@ -30,10 +30,7 @@
import com.android.car.settings.accounts.ChooseAccountFragment;
import com.android.car.settings.applications.ApplicationDetailsFragment;
import com.android.car.settings.applications.ApplicationsSettingsFragment;
-import com.android.car.settings.applications.DefaultApplicationsSettingsFragment;
-import com.android.car.settings.applications.assist.ManageAssistFragment;
import com.android.car.settings.applications.defaultapps.DefaultAutofillPickerFragment;
-import com.android.car.settings.applications.specialaccess.DirectoryAccessFragment;
import com.android.car.settings.applications.specialaccess.ModifySystemSettingsFragment;
import com.android.car.settings.applications.specialaccess.NotificationAccessFragment;
import com.android.car.settings.applications.specialaccess.UsageAccessFragment;
@@ -46,6 +43,7 @@
import com.android.car.settings.language.LanguagePickerFragment;
import com.android.car.settings.location.LocationScanningFragment;
import com.android.car.settings.network.MobileNetworkFragment;
+import com.android.car.settings.network.NetworkAndInternetFragment;
import com.android.car.settings.quicksettings.QuickSettingFragment;
import com.android.car.settings.sound.SoundSettingsFragment;
import com.android.car.settings.storage.StorageSettingsFragment;
@@ -90,11 +88,16 @@
return new DisplaySettingsFragment();
case Settings.ACTION_SOUND_SETTINGS:
+ case Settings.Panel.ACTION_VOLUME:
return new SoundSettingsFragment();
- case android.net.wifi.WifiManager.ACTION_PICK_WIFI_NETWORK:
+ case Settings.Panel.ACTION_INTERNET_CONNECTIVITY:
+ return new NetworkAndInternetFragment();
+
+ case WifiManager.ACTION_PICK_WIFI_NETWORK:
case Settings.ACTION_WIFI_SETTINGS:
case Settings.ACTION_WIRELESS_SETTINGS:
+ case Settings.Panel.ACTION_WIFI:
return new WifiSettingsFragment();
case Settings.ACTION_WIFI_IP_SETTINGS:
@@ -135,12 +138,6 @@
}
return ApplicationDetailsFragment.getInstance(pkg);
- case Settings.ACTION_MANAGE_DEFAULT_APPS_SETTINGS:
- return new DefaultApplicationsSettingsFragment();
-
- case Settings.ACTION_VOICE_INPUT_SETTINGS:
- return new ManageAssistFragment();
-
case Settings.ACTION_MANAGE_WRITE_SETTINGS:
return new ModifySystemSettingsFragment();
@@ -150,9 +147,6 @@
case Settings.ACTION_USAGE_ACCESS_SETTINGS:
return new UsageAccessFragment();
- case Settings.ACTION_STORAGE_VOLUME_ACCESS_SETTINGS:
- return new DirectoryAccessFragment();
-
case Intent.ACTION_QUICK_CLOCK:
case Settings.ACTION_DATE_SETTINGS:
return new DatetimeSettingsFragment();
@@ -167,7 +161,6 @@
return new AccountSettingsFragment();
case Settings.ACTION_INTERNAL_STORAGE_SETTINGS:
- case StorageManager.ACTION_MANAGE_STORAGE:
return new StorageSettingsFragment();
case Settings.ACTION_LOCALE_SETTINGS:
diff --git a/src/com/android/car/settings/common/PreferenceController.java b/src/com/android/car/settings/common/PreferenceController.java
index 4aa8fcf..c2796f5 100644
--- a/src/com/android/car/settings/common/PreferenceController.java
+++ b/src/com/android/car/settings/common/PreferenceController.java
@@ -95,7 +95,7 @@
*/
@Retention(RetentionPolicy.SOURCE)
@IntDef({AVAILABLE, CONDITIONALLY_UNAVAILABLE, UNSUPPORTED_ON_DEVICE, DISABLED_FOR_USER,
- AVAILABLE_FOR_VIEWING})
+ AVAILABLE_FOR_VIEWING})
public @interface AvailabilityStatus {
}
diff --git a/src/com/android/car/settings/datausage/DataUsagePreferenceController.java b/src/com/android/car/settings/datausage/DataUsagePreferenceController.java
index 9c0652a..b0febdd 100644
--- a/src/com/android/car/settings/datausage/DataUsagePreferenceController.java
+++ b/src/com/android/car/settings/datausage/DataUsagePreferenceController.java
@@ -30,6 +30,8 @@
*/
public class DataUsagePreferenceController extends PreferenceController<Preference> {
+ private int mSubId = Integer.MIN_VALUE;
+
private SubscriptionManager mSubscriptionManager;
public DataUsagePreferenceController(Context context, String preferenceKey,
@@ -45,9 +47,21 @@
@Override
protected boolean handlePreferenceClicked(Preference preference) {
- int subId = DataUsageUtils.getDefaultSubscriptionId(mSubscriptionManager);
+ int subId = mSubId != Integer.MIN_VALUE ? mSubId : getDefaultSubId();
AppDataUsageFragment appDataUsageFragment = AppDataUsageFragment.newInstance(subId);
getFragmentController().launchFragment(appDataUsageFragment);
return true;
}
+
+ /**
+ * Sets the subId for which data usage will be loaded. If this is not set then default subId
+ * will be used to load data.
+ */
+ public void setSubId(int subId) {
+ mSubId = subId;
+ }
+
+ private int getDefaultSubId() {
+ return DataUsageUtils.getDefaultSubscriptionId(mSubscriptionManager);
+ }
}
diff --git a/src/com/android/car/settings/location/LocationServicesPreferenceController.java b/src/com/android/car/settings/location/LocationServicesPreferenceController.java
index f0b4ff9..b17fb20 100644
--- a/src/com/android/car/settings/location/LocationServicesPreferenceController.java
+++ b/src/com/android/car/settings/location/LocationServicesPreferenceController.java
@@ -36,6 +36,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
/**
* Injects Location Services into a {@link PreferenceGroup} with a matching key.
@@ -72,12 +73,9 @@
@Override
protected void onCreateInternal() {
int profileId = UserHandle.USER_CURRENT;
- if (mSettingsInjector.hasInjectedSettings(profileId)) {
- // If there are injected settings, get and inject them.
- List<Preference> injectedSettings = getSortedInjectedPreferences(profileId);
- for (Preference preference : injectedSettings) {
- getPreference().addPreference(preference);
- }
+ List<Preference> injectedSettings = getSortedInjectedPreferences(profileId);
+ for (Preference preference : injectedSettings) {
+ getPreference().addPreference(preference);
}
}
@@ -104,8 +102,12 @@
}
private List<Preference> getSortedInjectedPreferences(int profileId) {
- List<Preference> sortedInjections = new ArrayList<>(
- mSettingsInjector.getInjectedSettings(getContext(), profileId));
+ List<Preference> sortedInjections = new ArrayList<>();
+ Map<Integer, List<Preference>> injections =
+ mSettingsInjector.getInjectedSettings(getContext(), profileId);
+ for (Map.Entry<Integer, List<Preference>> entry : injections.entrySet()) {
+ sortedInjections.addAll(entry.getValue());
+ }
Collections.sort(sortedInjections);
return sortedInjections;
}
diff --git a/src/com/android/car/settings/location/RecentLocationRequestsPreferenceController.java b/src/com/android/car/settings/location/RecentLocationRequestsPreferenceController.java
index bdc1ea5..8253dec 100644
--- a/src/com/android/car/settings/location/RecentLocationRequestsPreferenceController.java
+++ b/src/com/android/car/settings/location/RecentLocationRequestsPreferenceController.java
@@ -64,11 +64,12 @@
protected void updateState(PreferenceGroup group) {
if (mRecentLocationRequests == null) {
// First time displaying a list.
- mRecentLocationRequests = mRecentLocationApps.getAppListSorted();
+ mRecentLocationRequests =
+ mRecentLocationApps.getAppListSorted(/* showSystemApps= */ true);
} else {
// If preferences were already added to the screen, get a new list
// and only update the displayed app-list if there is a difference.
- List<Request> newRequests = mRecentLocationApps.getAppListSorted();
+ List<Request> newRequests = mRecentLocationApps.getAppListSorted(true);
// listsEqual compares by elements' package names only, using List.equals() will
// not work because it will always return false since it also compares the time.
if (listsEqual(newRequests, mRecentLocationRequests)) {
diff --git a/src/com/android/car/settings/network/AddMobileNetworkPreferenceController.java b/src/com/android/car/settings/network/AddMobileNetworkPreferenceController.java
new file mode 100644
index 0000000..22d5d83
--- /dev/null
+++ b/src/com/android/car/settings/network/AddMobileNetworkPreferenceController.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.network;
+
+import static android.telephony.euicc.EuiccManager.ACTION_PROVISION_EMBEDDED_SUBSCRIPTION;
+import static android.telephony.euicc.EuiccManager.EXTRA_FORCE_PROVISION;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ResolveInfo;
+import android.telephony.euicc.EuiccManager;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.List;
+
+/**
+ * Controls the visibility of the preference to add another mobile network based on if there is an
+ * activity to handle that intent.
+ */
+public class AddMobileNetworkPreferenceController extends PreferenceController<Preference> {
+
+ @VisibleForTesting
+ static final Intent ADD_NETWORK_INTENT = new Intent(
+ ACTION_PROVISION_EMBEDDED_SUBSCRIPTION).putExtra(EXTRA_FORCE_PROVISION, true);
+
+ public AddMobileNetworkPreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
+ }
+
+ @Override
+ protected Class<Preference> getPreferenceType() {
+ return Preference.class;
+ }
+
+ @Override
+ protected int getAvailabilityStatus() {
+ EuiccManager euiccManager = getContext().getSystemService(EuiccManager.class);
+ if (!euiccManager.isEnabled()) {
+ return UNSUPPORTED_ON_DEVICE;
+ }
+
+ List<ResolveInfo> resolveInfos = getContext().getPackageManager().queryIntentActivities(
+ ADD_NETWORK_INTENT, /* flags= */ 0);
+ if (resolveInfos.isEmpty()) {
+ return UNSUPPORTED_ON_DEVICE;
+ }
+
+ return AVAILABLE;
+ }
+
+ @Override
+ protected boolean handlePreferenceClicked(Preference preference) {
+ getContext().startActivity(ADD_NETWORK_INTENT);
+ return true;
+ }
+}
diff --git a/src/com/android/car/settings/network/ConfirmMobileDataDisableDialog.java b/src/com/android/car/settings/network/ConfirmMobileDataDisableDialog.java
deleted file mode 100644
index f0898f8..0000000
--- a/src/com/android/car/settings/network/ConfirmMobileDataDisableDialog.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.network;
-
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.DialogInterface;
-import android.os.Bundle;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.fragment.app.DialogFragment;
-
-import com.android.car.settings.R;
-
-/** Dialog to confirm disabling mobile data. */
-public class ConfirmMobileDataDisableDialog extends DialogFragment implements
- DialogInterface.OnClickListener {
-
- /**
- * Tag used to open and identify the dialog fragment from the FragmentManager or
- * FragmentController.
- */
- public static final String TAG = "ConfirmMobileDataDisableDialog";
-
- private ConfirmMobileDataDisableListener mListener;
-
- /**
- * Sets a listener which will determine how to handle the user action when they press ok or
- * cancel.
- */
- public void setListener(ConfirmMobileDataDisableListener listener) {
- mListener = listener;
- }
-
- @NonNull
- @Override
- public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
- return new AlertDialog.Builder(getContext())
- .setMessage(R.string.confirm_mobile_data_disable)
- .setPositiveButton(android.R.string.ok, this)
- .setNegativeButton(android.R.string.cancel, this)
- .create();
- }
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- if (which == DialogInterface.BUTTON_POSITIVE) {
- if (mListener != null) {
- mListener.onMobileDataDisableConfirmed();
- }
- }
- if (which == DialogInterface.BUTTON_NEGATIVE) {
- if (mListener != null) {
- mListener.onMobileDataDisableRejected();
- }
- }
- }
-
- /**
- * Interface for listeners that want to receive a callback when user confirms to disable mobile
- * data.
- */
- public interface ConfirmMobileDataDisableListener {
- /**
- * Method called only when user presses confirm button.
- */
- void onMobileDataDisableConfirmed();
-
- /**
- * Method called only when user presses cancel button.
- */
- void onMobileDataDisableRejected();
- }
-}
diff --git a/src/com/android/car/settings/network/MobileDataTogglePreferenceController.java b/src/com/android/car/settings/network/MobileDataTogglePreferenceController.java
index ebb9f36..e0e8e3e 100644
--- a/src/com/android/car/settings/network/MobileDataTogglePreferenceController.java
+++ b/src/com/android/car/settings/network/MobileDataTogglePreferenceController.java
@@ -18,10 +18,20 @@
import android.car.drivingstate.CarUxRestrictions;
import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
+import android.provider.Settings;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
+import androidx.annotation.VisibleForTesting;
import androidx.preference.TwoStatePreference;
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
import com.android.car.settings.common.FragmentController;
import com.android.car.settings.common.PreferenceController;
@@ -31,14 +41,40 @@
*/
public class MobileDataTogglePreferenceController extends
PreferenceController<TwoStatePreference> implements
- ConfirmMobileDataDisableDialog.ConfirmMobileDataDisableListener {
+ MobileNetworkUpdateManager.MobileNetworkUpdateListener {
+ @VisibleForTesting
+ static final String DISABLE_DIALOG_TAG = ConfirmationDialogFragment.TAG + "_DisableData";
+ @VisibleForTesting
+ static final String ENABLE_MULTISIM_DIALOG_TAG =
+ ConfirmationDialogFragment.TAG + "_EnableMultisim";
+
+ private final SubscriptionManager mSubscriptionManager;
private TelephonyManager mTelephonyManager;
+ private int mSubId;
+
+ private final ContentObserver mMobileDataChangeObserver = new ContentObserver(
+ new Handler(Looper.getMainLooper())) {
+ @Override
+ public void onChange(boolean selfChange) {
+ super.onChange(selfChange);
+ refreshUi();
+ }
+ };
+
+ private final ConfirmationDialogFragment.ConfirmListener mConfirmDisableListener =
+ arguments -> setMobileDataEnabled(
+ /* enabled= */ false, /* disableOtherSubscriptions= */ false);
+ private final ConfirmationDialogFragment.ConfirmListener mConfirmMultiSimListener =
+ arguments -> setMobileDataEnabled(
+ /* enabled= */ true, /* disableOtherSubscriptions= */ true);
+ private final ConfirmationDialogFragment.RejectListener mRejectRefreshListener =
+ arguments -> refreshUi();
public MobileDataTogglePreferenceController(Context context, String preferenceKey,
FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
super(context, preferenceKey, fragmentController, uxRestrictions);
- mTelephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+ mSubscriptionManager = getContext().getSystemService(SubscriptionManager.class);
}
@Override
@@ -46,46 +82,124 @@
return TwoStatePreference.class;
}
+ /** Sets the subscription id to be controlled by this controller. */
+ public void setSubId(int subId) {
+ mSubId = subId;
+ mTelephonyManager = TelephonyManager.from(getContext()).createForSubscriptionId(mSubId);
+ }
+
+ @Override
+ protected int getAvailabilityStatus() {
+ return mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID ? AVAILABLE
+ : CONDITIONALLY_UNAVAILABLE;
+ }
+
@Override
protected void onCreateInternal() {
- ConfirmMobileDataDisableDialog dialog =
- (ConfirmMobileDataDisableDialog) getFragmentController().findDialogByTag(
- ConfirmMobileDataDisableDialog.TAG);
- if (dialog != null) {
- dialog.setListener(this);
+ ConfirmationDialogFragment.resetListeners(
+ (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
+ DISABLE_DIALOG_TAG), mConfirmDisableListener, mRejectRefreshListener);
+
+ ConfirmationDialogFragment.resetListeners(
+ (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
+ ENABLE_MULTISIM_DIALOG_TAG), mConfirmMultiSimListener,
+ mRejectRefreshListener);
+ }
+
+ @Override
+ protected void onStartInternal() {
+ if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ getContext().getContentResolver().registerContentObserver(getObservableUri(mSubId),
+ /* notifyForDescendants= */ false, mMobileDataChangeObserver);
+ }
+ }
+
+ @Override
+ protected void onStopInternal() {
+ if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ getContext().getContentResolver().unregisterContentObserver(mMobileDataChangeObserver);
}
}
@Override
protected void updateState(TwoStatePreference preference) {
- preference.setChecked(mTelephonyManager.isDataEnabled());
+ preference.setEnabled(!isOpportunistic());
+ preference.setChecked(
+ mTelephonyManager != null ? mTelephonyManager.isDataEnabled() : false);
}
@Override
protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
- boolean newToggleValue = (Boolean) newValue;
- if (!newToggleValue) {
- ConfirmMobileDataDisableDialog dialog = new ConfirmMobileDataDisableDialog();
- dialog.setListener(this);
- getFragmentController().showDialog(dialog, ConfirmMobileDataDisableDialog.TAG);
+ boolean newToggleValue = (boolean) newValue;
+ boolean isMultiSim = (mTelephonyManager.getSimCount() > 1);
+ int defaultSubId = mSubscriptionManager.getDefaultDataSubscriptionId();
+ boolean needToDisableOthers = mSubscriptionManager.isActiveSubscriptionId(defaultSubId)
+ && mSubId != defaultSubId;
+
+ if (!newToggleValue && !isMultiSim) {
+ getFragmentController().showDialog(getConfirmDataDisableDialog(), DISABLE_DIALOG_TAG);
+ } else if (newToggleValue && isMultiSim && needToDisableOthers) {
+ getFragmentController().showDialog(getConfirmMultisimEnableDialog(),
+ ENABLE_MULTISIM_DIALOG_TAG);
} else {
- setMobileDataEnabled(true);
+ setMobileDataEnabled(newToggleValue, /* disableOtherSubscriptions= */ false);
}
return false;
}
@Override
- public void onMobileDataDisableConfirmed() {
- setMobileDataEnabled(false);
- }
-
- @Override
- public void onMobileDataDisableRejected() {
+ public void onMobileNetworkUpdated(int subId) {
+ setSubId(subId);
refreshUi();
}
- private void setMobileDataEnabled(boolean enabled) {
- mTelephonyManager.setDataEnabled(enabled);
+ private void setMobileDataEnabled(boolean enabled, boolean disableOtherSubscriptions) {
+ NetworkUtils.setMobileDataEnabled(getContext(), mSubId, enabled, disableOtherSubscriptions);
refreshUi();
}
+
+ private boolean isOpportunistic() {
+ SubscriptionInfo info = mSubscriptionManager.getActiveSubscriptionInfo(mSubId);
+ return info != null && info.isOpportunistic();
+ }
+
+ private Uri getObservableUri(int subId) {
+ Uri uri = Settings.Global.getUriFor(Settings.Global.MOBILE_DATA);
+ if (TelephonyManager.from(getContext()).getSimCount() != 1) {
+ uri = Settings.Global.getUriFor(Settings.Global.MOBILE_DATA + subId);
+ }
+ return uri;
+ }
+
+ private ConfirmationDialogFragment getConfirmDataDisableDialog() {
+ return new ConfirmationDialogFragment.Builder(getContext())
+ .setMessage(R.string.confirm_mobile_data_disable)
+ .setPositiveButton(android.R.string.ok, mConfirmDisableListener)
+ .setNegativeButton(android.R.string.cancel, mRejectRefreshListener)
+ .build();
+ }
+
+ private ConfirmationDialogFragment getConfirmMultisimEnableDialog() {
+ SubscriptionInfo previousSubInfo =
+ mSubscriptionManager.getDefaultDataSubscriptionInfo();
+ SubscriptionInfo newSubInfo =
+ mSubscriptionManager.getActiveSubscriptionInfo(mSubId);
+
+ String previousName = (previousSubInfo == null)
+ ? getContext().getResources().getString(R.string.sim_selection_required_pref)
+ : previousSubInfo.getDisplayName().toString();
+
+ String newName = (newSubInfo == null)
+ ? getContext().getResources().getString(R.string.sim_selection_required_pref)
+ : newSubInfo.getDisplayName().toString();
+
+ return new ConfirmationDialogFragment.Builder(getContext())
+ .setTitle(getContext().getString(R.string.sim_change_data_title, newName))
+ .setMessage(getContext().getString(R.string.sim_change_data_message,
+ newName, previousName))
+ .setPositiveButton(getContext().getString(R.string.sim_change_data_ok, newName),
+ mConfirmMultiSimListener)
+ .setNegativeButton(android.R.string.cancel, mRejectRefreshListener)
+ .build();
+ }
}
diff --git a/src/com/android/car/settings/network/MobileNetworkEntryPreferenceController.java b/src/com/android/car/settings/network/MobileNetworkEntryPreferenceController.java
index 3db2065..534024b 100644
--- a/src/com/android/car/settings/network/MobileNetworkEntryPreferenceController.java
+++ b/src/com/android/car/settings/network/MobileNetworkEntryPreferenceController.java
@@ -18,49 +18,40 @@
import android.car.drivingstate.CarUxRestrictions;
import android.car.userlib.CarUserManagerHelper;
-import android.content.BroadcastReceiver;
import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.os.UserManager;
-import android.provider.Settings;
-import android.telephony.PhoneStateListener;
-import android.telephony.ServiceState;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import androidx.preference.Preference;
+import com.android.car.settings.R;
import com.android.car.settings.common.FragmentController;
import com.android.car.settings.common.PreferenceController;
+import java.util.List;
+
/** Controls the preference for accessing mobile network settings. */
-public class MobileNetworkEntryPreferenceController extends PreferenceController<Preference> {
+public class MobileNetworkEntryPreferenceController extends
+ PreferenceController<Preference> implements
+ SubscriptionsChangeListener.SubscriptionsChangeAction {
private final CarUserManagerHelper mCarUserManagerHelper;
- private final TelephonyManager mTelephonyManager;
+ private final SubscriptionsChangeListener mChangeListener;
+ private final SubscriptionManager mSubscriptionManager;
private final ConnectivityManager mConnectivityManager;
- private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
- @Override
- public void onServiceStateChanged(ServiceState serviceState) {
- refreshUi();
- }
- };
- private final BroadcastReceiver mAirplaneModeChangedReceiver = new BroadcastReceiver() {
- @Override
- public void onReceive(Context context, Intent intent) {
- refreshUi();
- }
- };
- private final IntentFilter mIntentFilter = new IntentFilter(
- Intent.ACTION_AIRPLANE_MODE_CHANGED);
+ private final TelephonyManager mTelephonyManager;
public MobileNetworkEntryPreferenceController(Context context, String preferenceKey,
FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
super(context, preferenceKey, fragmentController, uxRestrictions);
mCarUserManagerHelper = new CarUserManagerHelper(context);
+ mChangeListener = new SubscriptionsChangeListener(context, /* action= */ this);
+ mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
+ mConnectivityManager = context.getSystemService(ConnectivityManager.class);
mTelephonyManager = context.getSystemService(TelephonyManager.class);
- mConnectivityManager = getContext().getSystemService(ConnectivityManager.class);
}
@Override
@@ -70,14 +61,12 @@
@Override
protected void onStartInternal() {
- mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE);
- getContext().registerReceiver(mAirplaneModeChangedReceiver, mIntentFilter);
+ mChangeListener.start();
}
@Override
protected void onStopInternal() {
- mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
- getContext().unregisterReceiver(mAirplaneModeChangedReceiver);
+ mChangeListener.stop();
}
@Override
@@ -97,12 +86,43 @@
@Override
protected void updateState(Preference preference) {
- preference.setSummary(mTelephonyManager.getNetworkOperatorName());
- preference.setEnabled(isAirplaneModeOff());
+ List<SubscriptionInfo> subs = SubscriptionUtils.getAvailableSubscriptions(
+ mSubscriptionManager, mTelephonyManager);
+ preference.setEnabled(!subs.isEmpty());
+ preference.setSummary(getSummary(subs));
}
- private boolean isAirplaneModeOff() {
- return Settings.Global.getInt(getContext().getContentResolver(),
- Settings.Global.AIRPLANE_MODE_ON, 0) == 0;
+ @Override
+ protected boolean handlePreferenceClicked(Preference preference) {
+ List<SubscriptionInfo> subs = SubscriptionUtils.getAvailableSubscriptions(
+ mSubscriptionManager, mTelephonyManager);
+ if (subs.isEmpty()) {
+ return true;
+ }
+
+ if (subs.size() == 1) {
+ getFragmentController().launchFragment(
+ MobileNetworkFragment.newInstance(subs.get(0).getSubscriptionId()));
+ } else {
+ getFragmentController().launchFragment(new MobileNetworkListFragment());
+ }
+ return true;
+ }
+
+ @Override
+ public void onSubscriptionsChanged() {
+ refreshUi();
+ }
+
+ private CharSequence getSummary(List<SubscriptionInfo> subs) {
+ int count = subs.size();
+ if (subs.isEmpty()) {
+ return null;
+ } else if (count == 1) {
+ return subs.get(0).getDisplayName();
+ } else {
+ return getContext().getResources().getQuantityString(
+ R.plurals.mobile_network_summary_count, count, count);
+ }
}
}
diff --git a/src/com/android/car/settings/network/MobileNetworkFragment.java b/src/com/android/car/settings/network/MobileNetworkFragment.java
index 27cb83e..7411886 100644
--- a/src/com/android/car/settings/network/MobileNetworkFragment.java
+++ b/src/com/android/car/settings/network/MobileNetworkFragment.java
@@ -16,17 +16,111 @@
package com.android.car.settings.network;
+import android.content.Context;
+import android.os.Bundle;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.widget.TextView;
+
+import androidx.annotation.VisibleForTesting;
import androidx.annotation.XmlRes;
import com.android.car.settings.R;
import com.android.car.settings.common.SettingsFragment;
+import com.android.internal.util.CollectionUtils;
+
+import com.google.android.collect.Lists;
+
+import java.util.List;
/** Mobile network settings homepage. */
-public class MobileNetworkFragment extends SettingsFragment {
+public class MobileNetworkFragment extends SettingsFragment implements
+ MobileNetworkUpdateManager.MobileNetworkUpdateListener {
+
+ @VisibleForTesting
+ static final String ARG_NETWORK_SUB_ID = "network_sub_id";
+
+ private SubscriptionManager mSubscriptionManager;
+ private MobileNetworkUpdateManager mMobileNetworkUpdateManager;
+ private CharSequence mTitle;
+
+ /**
+ * Creates a new instance of the {@link MobileNetworkFragment}, which shows settings related to
+ * the given {@code subId}.
+ */
+ public static MobileNetworkFragment newInstance(int subId) {
+ MobileNetworkFragment fragment = new MobileNetworkFragment();
+ Bundle args = new Bundle();
+ args.putInt(ARG_NETWORK_SUB_ID, subId);
+ fragment.setArguments(args);
+ return fragment;
+ }
@Override
@XmlRes
protected int getPreferenceScreenResId() {
return R.xml.mobile_network_fragment;
}
+
+ @Override
+ public void onAttach(Context context) {
+ super.onAttach(context);
+ mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
+
+ int subId = getArguments() != null
+ ? getArguments().getInt(ARG_NETWORK_SUB_ID, MobileNetworkUpdateManager.SUB_ID_NULL)
+ : MobileNetworkUpdateManager.SUB_ID_NULL;
+ mMobileNetworkUpdateManager = new MobileNetworkUpdateManager(context, subId);
+ getLifecycle().addObserver(mMobileNetworkUpdateManager);
+
+ List<MobileNetworkUpdateManager.MobileNetworkUpdateListener> listeners =
+ Lists.newArrayList(
+ this,
+ use(MobileDataTogglePreferenceController.class,
+ R.string.pk_mobile_data_toggle),
+ use(RoamingPreferenceController.class, R.string.pk_mobile_roaming_toggle));
+ for (MobileNetworkUpdateManager.MobileNetworkUpdateListener listener : listeners) {
+ mMobileNetworkUpdateManager.registerListener(listener);
+ }
+ }
+
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ if (mTitle != null) {
+ TextView titleView = requireActivity().findViewById(R.id.title);
+ titleView.setText(mTitle);
+ }
+ }
+
+ @Override
+ public void onMobileNetworkUpdated(int subId) {
+ SubscriptionInfo info = null;
+
+ if (subId != MobileNetworkUpdateManager.SUB_ID_NULL) {
+ for (SubscriptionInfo subscriptionInfo :
+ mSubscriptionManager.getSelectableSubscriptionInfoList()) {
+ if (subscriptionInfo.getSubscriptionId() == subId) {
+ info = subscriptionInfo;
+ }
+ }
+ }
+
+ if (info == null && !CollectionUtils.isEmpty(
+ mSubscriptionManager.getActiveSubscriptionInfoList())) {
+ info = mSubscriptionManager.getActiveSubscriptionInfoList().get(0);
+ }
+
+ if (info != null) {
+ TextView titleView = requireActivity().findViewById(R.id.title);
+
+ // It is possible for this to be called before the activity is fully created. If so,
+ // cache the value so that it can be constructed onActivityCreated.
+ mTitle = info.getDisplayName();
+ if (titleView != null) {
+ titleView.setText(mTitle);
+ }
+ }
+ }
}
diff --git a/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerFragment.java b/src/com/android/car/settings/network/MobileNetworkListFragment.java
similarity index 70%
copy from src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerFragment.java
copy to src/com/android/car/settings/network/MobileNetworkListFragment.java
index 78c1473..4ec94fd 100644
--- a/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerFragment.java
+++ b/src/com/android/car/settings/network/MobileNetworkListFragment.java
@@ -14,19 +14,22 @@
* limitations under the License.
*/
-package com.android.car.settings.applications.defaultapps;
+package com.android.car.settings.network;
import androidx.annotation.XmlRes;
import com.android.car.settings.R;
import com.android.car.settings.common.SettingsFragment;
-/** Shows the option to choose the default assistant. */
-public class DefaultAssistantPickerFragment extends SettingsFragment {
+/**
+ * Shows the list of mobile networks if there are multiple. Clicking into any one of these mobile
+ * networks shows {@link MobileNetworkFragment} for that specific mobile network.
+ */
+public class MobileNetworkListFragment extends SettingsFragment {
@Override
@XmlRes
protected int getPreferenceScreenResId() {
- return R.xml.default_assistant_picker_fragment;
+ return R.xml.mobile_network_list_fragment;
}
}
diff --git a/src/com/android/car/settings/network/MobileNetworkListPreferenceController.java b/src/com/android/car/settings/network/MobileNetworkListPreferenceController.java
new file mode 100644
index 0000000..c4fb438
--- /dev/null
+++ b/src/com/android/car/settings/network/MobileNetworkListPreferenceController.java
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.network;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+import java.util.List;
+
+/** Business logic to populate the list of available mobile networks. */
+public class MobileNetworkListPreferenceController extends
+ PreferenceController<PreferenceGroup> implements
+ SubscriptionsChangeListener.SubscriptionsChangeAction {
+
+ private final SubscriptionsChangeListener mSubscriptionsChangeListener;
+ private final SubscriptionManager mSubscriptionManager;
+ private final TelephonyManager mTelephonyManager;
+
+ public MobileNetworkListPreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
+
+ mSubscriptionsChangeListener = new SubscriptionsChangeListener(context, /* action= */ this);
+ mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
+ mTelephonyManager = context.getSystemService(TelephonyManager.class);
+ }
+
+ @Override
+ protected Class<PreferenceGroup> getPreferenceType() {
+ return PreferenceGroup.class;
+ }
+
+ @Override
+ protected void onStartInternal() {
+ mSubscriptionsChangeListener.start();
+ }
+
+ @Override
+ protected void onStopInternal() {
+ mSubscriptionsChangeListener.stop();
+ }
+
+ @Override
+ protected void updateState(PreferenceGroup preferenceGroup) {
+ preferenceGroup.removeAll();
+
+ List<SubscriptionInfo> subscriptions = SubscriptionUtils.getAvailableSubscriptions(
+ mSubscriptionManager, mTelephonyManager);
+ for (SubscriptionInfo info : subscriptions) {
+ preferenceGroup.addPreference(createPreference(info));
+ }
+ }
+
+ @Override
+ public void onSubscriptionsChanged() {
+ refreshUi();
+ }
+
+ private Preference createPreference(SubscriptionInfo info) {
+ Preference preference = new Preference(getContext());
+ preference.setTitle(info.getDisplayName());
+ preference.setKey(Integer.toString(info.getSubscriptionId()));
+
+ boolean isEsim = info.isEmbedded();
+ if (mSubscriptionManager.isActiveSubscriptionId(info.getSubscriptionId())) {
+ preference.setSummary(isEsim ? R.string.mobile_network_active_esim
+ : R.string.mobile_network_active_sim);
+ } else {
+ preference.setSummary(isEsim ? R.string.mobile_network_inactive_esim
+ : R.string.mobile_network_inactive_sim);
+ }
+
+ preference.setOnPreferenceClickListener(pref -> {
+ MobileNetworkFragment fragment = MobileNetworkFragment.newInstance(
+ info.getSubscriptionId());
+ getFragmentController().launchFragment(fragment);
+ return true;
+ });
+
+ return preference;
+ }
+}
diff --git a/src/com/android/car/settings/network/MobileNetworkUpdateManager.java b/src/com/android/car/settings/network/MobileNetworkUpdateManager.java
new file mode 100644
index 0000000..4b9a688
--- /dev/null
+++ b/src/com/android/car/settings/network/MobileNetworkUpdateManager.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.network;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+
+import androidx.annotation.NonNull;
+import androidx.lifecycle.DefaultLifecycleObserver;
+import androidx.lifecycle.LifecycleOwner;
+
+import com.android.car.settings.common.Logger;
+import com.android.internal.telephony.TelephonyIntents;
+import com.android.internal.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Listens to potential changes in subscription id and updates registered {@link
+ * MobileNetworkUpdateManager.MobileNetworkUpdateListener} with the new subscription id.
+ */
+public class MobileNetworkUpdateManager implements DefaultLifecycleObserver {
+
+ /** Value to represent that the subscription id hasn't been computed yet. */
+ static final int SUB_ID_NULL = Integer.MIN_VALUE;
+ private static final Logger LOG = new Logger(MobileNetworkUpdateManager.class);
+
+ private final List<MobileNetworkUpdateListener> mListeners = new ArrayList<>();
+ private final PhoneChangeReceiver mPhoneChangeReceiver;
+ private final SubscriptionManager mSubscriptionManager;
+ private List<SubscriptionInfo> mSubscriptionInfos;
+ private int mCurSubscriptionId;
+
+ private final SubscriptionManager.OnSubscriptionsChangedListener
+ mOnSubscriptionsChangeListener =
+ new SubscriptionManager.OnSubscriptionsChangedListener() {
+ @Override
+ public void onSubscriptionsChanged() {
+ if (!Objects.equals(mSubscriptionInfos,
+ mSubscriptionManager.getActiveSubscriptionInfoList(
+ /* userVisibleOnly= */ true))) {
+ updateSubscriptions(/* forceRefresh= */ false);
+ }
+ }
+ };
+
+ public MobileNetworkUpdateManager(Context context, int subId) {
+ mCurSubscriptionId = subId;
+ mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
+ mSubscriptionInfos = mSubscriptionManager.getActiveSubscriptionInfoList();
+
+ mPhoneChangeReceiver = new PhoneChangeReceiver(context, () -> {
+ if (mCurSubscriptionId != SUB_ID_NULL) {
+ // When the radio changes (ex: CDMA->GSM), refresh the fragment.
+ // This is very rare.
+ LOG.d("Radio change (i.e. CDMA->GSM) received for valid subscription id: "
+ + mCurSubscriptionId);
+ updateReceived(mCurSubscriptionId);
+ }
+ });
+ }
+
+ /**
+ * Registers a listener that will receive necessary updates to changes in the mobile network.
+ */
+ public void registerListener(MobileNetworkUpdateListener listener) {
+ mListeners.add(listener);
+ }
+
+ /**
+ * Unregisters a listener that was previously added via
+ * {@link MobileNetworkUpdateManager#registerListener(MobileNetworkUpdateListener)}. The
+ * provided argument must refer to the same object that was registered in order to securely be
+ * unregistered.
+ */
+ public void unregisterListener(MobileNetworkUpdateListener listener) {
+ mListeners.remove(listener);
+ }
+
+ @Override
+ public void onCreate(@NonNull LifecycleOwner owner) {
+ updateSubscriptions(/* forceRefresh= */ true);
+ }
+
+ @Override
+ public final void onStart(@NonNull LifecycleOwner owner) {
+ mPhoneChangeReceiver.register();
+ mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
+ }
+
+ @Override
+ public final void onStop(@NonNull LifecycleOwner owner) {
+ mPhoneChangeReceiver.unregister();
+ mSubscriptionManager.removeOnSubscriptionsChangedListener(mOnSubscriptionsChangeListener);
+ }
+
+ private void updateSubscriptions(boolean forceRefresh) {
+ LOG.d("updateSubscriptions called");
+ mSubscriptionInfos = mSubscriptionManager.getActiveSubscriptionInfoList();
+ int subId = getSubscriptionId();
+ if (forceRefresh || mCurSubscriptionId != subId) {
+ LOG.d("updateSubscriptions updated subscription id! prev: " + mCurSubscriptionId
+ + " new: " + subId);
+ mCurSubscriptionId = subId;
+ updateReceived(mCurSubscriptionId);
+ }
+ }
+
+ private void updateReceived(int subId) {
+ for (MobileNetworkUpdateListener listener : mListeners) {
+ listener.onMobileNetworkUpdated(subId);
+ }
+ }
+
+ private int getSubscriptionId() {
+ SubscriptionInfo subscription = getSubscription();
+ return subscription != null ? subscription.getSubscriptionId()
+ : SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+ }
+
+ /**
+ * First, find a subscription with the id provided at construction if it exists. If not, just
+ * return the first one in the mSubscriptionInfos list since it is already sorted by sim slot.
+ */
+ private SubscriptionInfo getSubscription() {
+ if (mCurSubscriptionId != SUB_ID_NULL) {
+ for (SubscriptionInfo subscriptionInfo :
+ mSubscriptionManager.getSelectableSubscriptionInfoList()) {
+ if (subscriptionInfo.getSubscriptionId() == mCurSubscriptionId) {
+ return subscriptionInfo;
+ }
+ }
+ }
+
+ return CollectionUtils.isEmpty(mSubscriptionInfos) ? null : mSubscriptionInfos.get(0);
+ }
+
+ /**
+ * Interface used by components listening to subscription id updates from {@link
+ * MobileNetworkUpdateManager}.
+ */
+ public interface MobileNetworkUpdateListener {
+ /** Called when there is a new subscription id that other components should be aware of. */
+ void onMobileNetworkUpdated(int subId);
+ }
+
+ /** Broadcast receiver which observes changes in radio technology (i.e. CDMA vs GSM). */
+ private static class PhoneChangeReceiver extends BroadcastReceiver {
+ private static final IntentFilter RADIO_TECHNOLOGY_CHANGED_FILTER = new IntentFilter(
+ TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED);
+
+ private Context mContext;
+ private PhoneChangeReceiver.OnChangeAction mOnChangeAction;
+
+ /** Action to take when receiver receives a non sticky broadcast intent. */
+ private interface OnChangeAction {
+ void onReceive();
+ }
+
+ PhoneChangeReceiver(Context context, PhoneChangeReceiver.OnChangeAction onChangeAction) {
+ mContext = context;
+ mOnChangeAction = onChangeAction;
+ }
+
+ void register() {
+ mContext.registerReceiver(this, RADIO_TECHNOLOGY_CHANGED_FILTER);
+ }
+
+ void unregister() {
+ mContext.unregisterReceiver(this);
+ }
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (!isInitialStickyBroadcast()) {
+ mOnChangeAction.onReceive();
+ }
+ }
+ }
+}
diff --git a/src/com/android/car/settings/network/NetworkUtils.java b/src/com/android/car/settings/network/NetworkUtils.java
index fe3fc05..f8aa104 100644
--- a/src/com/android/car/settings/network/NetworkUtils.java
+++ b/src/com/android/car/settings/network/NetworkUtils.java
@@ -16,11 +16,16 @@
package com.android.car.settings.network;
+import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
+import java.util.List;
+
/** Provides helpful utilities surrounding network related tasks. */
public final class NetworkUtils {
@@ -47,4 +52,32 @@
return simState != TelephonyManager.SIM_STATE_ABSENT
&& simState != TelephonyManager.SIM_STATE_UNKNOWN;
}
+
+ /**
+ * Sets the mobile data enabled state based on {@code enabled} for the subscription defined by
+ * {@code subId}. If {@code disableOtherSubscriptions} is set, other subscriptions will be
+ * disabled unless they are opportunistic.
+ */
+ public static void setMobileDataEnabled(Context context, int subId, boolean enabled,
+ boolean disableOtherSubscriptions) {
+ TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class)
+ .createForSubscriptionId(subId);
+ SubscriptionManager subscriptionManager = context.getSystemService(
+ SubscriptionManager.class);
+ telephonyManager.setDataEnabled(enabled);
+
+ if (disableOtherSubscriptions) {
+ List<SubscriptionInfo> subInfoList =
+ subscriptionManager.getActiveSubscriptionInfoList();
+ if (subInfoList != null) {
+ for (SubscriptionInfo subInfo : subInfoList) {
+ // We never disable mobile data for opportunistic subscriptions.
+ if (subInfo.getSubscriptionId() != subId && !subInfo.isOpportunistic()) {
+ context.getSystemService(TelephonyManager.class).createForSubscriptionId(
+ subInfo.getSubscriptionId()).setDataEnabled(false);
+ }
+ }
+ }
+ }
+ }
}
diff --git a/src/com/android/car/settings/network/RoamingPreferenceController.java b/src/com/android/car/settings/network/RoamingPreferenceController.java
new file mode 100644
index 0000000..8fba750
--- /dev/null
+++ b/src/com/android/car/settings/network/RoamingPreferenceController.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.network;
+
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.PersistableBundle;
+import android.provider.Settings;
+import android.telephony.CarrierConfigManager;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/** Business logic for toggling the roaming state. */
+// TODO: This preference should be available but unsearchable if subscription id is invalid.
+public class RoamingPreferenceController extends PreferenceController<TwoStatePreference> implements
+ MobileNetworkUpdateManager.MobileNetworkUpdateListener {
+
+ private final CarrierConfigManager mCarrierConfigManager;
+ private final RoamingStateChangeObserver mRoamingStateChangeObserver;
+ private TelephonyManager mTelephonyManager;
+ private int mSubId;
+
+ private final ConfirmationDialogFragment.ConfirmListener mConfirmListener =
+ arguments -> setRoamingEnabled(true);
+
+ public RoamingPreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
+ mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
+ mRoamingStateChangeObserver = new RoamingStateChangeObserver(
+ new Handler(Looper.getMainLooper()), this::refreshUi);
+ mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
+ }
+
+ @Override
+ protected Class<TwoStatePreference> getPreferenceType() {
+ return TwoStatePreference.class;
+ }
+
+ /** Set the subscription id for which the roaming toggle should take effect. */
+ public void setSubId(int subId) {
+ mSubId = subId;
+ mTelephonyManager = TelephonyManager.from(getContext()).createForSubscriptionId(mSubId);
+ }
+
+ @Override
+ protected void onStartInternal() {
+ mRoamingStateChangeObserver.register(getContext(), mSubId);
+
+ ConfirmationDialogFragment.resetListeners(
+ (ConfirmationDialogFragment) getFragmentController().findDialogByTag(
+ ConfirmationDialogFragment.TAG),
+ mConfirmListener,
+ /* rejectListener= */ null);
+ }
+
+ @Override
+ protected void onStopInternal() {
+ mRoamingStateChangeObserver.unregister(getContext());
+ }
+
+ @Override
+ protected void updateState(TwoStatePreference preference) {
+ preference.setEnabled(mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+ preference.setChecked(
+ mTelephonyManager != null ? mTelephonyManager.isDataRoamingEnabled() : false);
+ }
+
+ @Override
+ protected boolean handlePreferenceChanged(TwoStatePreference preference, Object newValue) {
+ boolean isEnabled = (boolean) newValue;
+ if (isEnabled && isDialogNeeded()) {
+ getFragmentController().showDialog(getRoamingAlertDialog(),
+ ConfirmationDialogFragment.TAG);
+ return false;
+ }
+
+ setRoamingEnabled(isEnabled);
+ return true;
+ }
+
+ @Override
+ public void onMobileNetworkUpdated(int subId) {
+ setSubId(subId);
+ refreshUi();
+ }
+
+ private void setRoamingEnabled(boolean enabled) {
+ mTelephonyManager.setDataRoamingEnabled(enabled);
+ refreshUi();
+ }
+
+ private boolean isDialogNeeded() {
+ boolean isRoamingEnabled = mTelephonyManager.isDataRoamingEnabled();
+ PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);
+
+ // Need dialog if we need to turn on roaming and the roaming charge indication is allowed.
+ if (!isRoamingEnabled && (carrierConfig == null || !carrierConfig.getBoolean(
+ CarrierConfigManager.KEY_DISABLE_CHARGE_INDICATION_BOOL))) {
+ return true;
+ }
+ return false;
+ }
+
+ private ConfirmationDialogFragment getRoamingAlertDialog() {
+ return new ConfirmationDialogFragment.Builder(getContext())
+ .setTitle(R.string.roaming_alert_title)
+ .setMessage(R.string.roaming_warning)
+ .setPositiveButton(android.R.string.yes, mConfirmListener)
+ .setNegativeButton(android.R.string.no, /* rejectListener= */ null)
+ .build();
+ }
+
+ /** Observer that listens to data roaming change. */
+ private static class RoamingStateChangeObserver extends ContentObserver {
+
+ private Runnable mChangeListener;
+
+ RoamingStateChangeObserver(Handler handler, Runnable changeListener) {
+ super(handler);
+ mChangeListener = changeListener;
+ }
+
+ @Override
+ public void onChange(boolean selfChange) {
+ super.onChange(selfChange);
+ mChangeListener.run();
+ }
+
+ /** Register this observer to listen for updates to {@link Settings.Global#DATA_ROAMING}. */
+ public void register(Context context, int subId) {
+ Uri uri = Settings.Global.getUriFor(Settings.Global.DATA_ROAMING);
+ if (TelephonyManager.from(context).getSimCount() != 1) {
+ uri = Settings.Global.getUriFor(Settings.Global.DATA_ROAMING + subId);
+ }
+ context.getContentResolver().registerContentObserver(uri,
+ /* notifyForDescendants= */ false, /* observer= */ this);
+ }
+
+ /** Unregister this observer. */
+ public void unregister(Context context) {
+ context.getContentResolver().unregisterContentObserver(/* observer= */ this);
+ }
+ }
+}
diff --git a/src/com/android/car/settings/network/SubscriptionUtils.java b/src/com/android/car/settings/network/SubscriptionUtils.java
new file mode 100644
index 0000000..cf1eba9
--- /dev/null
+++ b/src/com/android/car/settings/network/SubscriptionUtils.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.network;
+
+import static android.telephony.UiccSlotInfo.CARD_STATE_INFO_PRESENT;
+
+import static com.android.internal.util.CollectionUtils.emptyIfNull;
+
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+import android.telephony.UiccSlotInfo;
+import android.text.TextUtils;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+/** Shared logic related to dealing with multiple subscriptions. */
+public final class SubscriptionUtils {
+
+ private SubscriptionUtils() {
+ }
+
+ /**
+ * Returns the list of available subscriptions, accounting for duplicates possible through a
+ * virtual network provider.
+ */
+ public static List<SubscriptionInfo> getAvailableSubscriptions(
+ SubscriptionManager subscriptionManager, TelephonyManager telephonyManager) {
+ List<SubscriptionInfo> subscriptions = new ArrayList<>(
+ emptyIfNull(subscriptionManager.getSelectableSubscriptionInfoList()));
+
+ // Look for inactive but present physical SIMs that are missing from the selectable list.
+ List<UiccSlotInfo> missing = new ArrayList<>();
+ UiccSlotInfo[] slotsInfo = telephonyManager.getUiccSlotsInfo();
+ for (int i = 0; slotsInfo != null && i < slotsInfo.length; i++) {
+ UiccSlotInfo slotInfo = slotsInfo[i];
+ if (isInactiveInsertedPSim(slotInfo)) {
+ int index = slotInfo.getLogicalSlotIdx();
+ String cardId = slotInfo.getCardId();
+
+ boolean found = subscriptions.stream().anyMatch(
+ info -> index == info.getSimSlotIndex() && cardId.equals(
+ info.getCardString()));
+ if (!found) {
+ missing.add(slotInfo);
+ }
+ }
+ }
+ if (!missing.isEmpty()) {
+ for (SubscriptionInfo info : subscriptionManager.getAllSubscriptionInfoList()) {
+ for (UiccSlotInfo slotInfo : missing) {
+ if (info.getSimSlotIndex() == slotInfo.getLogicalSlotIdx()
+ && info.getCardString().equals(slotInfo.getCardId())) {
+ subscriptions.add(info);
+ break;
+ }
+ }
+ }
+ }
+
+ // With some carriers such as Google Fi which provide a sort of virtual service that spans
+ // across multiple underlying networks, we end up with subscription entries for the
+ // underlying networks that need to be hidden from the user in the UI.
+ for (Iterator<SubscriptionInfo> iter = subscriptions.iterator(); iter.hasNext(); ) {
+ SubscriptionInfo info = iter.next();
+ if (TextUtils.isEmpty(info.getMncString())) {
+ iter.remove();
+ }
+ }
+ return subscriptions;
+ }
+
+ private static boolean isInactiveInsertedPSim(UiccSlotInfo slotInfo) {
+ return !slotInfo.getIsEuicc() && !slotInfo.getIsActive()
+ && slotInfo.getCardStateInfo() == CARD_STATE_INFO_PRESENT;
+ }
+}
diff --git a/src/com/android/car/settings/network/SubscriptionsChangeListener.java b/src/com/android/car/settings/network/SubscriptionsChangeListener.java
new file mode 100644
index 0000000..dc77fe9
--- /dev/null
+++ b/src/com/android/car/settings/network/SubscriptionsChangeListener.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.network;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.telephony.SubscriptionManager;
+
+import com.android.internal.telephony.TelephonyIntents;
+
+/** Listens to changes in availability of telephony subscriptions. */
+public class SubscriptionsChangeListener {
+
+ /** Client defined action to trigger when there are subscription changes. */
+ public interface SubscriptionsChangeAction {
+ /** Action taken when subscriptions changed. */
+ void onSubscriptionsChanged();
+ }
+
+ private static final IntentFilter RADIO_TECH_CHANGED_FILTER = new IntentFilter(
+ TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED);
+
+ private final Context mContext;
+ private final SubscriptionManager mSubscriptionManager;
+ private final SubscriptionsChangeAction mSubscriptionsChangeAction;
+
+ private final SubscriptionManager.OnSubscriptionsChangedListener mSubscriptionsChangedListener =
+ new SubscriptionManager.OnSubscriptionsChangedListener() {
+ @Override
+ public void onSubscriptionsChanged() {
+ subscriptionsChangedCallback();
+ }
+ };
+
+ private final BroadcastReceiver mRadioTechChangeReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (!isInitialStickyBroadcast()) {
+ subscriptionsChangedCallback();
+ }
+ }
+ };
+
+ public SubscriptionsChangeListener(Context context, SubscriptionsChangeAction action) {
+ mContext = context;
+ mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
+ mSubscriptionsChangeAction = action;
+ }
+
+ /** Starts the various listeners necessary to track changes in telephony subscriptions. */
+ public void start() {
+ mSubscriptionManager.addOnSubscriptionsChangedListener(mSubscriptionsChangedListener);
+ mContext.registerReceiver(mRadioTechChangeReceiver, RADIO_TECH_CHANGED_FILTER);
+ }
+
+ /** Stops the various listeners necessary to track changes in telephony subscriptions. */
+ public void stop() {
+ mSubscriptionManager.removeOnSubscriptionsChangedListener(mSubscriptionsChangedListener);
+ mContext.unregisterReceiver(mRadioTechChangeReceiver);
+ }
+
+ private void subscriptionsChangedCallback() {
+ if (mSubscriptionsChangeAction != null) {
+ mSubscriptionsChangeAction.onSubscriptionsChanged();
+ }
+ }
+}
diff --git a/src/com/android/car/settings/quicksettings/BluetoothTile.java b/src/com/android/car/settings/quicksettings/BluetoothTile.java
index 63caccf..889e525 100644
--- a/src/com/android/car/settings/quicksettings/BluetoothTile.java
+++ b/src/com/android/car/settings/quicksettings/BluetoothTile.java
@@ -16,6 +16,8 @@
package com.android.car.settings.quicksettings;
+import android.annotation.DrawableRes;
+import android.annotation.Nullable;
import android.bluetooth.BluetoothAdapter;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -24,9 +26,6 @@
import android.graphics.drawable.Drawable;
import android.view.View;
-import androidx.annotation.DrawableRes;
-import androidx.annotation.Nullable;
-
import com.android.car.settings.R;
import com.android.car.settings.bluetooth.BluetoothSettingsFragment;
import com.android.car.settings.common.FragmentController;
@@ -94,10 +93,6 @@
FragmentController fragmentController) {
mStateChangedListener = stateChangedListener;
mContext = context;
- IntentFilter mBtStateChangeFilter = new IntentFilter();
- mBtStateChangeFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
- mBtStateChangeFilter.addAction(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED);
- mContext.registerReceiver(mBtStateReceiver, mBtStateChangeFilter);
mLocalManager = LocalBluetoothManager.getInstance(
mContext, /* onInitCallback= */ null);
if (mLocalManager == null) {
@@ -147,6 +142,14 @@
}
@Override
+ public void start() {
+ IntentFilter mBtStateChangeFilter = new IntentFilter();
+ mBtStateChangeFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
+ mBtStateChangeFilter.addAction(BluetoothAdapter.ACTION_CONNECTION_STATE_CHANGED);
+ mContext.registerReceiver(mBtStateReceiver, mBtStateChangeFilter);
+ }
+
+ @Override
public void stop() {
mContext.unregisterReceiver(mBtStateReceiver);
}
diff --git a/src/com/android/car/settings/quicksettings/BrightnessTile.java b/src/com/android/car/settings/quicksettings/BrightnessTile.java
index 592e138..2ffab9f 100644
--- a/src/com/android/car/settings/quicksettings/BrightnessTile.java
+++ b/src/com/android/car/settings/quicksettings/BrightnessTile.java
@@ -71,8 +71,11 @@
}
@Override
+ public void start() {
+ }
+
+ @Override
public void stop() {
- // nothing to do.
}
@Override
diff --git a/src/com/android/car/settings/quicksettings/CelluarTile.java b/src/com/android/car/settings/quicksettings/CelluarTile.java
index 8471e1e..907a5a3 100644
--- a/src/com/android/car/settings/quicksettings/CelluarTile.java
+++ b/src/com/android/car/settings/quicksettings/CelluarTile.java
@@ -16,13 +16,12 @@
package com.android.car.settings.quicksettings;
+import android.annotation.Nullable;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.telephony.TelephonyManager;
import android.view.View;
-import androidx.annotation.Nullable;
-
import com.android.car.settings.R;
import com.android.settingslib.net.DataUsageController;
@@ -83,6 +82,10 @@
}
@Override
+ public void start() {
+ }
+
+ @Override
public void stop() {
}
diff --git a/src/com/android/car/settings/quicksettings/DayNightTile.java b/src/com/android/car/settings/quicksettings/DayNightTile.java
index 5f0df2c..4e05fd8 100644
--- a/src/com/android/car/settings/quicksettings/DayNightTile.java
+++ b/src/com/android/car/settings/quicksettings/DayNightTile.java
@@ -16,14 +16,13 @@
package com.android.car.settings.quicksettings;
+import android.annotation.DrawableRes;
+import android.annotation.Nullable;
import android.app.UiModeManager;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.View;
-import androidx.annotation.DrawableRes;
-import androidx.annotation.Nullable;
-
import com.android.car.settings.R;
import com.android.car.settings.common.FragmentController;
import com.android.car.settings.display.DisplaySettingsFragment;
@@ -90,6 +89,10 @@
}
@Override
+ public void start() {
+ }
+
+ @Override
public void stop() {
}
diff --git a/src/com/android/car/settings/quicksettings/QuickSettingFragment.java b/src/com/android/car/settings/quicksettings/QuickSettingFragment.java
index 2300263..1001e87 100644
--- a/src/com/android/car/settings/quicksettings/QuickSettingFragment.java
+++ b/src/com/android/car/settings/quicksettings/QuickSettingFragment.java
@@ -155,6 +155,7 @@
public void onStart() {
super.onStart();
+ mGridAdapter.start();
mUserSwitcherBtn.setVisibility(showUserSwitcher() ? View.VISIBLE : View.INVISIBLE);
// In non-user builds (that is, user-debug, eng, etc), display some version information.
if (!Build.IS_USER) {
diff --git a/src/com/android/car/settings/quicksettings/QuickSettingGridAdapter.java b/src/com/android/car/settings/quicksettings/QuickSettingGridAdapter.java
index 89b0232..412c3bd 100644
--- a/src/com/android/car/settings/quicksettings/QuickSettingGridAdapter.java
+++ b/src/com/android/car/settings/quicksettings/QuickSettingGridAdapter.java
@@ -16,6 +16,7 @@
package com.android.car.settings.quicksettings;
+import android.annotation.Nullable;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
@@ -26,7 +27,6 @@
import android.widget.SeekBar;
import android.widget.TextView;
-import androidx.annotation.Nullable;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -76,6 +76,11 @@
}
/**
+ * Called when activity owning this tile's onStart() gets called.
+ */
+ void start();
+
+ /**
* Called when activity owning this tile's onStop() gets called.
*/
void stop();
@@ -102,6 +107,11 @@
interface SeekbarTile extends SeekBar.OnSeekBarChangeListener {
/**
+ * Called when activity owning this tile's onStart() gets called.
+ */
+ void start();
+
+ /**
* Called when activity owning this tile's onStop() gets called.
*/
void stop();
@@ -123,6 +133,15 @@
return this;
}
+ void start() {
+ for (SeekbarTile tile : mSeekbarTiles) {
+ tile.start();
+ }
+ for (Tile tile : mTiles) {
+ tile.start();
+ }
+ }
+
void stop() {
for (SeekbarTile tile : mSeekbarTiles) {
tile.stop();
diff --git a/src/com/android/car/settings/quicksettings/WifiTile.java b/src/com/android/car/settings/quicksettings/WifiTile.java
index a6272f4..304f6e9 100644
--- a/src/com/android/car/settings/quicksettings/WifiTile.java
+++ b/src/com/android/car/settings/quicksettings/WifiTile.java
@@ -16,13 +16,12 @@
package com.android.car.settings.quicksettings;
+import android.annotation.DrawableRes;
+import android.annotation.Nullable;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.View;
-import androidx.annotation.DrawableRes;
-import androidx.annotation.Nullable;
-
import com.android.car.settings.R;
import com.android.car.settings.common.FragmentController;
import com.android.car.settings.wifi.CarWifiManager;
@@ -57,8 +56,6 @@
return true;
};
mCarWifiManager = new CarWifiManager(context);
- mCarWifiManager.addListener(this);
- mCarWifiManager.start();
mStateChangedListener = stateChangedListener;
// init icon and text etc.
updateAccessPointSsid();
@@ -92,6 +89,12 @@
}
@Override
+ public void start() {
+ mCarWifiManager.addListener(this);
+ mCarWifiManager.start();
+ }
+
+ @Override
public void stop() {
mCarWifiManager.removeListener(this);
mCarWifiManager.stop();
diff --git a/src/com/android/car/settings/security/AddTrustedDeviceActivity.java b/src/com/android/car/settings/security/AddTrustedDeviceActivity.java
new file mode 100644
index 0000000..b00595e
--- /dev/null
+++ b/src/com/android/car/settings/security/AddTrustedDeviceActivity.java
@@ -0,0 +1,246 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.security;
+
+import android.bluetooth.BluetoothDevice;
+import android.car.Car;
+import android.car.trust.CarTrustAgentEnrollmentManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.os.Bundle;
+import android.widget.Toast;
+
+import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.BaseCarSettingsActivity;
+import com.android.car.settings.common.Logger;
+
+/**
+ * Activity which manages the enrollment process and communicates between
+ * CarTrustAgentEnrollmentService and fragments.
+ *
+ * <p>The flow when user want to enroll a trusted device should be as follows:
+ * <ol>
+ * <li> {@link CarTrustAgentEnrollmentManager#setEnrollmentCallback(
+ *CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback)}
+ * <li> {@link CarTrustAgentEnrollmentManager#setBleCallback(
+ *CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback)}
+ * <li> {@link CarTrustAgentEnrollmentManager#startEnrollmentAdvertising()}
+ * <li> wait for {@link CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback#
+ * onBleEnrollmentDeviceDisconnected(BluetoothDevice)}
+ * <li> {@link CarTrustAgentEnrollmentManager#stopEnrollmentAdvertising()}
+ * <li> wait for
+ * {@link CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback#onAuthStringAvailable(
+ *BluetoothDevice, String)} to show the pairing code dialog to user
+ * <li> {@link CarTrustAgentEnrollmentManager#enrollmentHandshakeAccepted(BluetoothDevice)} after
+ * user confirms the pairing code
+ * <li> wait for
+ * {@link CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback#onEscrowTokenAdded(long)}
+ * <li> {@link #getCheckLockFragment()}, wait user to input the password
+ * <li> After user enter the correct password, wait for
+ * {@link CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback#
+ * onEscrowTokenActiveStateChanged(long, boolean)}
+ * <li> After get the results, finish the activity
+ * </ol>
+ */
+public class AddTrustedDeviceActivity extends BaseCarSettingsActivity implements CheckLockListener {
+ private static final Logger LOG = new Logger(AddTrustedDeviceActivity.class);
+ private static final String BLUETOOTH_DEVICE_KEY = "bluetoothDevice";
+ private static final String CURRENT_HANDLE_KEY = "currentHandle";
+ private Car mCar;
+ private BluetoothDevice mBluetoothDevice;
+ private long mHandle;
+ private CarUserManagerHelper mCarUserManagerHelper;
+ @Nullable
+ private CarTrustAgentEnrollmentManager mCarTrustAgentEnrollmentManager;
+
+ private final CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback
+ mCarTrustAgentEnrollmentCallback =
+ new CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback() {
+
+ @Override
+ public void onEnrollmentHandshakeFailure(BluetoothDevice device, int errorCode) {
+ LOG.e("Trust agent service time out");
+ }
+
+ @Override
+ public void onAuthStringAvailable(BluetoothDevice device, String authString) {
+ ConfirmPairingCodeDialog dialog = ConfirmPairingCodeDialog.newInstance(
+ authString);
+ dialog.setConfirmPairingCodeListener(mConfirmParingCodeListener);
+ showDialog(dialog, ConfirmPairingCodeDialog.TAG);
+ }
+
+ @Override
+ public void onEscrowTokenAdded(long handle) {
+ // User need to enter the correct authentication of the car to activate the
+ // added token.
+ mHandle = handle;
+ launchFragment(getCheckLockFragment());
+ }
+
+ @Override
+ public void onEscrowTokenRemoved(long handle) {
+ }
+
+ @Override
+ public void onEscrowTokenActiveStateChanged(long handle, boolean active) {
+ if (active) {
+ onDeviceAddedSuccessfully();
+ } else {
+ LOG.d(handle + " has not been activated");
+ }
+ finish();
+ }
+ };
+
+ private final CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback
+ mCarTrustAgentBleCallback =
+ new CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback() {
+ @Override
+ public void onBleEnrollmentDeviceConnected(BluetoothDevice device) {
+ mBluetoothDevice = device;
+ mCarTrustAgentEnrollmentManager.stopEnrollmentAdvertising();
+ }
+
+ @Override
+ public void onBleEnrollmentDeviceDisconnected(BluetoothDevice device) {
+ Toast.makeText(AddTrustedDeviceActivity.this, getResources().getString(
+ R.string.trusted_device_disconnected_toast),
+ Toast.LENGTH_SHORT).show();
+ mBluetoothDevice = null;
+ finish();
+ }
+
+ @Override
+ public void onEnrollmentAdvertisingStarted() {
+ }
+
+ @Override
+ public void onEnrollmentAdvertisingFailed() {
+ finish();
+ }
+ };
+
+ @VisibleForTesting
+ final ConfirmPairingCodeDialog.ConfirmPairingCodeListener mConfirmParingCodeListener =
+ new ConfirmPairingCodeDialog.ConfirmPairingCodeListener() {
+ public void onConfirmPairingCode() {
+ mCarTrustAgentEnrollmentManager.enrollmentHandshakeAccepted(mBluetoothDevice);
+ }
+
+ public void onDialogCancelled() {
+ finish();
+ }
+ };
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ mCar = Car.createCar(this);
+ mCarTrustAgentEnrollmentManager = (CarTrustAgentEnrollmentManager) mCar.getCarManager(
+ Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE);
+ if (mCarTrustAgentEnrollmentManager == null) {
+ LOG.e("CarTrustAgentEnrollmentManager is null");
+ finish();
+ }
+ mCarUserManagerHelper = new CarUserManagerHelper(this);
+ if (savedInstanceState != null) {
+ mBluetoothDevice = savedInstanceState.getParcelable(BLUETOOTH_DEVICE_KEY);
+ mHandle = savedInstanceState.getLong(CURRENT_HANDLE_KEY);
+ }
+ ConfirmPairingCodeDialog dialog =
+ (ConfirmPairingCodeDialog) findDialogByTag(ConfirmPairingCodeDialog.TAG);
+ if (dialog != null) {
+ dialog.setConfirmPairingCodeListener(mConfirmParingCodeListener);
+ }
+ }
+
+
+ @Override
+ protected void onStart() {
+ super.onStart();
+ if (mHandle != 0) {
+ if (mCarTrustAgentEnrollmentManager.isEscrowTokenActive(mHandle,
+ mCarUserManagerHelper.getCurrentProcessUserId())) {
+ onDeviceAddedSuccessfully();
+ finish();
+ }
+ }
+ if (mBluetoothDevice == null) {
+ mCarTrustAgentEnrollmentManager.startEnrollmentAdvertising();
+ }
+ mCarTrustAgentEnrollmentManager.setEnrollmentCallback(mCarTrustAgentEnrollmentCallback);
+ mCarTrustAgentEnrollmentManager.setBleCallback(mCarTrustAgentBleCallback);
+
+ }
+
+ @Override
+ protected void onPause() {
+ super.onPause();
+ // When activity is pausing not because of a configuration change
+ if (getChangingConfigurations() == 0) {
+ mCarTrustAgentEnrollmentManager.terminateEnrollmentHandshake();
+ }
+ }
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ mCarTrustAgentEnrollmentManager.setBleCallback(null);
+ mCarTrustAgentEnrollmentManager.setEnrollmentCallback(null);
+ mCarTrustAgentEnrollmentManager.stopEnrollmentAdvertising();
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle savedInstanceState) {
+ super.onSaveInstanceState(savedInstanceState);
+ savedInstanceState.putParcelable(BLUETOOTH_DEVICE_KEY, mBluetoothDevice);
+ savedInstanceState.putLong(CURRENT_HANDLE_KEY, mHandle);
+ }
+
+
+ @Override
+ @Nullable
+ protected Fragment getInitialFragment() {
+ Fragment currentFragment = getSupportFragmentManager().findFragmentById(
+ R.id.fragment_container);
+ return currentFragment == null ? new AddTrustedDeviceProgressFragment() : currentFragment;
+ }
+
+ private Fragment getCheckLockFragment() {
+ return ConfirmPasswordFragmentFactory.getFragment(/* context= */ this);
+ }
+
+ @Override
+ public void onLockVerified(byte[] lock) {
+ getSupportFragmentManager().popBackStack();
+ }
+
+ @Override
+ public void onBackPressed() {
+ finish();
+ }
+
+ private void onDeviceAddedSuccessfully() {
+ Toast.makeText(this,
+ getResources().getString(R.string.trusted_device_success_enrollment_toast),
+ Toast.LENGTH_LONG).show();
+ }
+}
diff --git a/src/com/android/car/settings/security/AddTrustedDevicePreferenceController.java b/src/com/android/car/settings/security/AddTrustedDevicePreferenceController.java
new file mode 100644
index 0000000..b41764e
--- /dev/null
+++ b/src/com/android/car/settings/security/AddTrustedDevicePreferenceController.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.security;
+
+import static android.os.UserManager.DISALLOW_BLUETOOTH;
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
+import android.app.admin.DevicePolicyManager;
+import android.bluetooth.BluetoothAdapter;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.content.pm.PackageManager;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+import com.android.internal.widget.LockPatternUtils;
+
+/**
+ * Business logic which controls whether the preference is clickeble according to the password
+ * quality of current user.
+ */
+public class AddTrustedDevicePreferenceController extends PreferenceController<Preference> {
+ private CarUserManagerHelper mCarUserManagerHelper;
+ private LockPatternUtils mLockPatternUtils;
+
+ public AddTrustedDevicePreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
+ mCarUserManagerHelper = new CarUserManagerHelper(context);
+ mLockPatternUtils = new LockPatternUtils(context);
+ }
+
+ @Override
+ protected int getAvailabilityStatus() {
+ if (!getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH)) {
+ return UNSUPPORTED_ON_DEVICE;
+ }
+ return isUserRestricted() ? DISABLED_FOR_USER : AVAILABLE;
+ }
+
+ private boolean isUserRestricted() {
+ return mCarUserManagerHelper.isCurrentProcessUserHasRestriction(DISALLOW_BLUETOOTH)
+ || mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+ DISALLOW_CONFIG_BLUETOOTH);
+ }
+
+ @Override
+ protected void updateState(Preference preference) {
+ preference.setSummary(
+ BluetoothAdapter.getDefaultAdapter().isEnabled() ? "" : getContext().getString(
+ R.string.add_device_summary));
+ preference.setEnabled(hasPassword());
+ }
+
+ private boolean hasPassword() {
+ return mLockPatternUtils.getKeyguardStoredPasswordQuality(
+ mCarUserManagerHelper.getCurrentProcessUserId())
+ != DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
+ }
+
+ @Override
+ protected Class<Preference> getPreferenceType() {
+ return Preference.class;
+ }
+
+ @Override
+ public boolean handlePreferenceClicked(Preference preference) {
+ // Enable the adapter if it is not on (user is notified via summary message).
+ BluetoothAdapter.getDefaultAdapter().enable();
+ /** Need to start {@link AddTrustedDeviceActivity} after the click. */
+ return false;
+ }
+}
diff --git a/src/com/android/car/settings/security/AddTrustedDeviceProgressFragment.java b/src/com/android/car/settings/security/AddTrustedDeviceProgressFragment.java
new file mode 100644
index 0000000..ae4eaf0
--- /dev/null
+++ b/src/com/android/car/settings/security/AddTrustedDeviceProgressFragment.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.car.settings.security;
+
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ProgressBar;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.SettingsFragment;
+
+/**
+ * Add trusted device fragment which displays the progress and show the companion app information
+ * to user.
+ */
+public class AddTrustedDeviceProgressFragment extends SettingsFragment {
+ private ProgressBar mProgressBar;
+
+ @Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.add_trusted_device_progress_fragment;
+ }
+
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ mProgressBar = requireActivity().findViewById(R.id.progress_bar);
+ mProgressBar.setVisibility(View.VISIBLE);
+ }
+
+ @Override
+ public void onStart() {
+ super.onStart();
+ mProgressBar.setVisibility(View.VISIBLE);
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ mProgressBar.setVisibility(View.GONE);
+ }
+}
+
diff --git a/src/com/android/car/settings/security/CheckLockActivity.java b/src/com/android/car/settings/security/CheckLockActivity.java
index 85a58c3..66c3914 100644
--- a/src/com/android/car/settings/security/CheckLockActivity.java
+++ b/src/com/android/car/settings/security/CheckLockActivity.java
@@ -16,60 +16,26 @@
package com.android.car.settings.security;
-import android.app.admin.DevicePolicyManager;
-import android.os.Bundle;
-import android.os.UserHandle;
-
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.android.car.settings.common.BaseCarSettingsActivity;
-import com.android.car.settings.common.Logger;
-import com.android.internal.widget.LockPatternUtils;
/**
* Prompts the user to enter their pin, password, or pattern lock (if set) and returns
* {@link #RESULT_OK} on a successful entry or immediately if the user has no lock setup.
*/
public class CheckLockActivity extends BaseCarSettingsActivity implements CheckLockListener {
-
- private static final Logger LOG = new Logger(CheckLockActivity.class);
-
@Override
@Nullable
protected Fragment getInitialFragment() {
- Fragment fragment;
- int passwordQuality = new LockPatternUtils(this).getKeyguardStoredPasswordQuality(
- UserHandle.myUserId());
- switch (passwordQuality) {
- case DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED:
- // User has not set a password.
- setResult(RESULT_OK);
- finish();
- return null;
- case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
- fragment = new ConfirmLockPatternFragment();
- break;
- case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
- case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
- fragment = ConfirmLockPinPasswordFragment.newPinInstance();
- break;
- case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC:
- case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC:
- fragment = ConfirmLockPinPasswordFragment.newPasswordInstance();
- break;
- default:
- LOG.e("Unexpected password quality: " + String.valueOf(passwordQuality));
- fragment = ConfirmLockPinPasswordFragment.newPasswordInstance();
+ Fragment lockFragment = ConfirmPasswordFragmentFactory.getFragment(/* context= */ this);
+ if (lockFragment == null) {
+ // User has not set a password
+ setResult(RESULT_OK);
+ finish();
}
-
- Bundle bundle = fragment.getArguments();
- if (bundle == null) {
- bundle = new Bundle();
- }
- bundle.putInt(ChooseLockTypeFragment.EXTRA_CURRENT_PASSWORD_QUALITY, passwordQuality);
- fragment.setArguments(bundle);
- return fragment;
+ return lockFragment;
}
@Override
diff --git a/src/com/android/car/settings/security/ChooseDeviceInstructionPreferenceController.java b/src/com/android/car/settings/security/ChooseDeviceInstructionPreferenceController.java
new file mode 100644
index 0000000..62d5b66
--- /dev/null
+++ b/src/com/android/car/settings/security/ChooseDeviceInstructionPreferenceController.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.security;
+
+import android.bluetooth.BluetoothAdapter;
+import android.car.drivingstate.CarUxRestrictions;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Displays the name of the local Bluetooth adapter.
+ */
+public class ChooseDeviceInstructionPreferenceController extends PreferenceController<Preference> {
+
+ public ChooseDeviceInstructionPreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
+ }
+
+ @Override
+ protected Class<Preference> getPreferenceType() {
+ return Preference.class;
+ }
+
+ @Override
+ protected void updateState(Preference preference) {
+ preference.setTitle(getContext().getString(R.string.trusted_device_select_device,
+ BluetoothAdapter.getDefaultAdapter().getName()));
+ }
+}
diff --git a/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerFragment.java b/src/com/android/car/settings/security/ChooseTrustedDeviceFragment.java
similarity index 76%
rename from src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerFragment.java
rename to src/com/android/car/settings/security/ChooseTrustedDeviceFragment.java
index 78c1473..f5f976e 100644
--- a/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerFragment.java
+++ b/src/com/android/car/settings/security/ChooseTrustedDeviceFragment.java
@@ -13,20 +13,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-package com.android.car.settings.applications.defaultapps;
+package com.android.car.settings.security;
import androidx.annotation.XmlRes;
import com.android.car.settings.R;
import com.android.car.settings.common.SettingsFragment;
-/** Shows the option to choose the default assistant. */
-public class DefaultAssistantPickerFragment extends SettingsFragment {
-
+/**
+ * Fragment which contains trusted device list and add trusted device button.
+ */
+public class ChooseTrustedDeviceFragment extends SettingsFragment {
@Override
@XmlRes
protected int getPreferenceScreenResId() {
- return R.xml.default_assistant_picker_fragment;
+ return R.xml.choose_trusted_device_fragment;
}
}
diff --git a/src/com/android/car/settings/security/ConfirmPairingCodeDialog.java b/src/com/android/car/settings/security/ConfirmPairingCodeDialog.java
new file mode 100644
index 0000000..902caf2
--- /dev/null
+++ b/src/com/android/car/settings/security/ConfirmPairingCodeDialog.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.security;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.os.Bundle;
+
+import androidx.fragment.app.DialogFragment;
+
+import com.android.car.settings.R;
+
+/**
+ * Dialog to confirm pairing code.
+ */
+public class ConfirmPairingCodeDialog extends DialogFragment {
+ /** Identifier for the dialog which confirms the pairing code. */
+ public static final String TAG = "confirm_pairing_code_dialog";
+ private static final String PAIRING_CODE_KEY = "pairingCode";
+ private ConfirmPairingCodeListener mConfirmPairingCodeListener;
+
+ /**
+ * Factory method for creating a ConfirmPairingCodeFragment
+ *
+ * @param pairingCode the pairing code sent by the connected device
+ */
+ public static ConfirmPairingCodeDialog newInstance(String pairingCode) {
+ Bundle args = new Bundle();
+ args.putString(PAIRING_CODE_KEY, pairingCode);
+
+ ConfirmPairingCodeDialog dialog = new ConfirmPairingCodeDialog();
+ dialog.setArguments(args);
+ return dialog;
+ }
+
+ /** Sets a listener to act when a user confirms pairing code. */
+ public void setConfirmPairingCodeListener(ConfirmPairingCodeListener listener) {
+ mConfirmPairingCodeListener = listener;
+ }
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ Bundle args = getArguments();
+ String pairingCode = args.getString(PAIRING_CODE_KEY);
+ return new AlertDialog.Builder(getContext())
+ .setTitle(getContext().getString(R.string.trusted_device_pairing_code_dialog_title))
+ .setMessage(pairingCode)
+ .setPositiveButton(R.string.trusted_device_confirm_button, (dialog, which) -> {
+ if (mConfirmPairingCodeListener != null) {
+ mConfirmPairingCodeListener.onConfirmPairingCode();
+ }
+ })
+ .setNegativeButton(android.R.string.cancel, (dialog, which) -> {
+ if (mConfirmPairingCodeListener != null) {
+ mConfirmPairingCodeListener.onDialogCancelled();
+ }
+ })
+ .create();
+ }
+
+ /** A listener for when user interacts with this dialog. */
+ public interface ConfirmPairingCodeListener {
+ /** Defines the actions to take when a user confirms the pairing code. */
+ void onConfirmPairingCode();
+
+ /** Defines the actions to take when a user cancel confirming the pairing code. */
+ void onDialogCancelled();
+ }
+
+}
diff --git a/src/com/android/car/settings/security/ConfirmPasswordFragmentFactory.java b/src/com/android/car/settings/security/ConfirmPasswordFragmentFactory.java
new file mode 100644
index 0000000..7cba62e
--- /dev/null
+++ b/src/com/android/car/settings/security/ConfirmPasswordFragmentFactory.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.security;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.os.Bundle;
+
+import androidx.annotation.Nullable;
+import androidx.fragment.app.Fragment;
+
+import com.android.car.settings.common.Logger;
+import com.android.internal.widget.LockPatternUtils;
+
+/**
+ * Factory class which generate password fragment for current user.
+ */
+public class ConfirmPasswordFragmentFactory {
+
+ private static final Logger LOG = new Logger(ConfirmPasswordFragmentFactory.class);
+
+ /**
+ * Gets the correct password fragment of current user, returns the corresponding password
+ * fragment of current user
+ *
+ * @return {@code null} if no password is set for the current user.
+ */
+ @Nullable
+ public static Fragment getFragment(Context context) {
+ Fragment fragment;
+ int passwordQuality = new LockPatternUtils(context).getKeyguardStoredPasswordQuality(
+ new CarUserManagerHelper(context).getCurrentProcessUserId());
+ switch (passwordQuality) {
+ case DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED:
+ // User has not set a password.
+ return null;
+ case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
+ fragment = new ConfirmLockPatternFragment();
+ break;
+ case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
+ case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
+ fragment = ConfirmLockPinPasswordFragment.newPinInstance();
+ break;
+ case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC:
+ case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC:
+ fragment = ConfirmLockPinPasswordFragment.newPasswordInstance();
+ break;
+ default:
+ LOG.e("Unexpected password quality: " + passwordQuality);
+ fragment = ConfirmLockPinPasswordFragment.newPasswordInstance();
+ }
+
+ Bundle bundle = fragment.getArguments();
+ if (bundle == null) {
+ bundle = new Bundle();
+ }
+ bundle.putInt(ChooseLockTypeFragment.EXTRA_CURRENT_PASSWORD_QUALITY, passwordQuality);
+ fragment.setArguments(bundle);
+ return fragment;
+ }
+}
diff --git a/src/com/android/car/settings/security/ConfirmRemoveDeviceDialog.java b/src/com/android/car/settings/security/ConfirmRemoveDeviceDialog.java
new file mode 100644
index 0000000..38e60bb
--- /dev/null
+++ b/src/com/android/car/settings/security/ConfirmRemoveDeviceDialog.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.security;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.os.Bundle;
+
+import androidx.fragment.app.DialogFragment;
+
+import com.android.car.settings.R;
+
+/**
+ * Dialog to confirm removing a trusted device.
+ */
+public class ConfirmRemoveDeviceDialog extends DialogFragment {
+
+ /** Identifier for the dialog which confirms removing a trusted device. */
+ public static final String TAG = "confirm_remove_device_dialog";
+ private static final String DEVICE_NAME_KEY = "deviceName";
+ private static final String HANDLE_KEY = "handle";
+ private ConfirmRemoveDeviceListener mConfirmRemoveDeviceListener;
+
+ /**
+ * Factory method for creating a {@link ConfirmRemoveDeviceDialog}
+ *
+ * @param deviceName the name of current clicked device
+ * @param handle the handle of current clicked device and is used to identify the device
+ */
+ public static ConfirmRemoveDeviceDialog newInstance(String deviceName, long handle) {
+ Bundle args = new Bundle();
+ args.putString(DEVICE_NAME_KEY, deviceName);
+ args.putLong(HANDLE_KEY, handle);
+
+ ConfirmRemoveDeviceDialog dialog = new ConfirmRemoveDeviceDialog();
+ dialog.setArguments(args);
+ return dialog;
+ }
+
+ /** Sets a listener to act when a user confirms removing the trusted device. */
+ public void setConfirmRemoveDeviceListener(ConfirmRemoveDeviceListener listener) {
+ mConfirmRemoveDeviceListener = listener;
+ }
+
+ @Override
+ public Dialog onCreateDialog(Bundle savedInstanceState) {
+ Bundle args = getArguments();
+ String name = args.getString(DEVICE_NAME_KEY);
+ long handle = args.getLong(HANDLE_KEY);
+ return new AlertDialog.Builder(getContext())
+ .setTitle(name)
+ .setMessage(getContext().getString(R.string.remove_device_message, name, name))
+ .setPositiveButton(R.string.trusted_device_remove_button, (dialog, which) -> {
+ if (mConfirmRemoveDeviceListener != null) {
+ mConfirmRemoveDeviceListener.onConfirmRemoveDevice(handle);
+ }
+ })
+ .setNegativeButton(R.string.trusted_device_done_button, /* listener= */ null)
+ .create();
+ }
+
+ /** A listener for when user confirms removing a trusted device. */
+ public interface ConfirmRemoveDeviceListener {
+ /** Defines the actions to take when a user confirms removing the trusted device. */
+ void onConfirmRemoveDevice(long handle);
+ }
+
+}
diff --git a/src/com/android/car/settings/security/SaveLockWorkerBase.java b/src/com/android/car/settings/security/SaveLockWorkerBase.java
index 8fdcb64..da267ea 100644
--- a/src/com/android/car/settings/security/SaveLockWorkerBase.java
+++ b/src/com/android/car/settings/security/SaveLockWorkerBase.java
@@ -16,11 +16,11 @@
package com.android.car.settings.security;
+import android.annotation.WorkerThread;
import android.os.AsyncTask;
import android.os.Bundle;
import androidx.annotation.VisibleForTesting;
-import androidx.annotation.WorkerThread;
import androidx.fragment.app.Fragment;
import com.android.car.settings.common.Logger;
diff --git a/src/com/android/car/settings/applications/DefaultApplicationsSettingsFragment.java b/src/com/android/car/settings/security/SecuritySettingsFragment.java
similarity index 68%
rename from src/com/android/car/settings/applications/DefaultApplicationsSettingsFragment.java
rename to src/com/android/car/settings/security/SecuritySettingsFragment.java
index 3b7eb58..ddb314e 100644
--- a/src/com/android/car/settings/applications/DefaultApplicationsSettingsFragment.java
+++ b/src/com/android/car/settings/security/SecuritySettingsFragment.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright (C) 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,19 +14,18 @@
* limitations under the License.
*/
-package com.android.car.settings.applications;
-
-import androidx.annotation.XmlRes;
+package com.android.car.settings.security;
import com.android.car.settings.R;
import com.android.car.settings.common.SettingsFragment;
-/** Shows the default applications settings. */
-public class DefaultApplicationsSettingsFragment extends SettingsFragment {
+/**
+ * Security home page which includes "choose lock type" and "trusted device"
+ */
+public class SecuritySettingsFragment extends SettingsFragment {
@Override
- @XmlRes
protected int getPreferenceScreenResId() {
- return R.xml.default_applications_settings_fragment;
+ return R.xml.security_settings_fragment;
}
}
diff --git a/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceController.java b/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceController.java
new file mode 100644
index 0000000..7efd671
--- /dev/null
+++ b/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceController.java
@@ -0,0 +1,83 @@
+/*
+ * 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.car.settings.security;
+
+
+import android.annotation.Nullable;
+import android.car.Car;
+import android.car.CarNotConnectedException;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.trust.CarTrustAgentEnrollmentManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.preference.Preference;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+
+/**
+ * Business logic for trusted device preference.
+ */
+public class TrustedDeviceEntryPreferenceController extends PreferenceController<Preference> {
+
+ private static final Logger LOG = new Logger(TrustedDeviceEntryPreferenceController.class);
+ private final Car mCar;
+ private final CarUserManagerHelper mCarUserManagerHelper;
+ @Nullable
+ private CarTrustAgentEnrollmentManager mCarTrustAgentEnrollmentManager;
+
+ public TrustedDeviceEntryPreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
+ mCar = Car.createCar(context);
+ mCarUserManagerHelper = new CarUserManagerHelper(context);
+ try {
+ mCarTrustAgentEnrollmentManager = (CarTrustAgentEnrollmentManager) mCar.getCarManager(
+ Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE);
+ } catch (CarNotConnectedException e) {
+ LOG.e(e.getMessage(), e);
+ }
+ }
+
+ @Override
+ protected Class<Preference> getPreferenceType() {
+ return Preference.class;
+ }
+
+ @Override
+ protected void updateState(Preference preference) {
+ int listSize = 0;
+ try {
+ listSize = mCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+ mCarUserManagerHelper.getCurrentProcessUserId()).size();
+ } catch (CarNotConnectedException e) {
+ LOG.e(e.getMessage(), e);
+ }
+ preference.setSummary(
+ getContext().getResources().getQuantityString(R.plurals.trusted_device_subtitle,
+ listSize, listSize));
+ }
+
+ @Override
+ protected boolean handlePreferenceClicked(Preference preference) {
+ getFragmentController().launchFragment(new ChooseTrustedDeviceFragment());
+ return true;
+ }
+}
diff --git a/src/com/android/car/settings/security/TrustedDeviceListPreferenceController.java b/src/com/android/car/settings/security/TrustedDeviceListPreferenceController.java
new file mode 100644
index 0000000..bab47ed
--- /dev/null
+++ b/src/com/android/car/settings/security/TrustedDeviceListPreferenceController.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.security;
+
+import android.annotation.Nullable;
+import android.app.admin.DevicePolicyManager;
+import android.bluetooth.BluetoothDevice;
+import android.car.Car;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.trust.CarTrustAgentEnrollmentManager;
+import android.car.trust.TrustedDeviceInfo;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.annotation.VisibleForTesting;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.R;
+import com.android.car.settings.common.FragmentController;
+import com.android.car.settings.common.Logger;
+import com.android.car.settings.common.PreferenceController;
+import com.android.internal.widget.LockPatternUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Business logic of trusted device list page
+ */
+public class TrustedDeviceListPreferenceController extends PreferenceController<PreferenceGroup> {
+ private static final Logger LOG = new Logger(TrustedDeviceListPreferenceController.class);
+ private final CarUserManagerHelper mCarUserManagerHelper;
+ private final LockPatternUtils mLockPatternUtils;
+ private final Car mCar;
+ @Nullable
+ private CarTrustAgentEnrollmentManager mCarTrustAgentEnrollmentManager;
+ private final CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback
+ mCarTrustAgentEnrollmentCallback =
+ new CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback() {
+
+ @Override
+ public void onEnrollmentHandshakeFailure(BluetoothDevice device, int errorCode) {
+ }
+
+ @Override
+ public void onAuthStringAvailable(BluetoothDevice device, String authString) {
+ }
+
+ @Override
+ public void onEscrowTokenAdded(long handle) {
+ }
+
+ @Override
+ public void onEscrowTokenRemoved(long handle) {
+ refreshUi();
+ }
+
+ @Override
+ public void onEscrowTokenActiveStateChanged(long handle, boolean active) {
+ if (active) {
+ refreshUi();
+ }
+ }
+ };
+
+ @VisibleForTesting
+ final ConfirmRemoveDeviceDialog.ConfirmRemoveDeviceListener mConfirmRemoveDeviceListener =
+ new ConfirmRemoveDeviceDialog.ConfirmRemoveDeviceListener() {
+ public void onConfirmRemoveDevice(long handle) {
+ mCarTrustAgentEnrollmentManager.removeEscrowToken(handle,
+ mCarUserManagerHelper.getCurrentProcessUserId());
+ }
+ };
+
+ public TrustedDeviceListPreferenceController(Context context, String preferenceKey,
+ FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
+ super(context, preferenceKey, fragmentController, uxRestrictions);
+ mCarUserManagerHelper = new CarUserManagerHelper(context);
+ mLockPatternUtils = new LockPatternUtils(context);
+ mCar = Car.createCar(context);
+ mCarTrustAgentEnrollmentManager = (CarTrustAgentEnrollmentManager) mCar.getCarManager(
+ Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE);
+
+ }
+
+ @Override
+ protected void checkInitialized() {
+ if (mCarTrustAgentEnrollmentManager == null) {
+ throw new IllegalStateException("mCarTrustAgentEnrollmentManager is null.");
+ }
+ }
+
+ @Override
+ protected Class<PreferenceGroup> getPreferenceType() {
+ return PreferenceGroup.class;
+ }
+
+
+ @Override
+ protected void updateState(PreferenceGroup preferenceGroup) {
+ if (!hasPassword()) {
+ preferenceGroup.removeAll();
+ preferenceGroup.addPreference(createAuthenticationReminderPreference());
+ return;
+ }
+ List<Preference> updatedList = createTrustDevicePreferenceList();
+ if (!isEqual(preferenceGroup, updatedList)) {
+ preferenceGroup.removeAll();
+ for (Preference trustedDevice : updatedList) {
+ preferenceGroup.addPreference(trustedDevice);
+ }
+ }
+ preferenceGroup.setVisible(preferenceGroup.getPreferenceCount() > 0);
+ }
+
+ private boolean hasPassword() {
+ return mLockPatternUtils.getKeyguardStoredPasswordQuality(
+ mCarUserManagerHelper.getCurrentProcessUserId())
+ != DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
+ }
+
+ @Override
+ protected void onStartInternal() {
+ mCarTrustAgentEnrollmentManager.setEnrollmentCallback(mCarTrustAgentEnrollmentCallback);
+
+ }
+
+ @Override
+ protected void onStopInternal() {
+ mCarTrustAgentEnrollmentManager.setEnrollmentCallback(null);
+ }
+
+ /**
+ * Method to compare two lists of preferences, used only by updateState method.
+ *
+ * @param preferenceGroup current preference group
+ * @param trustedDeviceList updated preference list
+ * @return {@code true} when two lists are the same
+ */
+ private boolean isEqual(PreferenceGroup preferenceGroup, List<Preference> trustedDeviceList) {
+ if (preferenceGroup.getPreferenceCount() != trustedDeviceList.size()) {
+ return false;
+ }
+ for (Preference p : trustedDeviceList) {
+ if (preferenceGroup.findPreference(p.getKey()) == null) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private List<Preference> createTrustDevicePreferenceList() {
+ List<Preference> trustedDevicesList = new ArrayList<>();
+ List<TrustedDeviceInfo> devices =
+ mCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+ mCarUserManagerHelper.getCurrentProcessUserId());
+ for (TrustedDeviceInfo deviceInfo : devices) {
+ trustedDevicesList.add(
+ createTrustedDevicePreference(deviceInfo.getName(), deviceInfo.getHandle()));
+ }
+ return trustedDevicesList;
+ }
+
+ private Preference createTrustedDevicePreference(String deviceName, long handle) {
+ Preference preference = new Preference(getContext());
+ preference.setIcon(R.drawable.ic_settings_bluetooth);
+ preference.setTitle(deviceName);
+ preference.setKey(String.valueOf(handle));
+ preference.setOnPreferenceClickListener((Preference pref) -> {
+ ConfirmRemoveDeviceDialog dialog = ConfirmRemoveDeviceDialog.newInstance(deviceName,
+ handle);
+ dialog.setConfirmRemoveDeviceListener(mConfirmRemoveDeviceListener);
+ getFragmentController().showDialog(dialog, ConfirmRemoveDeviceDialog.TAG);
+ return true;
+ });
+ return preference;
+ }
+
+ private Preference createAuthenticationReminderPreference() {
+ Preference preference = new Preference(getContext());
+ preference.setSummary(R.string.trusted_device_set_authentication_reminder);
+ return preference;
+ }
+}
diff --git a/src/com/android/car/settings/setupservice/InitialLockSetupService.java b/src/com/android/car/settings/setupservice/InitialLockSetupService.java
index 7ea8bc8..292fbd3 100644
--- a/src/com/android/car/settings/setupservice/InitialLockSetupService.java
+++ b/src/com/android/car/settings/setupservice/InitialLockSetupService.java
@@ -178,7 +178,8 @@
// Need to remove the setup wizard lib pattern encoding and use the
// LockPatternUtils pattern format.
List<LockPatternView.Cell> pattern = toSettingsPattern(password);
- lockPatternUtils.saveLockPattern(pattern, userId);
+ lockPatternUtils.saveLockPattern(pattern, /* savedPattern =*/ null,
+ userId, /* allowUntrustedChange =*/ false);
pattern.clear();
success = true;
break;
diff --git a/src/com/android/car/settings/storage/AppStorageSettingsDetailsFragment.java b/src/com/android/car/settings/storage/AppStorageSettingsDetailsFragment.java
index 08f65dc..5e29aa1 100644
--- a/src/com/android/car/settings/storage/AppStorageSettingsDetailsFragment.java
+++ b/src/com/android/car/settings/storage/AppStorageSettingsDetailsFragment.java
@@ -41,6 +41,7 @@
import com.android.car.settings.common.Logger;
import com.android.car.settings.common.SettingsFragment;
import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.applications.StorageStatsSource;
@@ -223,10 +224,10 @@
@Override
public void onResume() {
super.onResume();
- mAppsControlDisallowedAdmin = RestrictedLockUtils.checkIfRestrictionEnforced(getActivity(),
- UserManager.DISALLOW_APPS_CONTROL, mUserId);
- mAppsControlDisallowedBySystem = RestrictedLockUtils.hasBaseUserRestriction(getActivity(),
- UserManager.DISALLOW_APPS_CONTROL, mUserId);
+ mAppsControlDisallowedAdmin = RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
+ getActivity(), UserManager.DISALLOW_APPS_CONTROL, mUserId);
+ mAppsControlDisallowedBySystem = RestrictedLockUtilsInternal.hasBaseUserRestriction(
+ getActivity(), UserManager.DISALLOW_APPS_CONTROL, mUserId);
updateSize();
}
diff --git a/src/com/android/car/settings/suggestions/SettingsSuggestionsLoader.java b/src/com/android/car/settings/suggestions/SettingsSuggestionsLoader.java
index 5bd014d..c34e00e 100644
--- a/src/com/android/car/settings/suggestions/SettingsSuggestionsLoader.java
+++ b/src/com/android/car/settings/suggestions/SettingsSuggestionsLoader.java
@@ -19,10 +19,8 @@
import android.content.Context;
import android.service.settings.suggestions.Suggestion;
-import androidx.annotation.Nullable;
-import androidx.loader.content.AsyncTaskLoader;
-
import com.android.car.settings.common.Logger;
+import com.android.car.settingslib.loader.AsyncLoader;
import com.android.settingslib.suggestions.SuggestionController;
import java.util.List;
@@ -32,7 +30,7 @@
* {@link com.android.settingslib.suggestions.SuggestionLoader}, only change is to extend from car
* settings {@link AsyncLoader} which extends from support library {@link AsyncTaskLoader}.
*/
-public class SettingsSuggestionsLoader extends AsyncTaskLoader<List<Suggestion>> {
+public class SettingsSuggestionsLoader extends AsyncLoader<List<Suggestion>> {
private static final Logger LOG = new Logger(SettingsSuggestionsLoader.class);
/**
@@ -42,43 +40,6 @@
private final SuggestionController mSuggestionController;
- @Nullable
- private List<Suggestion> mResult;
-
- @Override
- protected void onStartLoading() {
- if (mResult != null) {
- deliverResult(mResult);
- }
-
- if (takeContentChanged() || mResult == null) {
- forceLoad();
- }
- }
-
- @Override
- protected void onStopLoading() {
- cancelLoad();
- }
-
- @Override
- public void deliverResult(List<Suggestion> data) {
- if (isReset()) {
- return;
- }
- mResult = data;
- if (isStarted()) {
- super.deliverResult(data);
- }
- }
-
- @Override
- protected void onReset() {
- super.onReset();
- onStopLoading();
- mResult = null;
- }
-
public SettingsSuggestionsLoader(Context context, SuggestionController controller) {
super(context);
mSuggestionController = controller;
diff --git a/src/com/android/car/settings/system/ResetAppPrefFragment.java b/src/com/android/car/settings/system/ResetAppPrefFragment.java
index 95f590f..74a4760 100644
--- a/src/com/android/car/settings/system/ResetAppPrefFragment.java
+++ b/src/com/android/car/settings/system/ResetAppPrefFragment.java
@@ -28,7 +28,6 @@
import android.os.IBinder;
import android.os.RemoteException;
import android.os.ServiceManager;
-import android.webkit.IWebViewUpdateService;
import android.widget.Button;
import android.widget.Toast;
@@ -97,13 +96,6 @@
}
INotificationManager notificationManagerService =
INotificationManager.Stub.asInterface(notificationManagerServiceBinder);
- IBinder webViewUpdateServiceBinder = ServiceManager.getService("webviewupdate");
- if (webViewUpdateServiceBinder == null) {
- LOG.w("Unable to reset app preferences. Null web view update service");
- return null;
- }
- IWebViewUpdateService webViewUpdateService = IWebViewUpdateService.Stub.asInterface(
- webViewUpdateServiceBinder);
// Reset app notifications.
// Reset disabled apps.
@@ -119,9 +111,7 @@
}
if (!app.enabled) {
if (packageManager.getApplicationEnabledSetting(app.packageName)
- == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER
- && !isNonEnableableFallback(webViewUpdateService,
- app.packageName)) {
+ == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER) {
packageManager.setApplicationEnabledSetting(app.packageName,
PackageManager.COMPONENT_ENABLED_STATE_DEFAULT,
PackageManager.DONT_KILL_APP);
@@ -151,14 +141,6 @@
return null;
}
- private boolean isNonEnableableFallback(IWebViewUpdateService mWvus, String packageName) {
- try {
- return mWvus.isFallbackPackage(packageName);
- } catch (RemoteException e) {
- throw new RuntimeException(e);
- }
- }
-
@Override
protected void onPostExecute(Void unused) {
super.onPostExecute(unused);
diff --git a/src/com/android/car/settings/system/WifiMacAddressPreferenceController.java b/src/com/android/car/settings/system/WifiMacAddressPreferenceController.java
deleted file mode 100644
index 0a0d063..0000000
--- a/src/com/android/car/settings/system/WifiMacAddressPreferenceController.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.system;
-
-import android.car.drivingstate.CarUxRestrictions;
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.net.wifi.WifiInfo;
-import android.net.wifi.WifiManager;
-
-import androidx.preference.Preference;
-
-import com.android.car.settings.R;
-import com.android.car.settings.common.FragmentController;
-import com.android.car.settings.common.PreferenceController;
-
-/** Updates the vehicle Wi-Fi mac address summary. */
-public class WifiMacAddressPreferenceController extends PreferenceController<Preference> {
-
- private WifiInfo mWifiInfo;
-
- public WifiMacAddressPreferenceController(Context context, String preferenceKey,
- FragmentController fragmentController, CarUxRestrictions uxRestrictions) {
- super(context, preferenceKey, fragmentController, uxRestrictions);
- init(context);
- }
-
- @Override
- protected Class<Preference> getPreferenceType() {
- return Preference.class;
- }
-
- @Override
- protected int getAvailabilityStatus() {
- if (!getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI)
- || !getContext().getResources().getBoolean(R.bool.config_show_wifi_mac_address)) {
- return UNSUPPORTED_ON_DEVICE;
- }
- return AVAILABLE_FOR_VIEWING;
- }
-
- protected void init(Context context) {
- WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
- mWifiInfo = wifiManager.getConnectionInfo();
- }
-
- @Override
- protected void updateState(Preference preference) {
- String macAddress = mWifiInfo == null ? getContext().getString(R.string.status_unavailable)
- : mWifiInfo.getMacAddress();
- preference.setSummary(macAddress);
- }
-}
diff --git a/src/com/android/car/settings/wifi/CarWifiManager.java b/src/com/android/car/settings/wifi/CarWifiManager.java
index 6f4a9f8..be14f4c 100644
--- a/src/com/android/car/settings/wifi/CarWifiManager.java
+++ b/src/com/android/car/settings/wifi/CarWifiManager.java
@@ -15,12 +15,12 @@
*/
package com.android.car.settings.wifi;
+import android.annotation.Nullable;
import android.content.Context;
import android.net.NetworkInfo;
import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
-import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
import com.android.settingslib.wifi.AccessPoint;
diff --git a/src/com/android/car/settings/wifi/WifiUtil.java b/src/com/android/car/settings/wifi/WifiUtil.java
index 6a33854..79db041 100644
--- a/src/com/android/car/settings/wifi/WifiUtil.java
+++ b/src/com/android/car/settings/wifi/WifiUtil.java
@@ -15,6 +15,7 @@
*/
package com.android.car.settings.wifi;
+import android.annotation.DrawableRes;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.ContentResolver;
@@ -27,7 +28,6 @@
import android.provider.Settings;
import android.widget.Toast;
-import androidx.annotation.DrawableRes;
import androidx.annotation.StringRes;
import com.android.car.settings.R;
diff --git a/tests/robotests/Android.mk b/tests/robotests/Android.mk
index 17130f0..7992d51 100644
--- a/tests/robotests/Android.mk
+++ b/tests/robotests/Android.mk
@@ -1,28 +1,31 @@
-#############################################
-# Car Settings Robolectric test target. #
-#############################################
-LOCAL_PATH:= $(call my-dir)
+#############################################################
+# Car Settings Robolectric test target. #
+#############################################################
+LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := CarSettingsRoboTests
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_JAVA_RESOURCE_DIRS := config
-# Include the testing libraries
LOCAL_JAVA_LIBRARIES := \
- android.car \
- robolectric_android-all-stub \
Robolectric_all-target \
+ robolectric_android-all-stub \
mockito-robolectric-prebuilt \
+ truth-prebuilt \
testng \
- truth-prebuilt
+ android.car
LOCAL_INSTRUMENTATION_FOR := CarSettingsForTesting
LOCAL_MODULE_TAGS := optional
+# Generate test_config.properties
+include external/robolectric-shadows/gen_test_config.mk
+
include $(BUILD_STATIC_JAVA_LIBRARY)
#############################################################
@@ -33,13 +36,13 @@
LOCAL_MODULE := RunCarSettingsRoboTests
LOCAL_JAVA_LIBRARIES := \
- android.car \
- CarSettingsRoboTests \
- robolectric_android-all-stub \
Robolectric_all-target \
+ robolectric_android-all-stub \
mockito-robolectric-prebuilt \
+ truth-prebuilt \
testng \
- truth-prebuilt
+ CarSettingsRoboTests \
+ android.car
LOCAL_TEST_PACKAGE := CarSettingsForTesting
diff --git a/tests/robotests/AndroidManifest.xml b/tests/robotests/AndroidManifest.xml
deleted file mode 100644
index efe1f69..0000000
--- a/tests/robotests/AndroidManifest.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 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.
- -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- coreApp="true"
- package="com.android.car.settings.robotests">
- <application/>
-</manifest>
diff --git a/tests/robotests/config/robolectric.properties b/tests/robotests/config/robolectric.properties
index 8568e15..01124da 100644
--- a/tests/robotests/config/robolectric.properties
+++ b/tests/robotests/config/robolectric.properties
@@ -13,6 +13,5 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
-manifest=packages/apps/Car/Settings/tests/robotests/AndroidManifest.xml
sdk=NEWEST_SDK
-shadows=com.android.car.settings.testutils.CarSettingsShadowResources, com.android.car.settings.testutils.ShadowCar
+shadows=com.android.car.settings.testutils.ShadowCar
diff --git a/tests/robotests/src/com/android/car/settings/CarSettingsRobolectricTestRunner.java b/tests/robotests/src/com/android/car/settings/CarSettingsRobolectricTestRunner.java
index 5e4fb6a..f3f2e31 100644
--- a/tests/robotests/src/com/android/car/settings/CarSettingsRobolectricTestRunner.java
+++ b/tests/robotests/src/com/android/car/settings/CarSettingsRobolectricTestRunner.java
@@ -16,124 +16,17 @@
package com.android.car.settings;
-import androidx.annotation.NonNull;
-
import org.junit.runners.model.InitializationError;
import org.robolectric.RobolectricTestRunner;
-import org.robolectric.annotation.Config;
-import org.robolectric.manifest.AndroidManifest;
-import org.robolectric.res.Fs;
-import org.robolectric.res.ResourcePath;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
/**
- * Custom test runner for CarSettings. This is needed because the default behavior for
- * robolectric is just to grab the resource directory in the target package.
- * We want to override this to add several spanning different projects.
+ * TODO: Remove this and use RobolectricTestRunner in all tests.
*/
public class CarSettingsRobolectricTestRunner extends RobolectricTestRunner {
- private static final Map<String, String> AAR_VERSIONS;
- private static final String SUPPORT_RESOURCE_PATH_TEMPLATE =
- "jar:file:prebuilts/sdk/current/androidx/m2repository/androidx/"
- + "%1$s/%1$s/%2$s/%1$s-%2$s.aar!/res";
- // contraint-layout aar lives in separate path.
- // Note its path contains a hyphen.
- private static final String CONSTRAINT_LAYOUT_RESOURCE_PATH_TEMPLATE =
- "jar:file:prebuilts/sdk/current/extras/constraint-layout-x/"
- + "%1$s/%2$s/%1$s-%2$s.aar!/res";
-
- static {
- AAR_VERSIONS = new HashMap<>();
- AAR_VERSIONS.put("car", "1.0.0-alpha7");
- AAR_VERSIONS.put("appcompat", "1.1.0-alpha01");
- AAR_VERSIONS.put("constraintlayout", "1.1.2");
- AAR_VERSIONS.put("preference", "1.1.0-alpha02");
- }
-
/**
* We don't actually want to change this behavior, so we just call super.
*/
public CarSettingsRobolectricTestRunner(Class<?> testClass) throws InitializationError {
super(testClass);
}
-
- private static ResourcePath createResourcePath(@NonNull String filePath) {
- try {
- return new ResourcePath(null, Fs.fromURL(new URL(filePath)), null);
- } catch (MalformedURLException e) {
- throw new RuntimeException("CarSettingsobolectricTestRunner failure", e);
- }
- }
-
- /**
- * Create the resource path for a support library component's JAR.
- */
- private static String createSupportResourcePathFromJar(@NonNull String componentId) {
- if (!AAR_VERSIONS.containsKey(componentId)) {
- throw new IllegalArgumentException("Unknown component " + componentId
- + ". Update test with appropriate component name and version.");
- }
- if (componentId.equals("constraintlayout")) {
- return String.format(CONSTRAINT_LAYOUT_RESOURCE_PATH_TEMPLATE, componentId,
- AAR_VERSIONS.get(componentId));
- }
- return String.format(SUPPORT_RESOURCE_PATH_TEMPLATE, componentId,
- AAR_VERSIONS.get(componentId));
- }
-
- /**
- * We are going to create our own custom manifest so that we can add multiple resource
- * paths to it. This lets us access resources in both Settings and SettingsLib in our tests.
- */
- @Override
- protected AndroidManifest getAppManifest(Config config) {
- try {
- // Using the manifest file's relative path, we can figure out the application directory.
- URL appRoot = new URL("file:packages/apps/Car/Settings/");
- URL manifestPath = new URL(appRoot, "AndroidManifest.xml");
- URL resDir = new URL(appRoot, "tests/robotests/res");
- URL assetsDir = new URL(appRoot, config.assetDir());
-
- // By adding any resources from libraries we need to the AndroidManifest, we can access
- // them from within the parallel universe's resource loader.
- AndroidManifest androidManifest = new AndroidManifest(Fs.fromURL(manifestPath),
- Fs.fromURL(resDir),
- Fs.fromURL(assetsDir)) {
- @Override
- public List<ResourcePath> getIncludedResourcePaths() {
- List<ResourcePath> paths = super.getIncludedResourcePaths();
- paths.add(createResourcePath("file:packages/apps/Car/Settings/res"));
-
- // Has to come before the "car" library due to a conflicting resource name
- paths.add(
- createResourcePath("file:packages/apps/Car/libs/car-apps-common/res"));
-
- // Support library resources. These need to point to the prebuilts of support
- // library and not the source.
- paths.add(createResourcePath(createSupportResourcePathFromJar("appcompat")));
- paths.add(createResourcePath(createSupportResourcePathFromJar("car")));
- paths.add(createResourcePath(
- createSupportResourcePathFromJar("constraintlayout")));
- paths.add(createResourcePath(createSupportResourcePathFromJar("preference")));
-
- paths.add(
- createResourcePath("file:packages/apps/Car/libs/car-settings-lib/res"));
- paths.add(createResourcePath("file:frameworks/base/packages/SettingsLib/res"));
-
- return paths;
- }
- };
- // Need to remove this permission since this version of robolectric does not support
- // multiple protection levels.
- androidManifest.getPermissions().remove("com.android.car.settings.SET_INITIAL_LOCK");
- return androidManifest;
- } catch (MalformedURLException e) {
- throw new RuntimeException("CarSettingsobolectricTestRunner failure", e);
- }
- }
}
diff --git a/tests/robotests/src/com/android/car/settings/TestConfig.java b/tests/robotests/src/com/android/car/settings/TestConfig.java
deleted file mode 100644
index 51570ea..0000000
--- a/tests/robotests/src/com/android/car/settings/TestConfig.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 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.
- */
-
-package com.android.car.settings;
-
-public class TestConfig {
- public static final int SDK_VERSION = 23;
- public static final String MANIFEST_PATH =
- "packages/apps/Car/Settings/AndroidManifest.xml";
-}
diff --git a/tests/robotests/src/com/android/car/settings/accounts/AccountSyncDetailsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/accounts/AccountSyncDetailsPreferenceControllerTest.java
index f7407ff..9e0fe78 100644
--- a/tests/robotests/src/com/android/car/settings/accounts/AccountSyncDetailsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/accounts/AccountSyncDetailsPreferenceControllerTest.java
@@ -29,7 +29,6 @@
import android.content.SyncAdapterType;
import android.content.SyncInfo;
import android.content.SyncStatusInfo;
-import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.ProviderInfo;
import android.os.Bundle;
@@ -180,8 +179,6 @@
ProviderInfo info = new ProviderInfo();
info.authority = AUTHORITY;
info.name = "";
- // Set an application info to avoid an NPE
- info.applicationInfo = new ApplicationInfo();
ProviderInfo[] providers = {info};
PackageInfo packageInfo = new PackageInfo();
@@ -207,8 +204,6 @@
ProviderInfo info = new ProviderInfo();
info.authority = AUTHORITY;
info.name = "label";
- // Set an application info to avoid an NPE
- info.applicationInfo = new ApplicationInfo();
ProviderInfo[] providers = {info};
PackageInfo packageInfo = new PackageInfo();
@@ -531,9 +526,7 @@
// Sets provider info with a label for the sync adapter.
ProviderInfo info = new ProviderInfo();
info.authority = authority;
- info.name = authority;
- // Set an application info to avoid an NPE
- info.applicationInfo = new ApplicationInfo();
+ info.name = "label";
ProviderInfo[] providers = {info};
PackageInfo packageInfo = new PackageInfo();
diff --git a/tests/robotests/src/com/android/car/settings/applications/ApplicationDetailsFragmentTest.java b/tests/robotests/src/com/android/car/settings/applications/ApplicationDetailsFragmentTest.java
index ffb5abe..b6647af 100644
--- a/tests/robotests/src/com/android/car/settings/applications/ApplicationDetailsFragmentTest.java
+++ b/tests/robotests/src/com/android/car/settings/applications/ApplicationDetailsFragmentTest.java
@@ -46,11 +46,11 @@
import com.android.car.settings.common.ConfirmationDialogFragment;
import com.android.car.settings.testutils.BaseTestActivity;
import com.android.car.settings.testutils.ShadowActivityManager;
-import com.android.car.settings.testutils.ShadowActivityThread;
import com.android.car.settings.testutils.ShadowApplicationPackageManager;
import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
import com.android.car.settings.testutils.ShadowDevicePolicyManager;
import com.android.car.settings.testutils.ShadowIconDrawableFactory;
+import com.android.car.settings.testutils.ShadowPermissionControllerManager;
import com.android.car.settings.testutils.ShadowSmsApplication;
import com.android.car.settings.testutils.ShadowUserManager;
import com.android.car.settings.testutils.ShadowUtils;
@@ -78,11 +78,11 @@
@RunWith(CarSettingsRobolectricTestRunner.class)
@Config(shadows = {
ShadowActivityManager.class,
- ShadowActivityThread.class,
ShadowApplicationPackageManager.class,
ShadowCarUserManagerHelper.class,
ShadowDevicePolicyManager.class,
ShadowIconDrawableFactory.class,
+ ShadowPermissionControllerManager.class,
ShadowSmsApplication.class,
ShadowUserManager.class,
ShadowUtils.class})
@@ -128,6 +128,7 @@
ReflectionHelpers.setStaticField(Utils.class, "sSystemSignature", null);
ShadowApplicationPackageManager.reset();
ShadowCarUserManagerHelper.reset();
+ ShadowDevicePolicyManager.reset();
ShadowSmsApplication.reset();
ShadowUserManager.reset();
ShadowUtils.reset();
diff --git a/tests/robotests/src/com/android/car/settings/applications/PermissionsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/PermissionsPreferenceControllerTest.java
index 8741417..445383d 100644
--- a/tests/robotests/src/com/android/car/settings/applications/PermissionsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/applications/PermissionsPreferenceControllerTest.java
@@ -28,14 +28,17 @@
import com.android.car.settings.CarSettingsRobolectricTestRunner;
import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowPermissionControllerManager;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowPermissionControllerManager.class})
public class PermissionsPreferenceControllerTest {
private static final String PACKAGE_NAME = "Test Package Name";
@@ -43,7 +46,7 @@
private Context mContext;
private Preference mPreference;
private PreferenceControllerTestHelper<PermissionsPreferenceController>
- mPreferenceControllerHelper;
+ mPreferenceControllerHelper;
private PermissionsPreferenceController mController;
@Before
@@ -51,7 +54,7 @@
mContext = RuntimeEnvironment.application;
mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
- PermissionsPreferenceController.class);
+ PermissionsPreferenceController.class);
mController = mPreferenceControllerHelper.getController();
mPreference = new Preference(mContext);
}
@@ -59,7 +62,7 @@
@Test
public void testCheckInitialized_noResolveInfo_throwException() {
assertThrows(IllegalStateException.class,
- () -> mPreferenceControllerHelper.setPreference(mPreference));
+ () -> mPreferenceControllerHelper.setPreference(mPreference));
}
@Test
diff --git a/tests/robotests/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerEntryPreferenceControllerTest.java
index 2c22add..97c5264 100644
--- a/tests/robotests/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerEntryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/applications/assist/DefaultVoiceInputPickerEntryPreferenceControllerTest.java
@@ -43,7 +43,6 @@
import com.android.car.settings.testutils.ShadowSecureSettings;
import com.android.car.settings.testutils.ShadowVoiceInteractionServiceInfo;
import com.android.settingslib.applications.DefaultAppInfo;
-import com.android.settingslib.wrapper.PackageManagerWrapper;
import com.google.common.collect.Iterables;
@@ -223,7 +222,7 @@
new VoiceInputInfoProvider.VoiceInteractionInfo(mContext, interactionServiceInfo);
DefaultVoiceInputServiceInfo serviceInfo = new DefaultVoiceInputServiceInfo(mContext,
- new PackageManagerWrapper(mContext.getPackageManager()), TEST_USER_ID, info, true);
+ mContext.getPackageManager(), TEST_USER_ID, info, true);
Intent settingIntent = mController.getSettingIntent(serviceInfo);
assertThat(settingIntent.getAction()).isEqualTo(Intent.ACTION_MAIN);
diff --git a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerEntryPreferenceControllerTest.java
index a452254..9ab0536 100644
--- a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerEntryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerEntryPreferenceControllerTest.java
@@ -20,6 +20,7 @@
import static org.mockito.Mockito.when;
+import android.app.role.RoleManager;
import android.car.userlib.CarUserManagerHelper;
import android.content.ComponentName;
import android.content.Context;
@@ -31,11 +32,11 @@
import com.android.car.settings.CarSettingsRobolectricTestRunner;
import com.android.car.settings.common.ButtonPreference;
import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
import com.android.car.settings.testutils.ShadowSecureSettings;
import com.android.car.settings.testutils.ShadowVoiceInteractionServiceInfo;
import com.android.settingslib.applications.DefaultAppInfo;
-import com.android.settingslib.wrapper.PackageManagerWrapper;
import org.junit.After;
import org.junit.Before;
@@ -44,13 +45,13 @@
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowPackageManager;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowApplication;
@RunWith(CarSettingsRobolectricTestRunner.class)
@Config(shadows = {ShadowSecureSettings.class, ShadowVoiceInteractionServiceInfo.class,
- ShadowCarUserManagerHelper.class})
+ ShadowCarUserManagerHelper.class, ShadowApplicationPackageManager.class})
public class DefaultAssistantPickerEntryPreferenceControllerTest {
private static final String TEST_PACKAGE = "com.android.car.settings.testutils";
@@ -86,7 +87,6 @@
@After
public void tearDown() {
ShadowCarUserManagerHelper.reset();
- ShadowSecureSettings.reset();
ShadowVoiceInteractionServiceInfo.reset();
}
@@ -106,9 +106,8 @@
@Test
public void getSettingIntent_noAssistant_returnsNull() {
- DefaultAppInfo info = new DefaultAppInfo(mContext,
- new PackageManagerWrapper(mContext.getPackageManager()), TEST_USER_ID,
- ComponentName.unflattenFromString(TEST_COMPONENT));
+ DefaultAppInfo info = new DefaultAppInfo(mContext, mContext.getPackageManager(),
+ TEST_USER_ID, ComponentName.unflattenFromString(TEST_COMPONENT));
assertThat(mController.getSettingIntent(info)).isNull();
}
@@ -129,12 +128,10 @@
Intent intent =
DefaultAssistantPickerEntryPreferenceController.ASSISTANT_SERVICE.setComponent(
ComponentName.unflattenFromString(TEST_COMPONENT));
- ShadowPackageManager shadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
- shadowPackageManager.addResolveInfoForIntent(intent, resolveInfo);
+ getShadowApplicationManager().addResolveInfoForIntent(intent, resolveInfo);
- DefaultAppInfo info = new DefaultAppInfo(mContext,
- new PackageManagerWrapper(mContext.getPackageManager()), TEST_USER_ID,
- ComponentName.unflattenFromString(TEST_COMPONENT));
+ DefaultAppInfo info = new DefaultAppInfo(mContext, mContext.getPackageManager(),
+ TEST_USER_ID, ComponentName.unflattenFromString(TEST_COMPONENT));
assertThat(mController.getSettingIntent(info)).isNull();
}
@@ -155,12 +152,10 @@
Intent intent =
DefaultAssistantPickerEntryPreferenceController.ASSISTANT_SERVICE.setComponent(
ComponentName.unflattenFromString(TEST_COMPONENT));
- ShadowPackageManager shadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
- shadowPackageManager.addResolveInfoForIntent(intent, resolveInfo);
+ getShadowApplicationManager().addResolveInfoForIntent(intent, resolveInfo);
- DefaultAppInfo info = new DefaultAppInfo(mContext,
- new PackageManagerWrapper(mContext.getPackageManager()), TEST_USER_ID,
- ComponentName.unflattenFromString(TEST_COMPONENT));
+ DefaultAppInfo info = new DefaultAppInfo(mContext, mContext.getPackageManager(),
+ TEST_USER_ID, ComponentName.unflattenFromString(TEST_COMPONENT));
assertThat(mController.getSettingIntent(info)).isNull();
}
@@ -182,16 +177,57 @@
Intent intent =
DefaultAssistantPickerEntryPreferenceController.ASSISTANT_SERVICE.setComponent(
ComponentName.unflattenFromString(TEST_COMPONENT));
- ShadowPackageManager shadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
- shadowPackageManager.addResolveInfoForIntent(intent, resolveInfo);
+ getShadowApplicationManager().addResolveInfoForIntent(intent, resolveInfo);
- DefaultAppInfo info = new DefaultAppInfo(mContext,
- new PackageManagerWrapper(mContext.getPackageManager()), TEST_USER_ID,
- ComponentName.unflattenFromString(TEST_COMPONENT));
+ DefaultAppInfo info = new DefaultAppInfo(mContext, mContext.getPackageManager(),
+ TEST_USER_ID, ComponentName.unflattenFromString(TEST_COMPONENT));
Intent result = mController.getSettingIntent(info);
assertThat(result.getAction()).isEqualTo(Intent.ACTION_MAIN);
assertThat(result.getComponent()).isEqualTo(
new ComponentName(TEST_PACKAGE, TEST_SETTINGS_CLASS));
}
+
+ @Test
+ public void performClick_permissionControllerExists_startsPermissionController() {
+ String testPackage = "com.test.permissions";
+ getShadowApplicationManager().setPermissionControllerPackageName(testPackage);
+ mButtonPreference.performClick();
+
+ Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
+ assertThat(actual.getAction()).isEqualTo(Intent.ACTION_MANAGE_DEFAULT_APP);
+ }
+
+ @Test
+ public void performClick_permissionControllerExists_intentHasPackageName() {
+ String testPackage = "com.test.permissions";
+ getShadowApplicationManager().setPermissionControllerPackageName(testPackage);
+ mButtonPreference.performClick();
+
+ Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
+ assertThat(actual.getPackage()).isEqualTo(testPackage);
+ }
+
+ @Test
+ public void performClick_permissionControllerExists_intentHasRole() {
+ String testPackage = "com.test.permissions";
+ getShadowApplicationManager().setPermissionControllerPackageName(testPackage);
+ mButtonPreference.performClick();
+
+ Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
+ assertThat(actual.getStringExtra(Intent.EXTRA_ROLE_NAME)).isEqualTo(
+ RoleManager.ROLE_ASSISTANT);
+ }
+
+ @Test
+ public void performClick_permissionControllerDoesntExist_doesNotStartPermissionController() {
+ mButtonPreference.performClick();
+
+ Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
+ assertThat(actual).isNull();
+ }
+
+ private ShadowApplicationPackageManager getShadowApplicationManager() {
+ return Shadow.extract(mContext.getPackageManager());
+ }
}
diff --git a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerPreferenceControllerTest.java
deleted file mode 100644
index 308f8d4..0000000
--- a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAssistantPickerPreferenceControllerTest.java
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications.defaultapps;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-
-import android.car.userlib.CarUserManagerHelper;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.pm.ActivityInfo;
-import android.content.pm.ResolveInfo;
-import android.content.pm.ServiceInfo;
-import android.provider.Settings;
-
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.CarSettingsRobolectricTestRunner;
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
-import com.android.car.settings.testutils.ShadowSecureSettings;
-import com.android.car.settings.testutils.ShadowVoiceInteractionServiceInfo;
-
-import com.google.android.collect.Lists;
-
-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;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowPackageManager;
-
-@RunWith(CarSettingsRobolectricTestRunner.class)
-@Config(shadows = {ShadowSecureSettings.class, ShadowVoiceInteractionServiceInfo.class,
- ShadowCarUserManagerHelper.class})
-public class DefaultAssistantPickerPreferenceControllerTest {
-
- private static final String TEST_PACKAGE_NAME = "com.test.package";
- private static final String TEST_SERVICE = "TestService";
- private static final String TEST_ACTIVITY = "TestActivity";
- private static final int TEST_USER_ID = 10;
-
- private Context mContext;
- private PreferenceGroup mPreferenceGroup;
- private PreferenceControllerTestHelper<DefaultAssistantPickerPreferenceController>
- mControllerHelper;
- private DefaultAssistantPickerPreferenceController mController;
- @Mock
- private CarUserManagerHelper mCarUserManagerHelper;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
-
- mContext = RuntimeEnvironment.application;
- mPreferenceGroup = new LogicalPreferenceGroup(mContext);
- mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
- DefaultAssistantPickerPreferenceController.class, mPreferenceGroup);
- mController = mControllerHelper.getController();
-
- // Set user.
- when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(TEST_USER_ID);
- }
-
- @After
- public void tearDown() {
- ShadowSecureSettings.reset();
- ShadowCarUserManagerHelper.reset();
- ShadowVoiceInteractionServiceInfo.reset();
- }
-
- @Test
- public void getCandidates_oneActivityOneService_returnsTwoElements() {
- // Included. Supports assist.
- ResolveInfo serviceResolveInfo = new ResolveInfo();
- serviceResolveInfo.serviceInfo = new ServiceInfo();
- serviceResolveInfo.serviceInfo.packageName = TEST_PACKAGE_NAME;
- serviceResolveInfo.serviceInfo.name = TEST_SERVICE;
- ShadowVoiceInteractionServiceInfo.setSupportsAssist(serviceResolveInfo.serviceInfo, true);
-
- // Included. Different package.
- ResolveInfo activityResolveInfoDifferentPackage = new ResolveInfo();
- activityResolveInfoDifferentPackage.activityInfo = new ActivityInfo();
- activityResolveInfoDifferentPackage.activityInfo.packageName = "com.other.package";
- activityResolveInfoDifferentPackage.activityInfo.name = TEST_ACTIVITY;
-
- getShadowApplicationManager().addResolveInfoForIntent(
- DefaultAssistantPickerPreferenceController.ASSIST_SERVICE_PROBE,
- Lists.newArrayList(serviceResolveInfo));
- getShadowApplicationManager().addResolveInfoForIntent(
- DefaultAssistantPickerPreferenceController.ASSIST_ACTIVITY_PROBE,
- Lists.newArrayList(activityResolveInfoDifferentPackage));
-
- // One service, one activity.
- assertThat(mController.getCandidates()).hasSize(2);
- }
-
- @Test
- public void getCandidates_filtersServicesWithoutAssist_returnsOneElement() {
- // Included. Supports assist.
- ResolveInfo serviceResolveInfo = new ResolveInfo();
- serviceResolveInfo.serviceInfo = new ServiceInfo();
- serviceResolveInfo.serviceInfo.packageName = TEST_PACKAGE_NAME;
- serviceResolveInfo.serviceInfo.name = TEST_SERVICE;
- ShadowVoiceInteractionServiceInfo.setSupportsAssist(serviceResolveInfo.serviceInfo, true);
-
- // Not included. Doesn't support assist.
- ResolveInfo serviceResolveInfoNoAssist = new ResolveInfo();
- serviceResolveInfoNoAssist.serviceInfo = new ServiceInfo();
- ShadowVoiceInteractionServiceInfo.setSupportsAssist(serviceResolveInfoNoAssist.serviceInfo,
- false);
-
- getShadowApplicationManager().addResolveInfoForIntent(
- DefaultAssistantPickerPreferenceController.ASSIST_SERVICE_PROBE,
- Lists.newArrayList(serviceResolveInfo, serviceResolveInfoNoAssist));
-
- // Single service supporting assist.
- assertThat(mController.getCandidates()).hasSize(1);
- }
-
- @Test
- public void getCandidates_filtersSamePackageName_returnsOneElement() {
- // Included. Supports assist.
- ResolveInfo serviceResolveInfo = new ResolveInfo();
- serviceResolveInfo.serviceInfo = new ServiceInfo();
- serviceResolveInfo.serviceInfo.packageName = TEST_PACKAGE_NAME;
- serviceResolveInfo.serviceInfo.name = TEST_SERVICE;
- ShadowVoiceInteractionServiceInfo.setSupportsAssist(serviceResolveInfo.serviceInfo, true);
-
- // Not included. Same package as service above.
- ResolveInfo activityResolveInfo = new ResolveInfo();
- activityResolveInfo.activityInfo = new ActivityInfo();
- activityResolveInfo.activityInfo.packageName = TEST_PACKAGE_NAME;
- activityResolveInfo.activityInfo.name = TEST_ACTIVITY;
-
- getShadowApplicationManager().addResolveInfoForIntent(
- DefaultAssistantPickerPreferenceController.ASSIST_SERVICE_PROBE,
- Lists.newArrayList(serviceResolveInfo));
- getShadowApplicationManager().addResolveInfoForIntent(
- DefaultAssistantPickerPreferenceController.ASSIST_ACTIVITY_PROBE,
- Lists.newArrayList(activityResolveInfo));
-
- // Single service due to package name.
- assertThat(mController.getCandidates()).hasSize(1);
- }
-
- @Test
- public void getCurrentDefaultKey_noneSet_returnsNonePreferenceKey() {
- // Since Settings.Secure.ASSISTANT is not yet set, it should be null in SecureSettings.
- assertThat(mController.getCurrentDefaultKey()).isEqualTo(
- DefaultAppsPickerBasePreferenceController.NONE_PREFERENCE_KEY);
- }
-
- @Test
- public void getCurrentDefaultKey_testAssistantSet_returnsAssistantPreferenceKey() {
- String key = new ComponentName(TEST_PACKAGE_NAME, TEST_ACTIVITY).flattenToString();
-
- Settings.Secure.putStringForUser(mContext.getContentResolver(), Settings.Secure.ASSISTANT,
- key, TEST_USER_ID);
-
- assertThat(mController.getCurrentDefaultKey()).isEqualTo(key);
- }
-
- @Test
- public void setCurrentDefault_nullKey_setsNonePreference() {
- mController.setCurrentDefault(null);
-
- assertThat(Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.ASSISTANT)).isEmpty();
- assertThat(Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.VOICE_INTERACTION_SERVICE)).isEmpty();
- assertThat(Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.VOICE_RECOGNITION_SERVICE)).isEmpty();
- }
-
- @Test
- public void setCurrentDefault_keyNotInCandidates_setsNonePreference() {
- ResolveInfo serviceResolveInfo = new ResolveInfo();
- serviceResolveInfo.serviceInfo = new ServiceInfo();
- serviceResolveInfo.serviceInfo.packageName = TEST_PACKAGE_NAME;
- serviceResolveInfo.serviceInfo.name = TEST_SERVICE;
- ShadowVoiceInteractionServiceInfo.setSupportsAssist(serviceResolveInfo.serviceInfo, true);
-
- ResolveInfo activityResolveInfoDifferentPackage = new ResolveInfo();
- activityResolveInfoDifferentPackage.activityInfo = new ActivityInfo();
- activityResolveInfoDifferentPackage.activityInfo.packageName = "com.other.package";
- activityResolveInfoDifferentPackage.activityInfo.name = TEST_ACTIVITY;
-
- getShadowApplicationManager().addResolveInfoForIntent(
- DefaultAssistantPickerPreferenceController.ASSIST_SERVICE_PROBE,
- Lists.newArrayList(serviceResolveInfo));
- getShadowApplicationManager().addResolveInfoForIntent(
- DefaultAssistantPickerPreferenceController.ASSIST_ACTIVITY_PROBE,
- Lists.newArrayList(activityResolveInfoDifferentPackage));
- mController.getCandidates();
-
- String testKey = new ComponentName("com.not.existent.key", "TestApp").flattenToString();
- mController.setCurrentDefault(testKey);
-
- assertThat(Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.ASSISTANT)).isEmpty();
- assertThat(Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.VOICE_INTERACTION_SERVICE)).isEmpty();
- assertThat(Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.VOICE_RECOGNITION_SERVICE)).isEmpty();
- }
-
- @Test
- public void setCurrentDefaultKey_keySelectsService_setsService() {
- ResolveInfo serviceResolveInfo = new ResolveInfo();
- serviceResolveInfo.serviceInfo = new ServiceInfo();
- serviceResolveInfo.serviceInfo.packageName = TEST_PACKAGE_NAME;
- serviceResolveInfo.serviceInfo.name = TEST_SERVICE;
- ShadowVoiceInteractionServiceInfo.setSupportsAssist(serviceResolveInfo.serviceInfo, true);
- ShadowVoiceInteractionServiceInfo.setRecognitionService(serviceResolveInfo.serviceInfo,
- "TestRecognitionService");
-
- ResolveInfo activityResolveInfoDifferentPackage = new ResolveInfo();
- activityResolveInfoDifferentPackage.activityInfo = new ActivityInfo();
- activityResolveInfoDifferentPackage.activityInfo.packageName = "com.other.package";
- activityResolveInfoDifferentPackage.activityInfo.name = TEST_ACTIVITY;
-
- getShadowApplicationManager().addResolveInfoForIntent(
- DefaultAssistantPickerPreferenceController.ASSIST_SERVICE_PROBE,
- Lists.newArrayList(serviceResolveInfo));
- getShadowApplicationManager().addResolveInfoForIntent(
- DefaultAssistantPickerPreferenceController.ASSIST_ACTIVITY_PROBE,
- Lists.newArrayList(activityResolveInfoDifferentPackage));
- mController.getCandidates();
-
- String testKey = new ComponentName(TEST_PACKAGE_NAME, TEST_SERVICE).flattenToString();
- mController.setCurrentDefault(testKey);
-
- assertThat(Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.ASSISTANT)).isEqualTo(testKey);
- assertThat(Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.VOICE_INTERACTION_SERVICE)).isEqualTo(testKey);
- assertThat(Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.VOICE_RECOGNITION_SERVICE)).isEqualTo(
- new ComponentName(TEST_PACKAGE_NAME, "TestRecognitionService").flattenToString());
- }
-
- @Test
- public void setCurrentDefaultKey_keySelectsActivity_setsActivity() {
- ResolveInfo serviceResolveInfo = new ResolveInfo();
- serviceResolveInfo.serviceInfo = new ServiceInfo();
- serviceResolveInfo.serviceInfo.packageName = TEST_PACKAGE_NAME;
- serviceResolveInfo.serviceInfo.name = TEST_SERVICE;
- ShadowVoiceInteractionServiceInfo.setSupportsAssist(serviceResolveInfo.serviceInfo, true);
-
- ResolveInfo activityResolveInfoDifferentPackage = new ResolveInfo();
- activityResolveInfoDifferentPackage.activityInfo = new ActivityInfo();
- activityResolveInfoDifferentPackage.activityInfo.packageName = "com.other.package";
- activityResolveInfoDifferentPackage.activityInfo.name = TEST_ACTIVITY;
-
- getShadowApplicationManager().addResolveInfoForIntent(
- DefaultAssistantPickerPreferenceController.ASSIST_SERVICE_PROBE,
- Lists.newArrayList(serviceResolveInfo));
- getShadowApplicationManager().addResolveInfoForIntent(
- DefaultAssistantPickerPreferenceController.ASSIST_ACTIVITY_PROBE,
- Lists.newArrayList(activityResolveInfoDifferentPackage));
- mController.getCandidates();
-
- String testKey = new ComponentName("com.other.package", TEST_ACTIVITY).flattenToString();
-
- mController.setCurrentDefault(testKey);
-
- assertThat(Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.ASSISTANT)).isEqualTo(testKey);
- assertThat(Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.VOICE_INTERACTION_SERVICE)).isEmpty();
- assertThat(Settings.Secure.getString(mContext.getContentResolver(),
- Settings.Secure.VOICE_RECOGNITION_SERVICE)).isEmpty();
- }
-
- private ShadowPackageManager getShadowApplicationManager() {
- return Shadows.shadowOf(mContext.getPackageManager());
- }
-}
diff --git a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerEntryPreferenceControllerTest.java
index 71f4362..cba714c 100644
--- a/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerEntryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/applications/defaultapps/DefaultAutofillPickerEntryPreferenceControllerTest.java
@@ -38,7 +38,6 @@
import com.android.car.settings.testutils.ShadowAutofillServiceInfo;
import com.android.car.settings.testutils.ShadowSecureSettings;
import com.android.settingslib.applications.DefaultAppInfo;
-import com.android.settingslib.wrapper.PackageManagerWrapper;
import com.google.android.collect.Lists;
@@ -91,8 +90,8 @@
@After
public void tearDown() {
- ShadowSecureSettings.reset();
ShadowAutofillServiceInfo.reset();
+ ShadowSecureSettings.reset();
}
@Test
@@ -152,9 +151,8 @@
ShadowPackageManager shadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
shadowPackageManager.addResolveInfoForIntent(intent, Collections.emptyList());
- DefaultAppInfo info = new DefaultAppInfo(mContext,
- new PackageManagerWrapper(mContext.getPackageManager()), TEST_USER_ID,
- ComponentName.unflattenFromString(TEST_COMPONENT));
+ DefaultAppInfo info = new DefaultAppInfo(mContext, mContext.getPackageManager(),
+ TEST_USER_ID, ComponentName.unflattenFromString(TEST_COMPONENT));
assertThat(mController.getSettingIntent(info)).isNull();
}
@@ -172,9 +170,8 @@
ShadowPackageManager shadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
shadowPackageManager.addResolveInfoForIntent(intent, Lists.newArrayList(resolveInfo));
- DefaultAppInfo info = new DefaultAppInfo(mContext,
- new PackageManagerWrapper(mContext.getPackageManager()), TEST_USER_ID,
- ComponentName.unflattenFromString(TEST_COMPONENT));
+ DefaultAppInfo info = new DefaultAppInfo(mContext, mContext.getPackageManager(),
+ TEST_USER_ID, ComponentName.unflattenFromString(TEST_COMPONENT));
Intent result = mController.getSettingIntent(info);
assertThat(result.getAction()).isEqualTo(Intent.ACTION_MAIN);
diff --git a/tests/robotests/src/com/android/car/settings/applications/managedomainurls/ClearDefaultsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/managedomainurls/ClearDefaultsPreferenceControllerTest.java
index b69ad96..453b938 100644
--- a/tests/robotests/src/com/android/car/settings/applications/managedomainurls/ClearDefaultsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/applications/managedomainurls/ClearDefaultsPreferenceControllerTest.java
@@ -118,7 +118,7 @@
@Test
public void refreshUi_isDefaultBrowser_hasSummary() {
- getShadowPackageManager().setDefaultBrowserPackageNameAsUser(TEST_PACKAGE_NAME, USER_ID);
+ mContext.getPackageManager().setDefaultBrowserPackageNameAsUser(TEST_PACKAGE_NAME, USER_ID);
mController.refreshUi();
assertThat(mPreference.getSummary().toString()).isNotEmpty();
@@ -156,13 +156,14 @@
@Test
public void performClick_hasUsbManager_isDefaultBrowser_clearsDefaultBrowser() {
- getShadowPackageManager().setDefaultBrowserPackageNameAsUser(TEST_PACKAGE_NAME, USER_ID);
- assertThat(
- getShadowPackageManager().getDefaultBrowserPackageNameAsUser(USER_ID)).isNotNull();
+ mContext.getPackageManager().setDefaultBrowserPackageNameAsUser(TEST_PACKAGE_NAME, USER_ID);
+ assertThat(mContext.getPackageManager().getDefaultBrowserPackageNameAsUser(
+ USER_ID)).isNotNull();
mController.refreshUi();
mPreference.performClick();
- assertThat(getShadowPackageManager().getDefaultBrowserPackageNameAsUser(USER_ID)).isNull();
+ assertThat(
+ mContext.getPackageManager().getDefaultBrowserPackageNameAsUser(USER_ID)).isNull();
}
@Test
diff --git a/tests/robotests/src/com/android/car/settings/applications/managedomainurls/DomainAppPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/managedomainurls/DomainAppPreferenceControllerTest.java
index e567cb6..412f782 100644
--- a/tests/robotests/src/com/android/car/settings/applications/managedomainurls/DomainAppPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/applications/managedomainurls/DomainAppPreferenceControllerTest.java
@@ -20,6 +20,8 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.testng.Assert.assertThrows;
@@ -36,6 +38,7 @@
import com.android.car.settings.CarSettingsRobolectricTestRunner;
import com.android.car.settings.common.LogicalPreferenceGroup;
import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowApplicationsState;
import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
import com.android.car.settings.testutils.ShadowIconDrawableFactory;
import com.android.car.settings.testutils.ShadowUserManager;
@@ -57,7 +60,7 @@
@RunWith(CarSettingsRobolectricTestRunner.class)
@Config(shadows = {ShadowUserManager.class, ShadowCarUserManagerHelper.class,
- ShadowIconDrawableFactory.class})
+ ShadowIconDrawableFactory.class, ShadowApplicationsState.class})
public class DomainAppPreferenceControllerTest {
private static final int USER_ID = 10;
@@ -73,10 +76,13 @@
private Lifecycle mLifecycle;
@Mock
private CarUserManagerHelper mCarUserManagerHelper;
+ @Mock
+ private ApplicationsState mApplicationsState;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
+ ShadowApplicationsState.setInstance(mApplicationsState);
ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(USER_ID);
@@ -84,6 +90,9 @@
getShadowUserManager().addProfile(USER_ID, USER_ID, "Test Name", /* profileFlags= */
FLAG_ADMIN);
+ when(mApplicationsState.newSession(any(), any())).thenReturn(
+ mock(ApplicationsState.Session.class));
+
mPreferenceGroup = new LogicalPreferenceGroup(mContext);
mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
DomainAppPreferenceController.class);
@@ -98,6 +107,7 @@
@After
public void tearDown() {
+ ShadowApplicationsState.reset();
ShadowCarUserManagerHelper.reset();
ShadowUserManager.reset();
}
diff --git a/tests/robotests/src/com/android/car/settings/applications/specialaccess/DirectoryAccessDetailsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/specialaccess/DirectoryAccessDetailsPreferenceControllerTest.java
deleted file mode 100644
index 146c978..0000000
--- a/tests/robotests/src/com/android/car/settings/applications/specialaccess/DirectoryAccessDetailsPreferenceControllerTest.java
+++ /dev/null
@@ -1,358 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications.specialaccess;
-
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.AUTHORITY;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.COL_GRANTED;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.TABLE_PERMISSIONS;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.TABLE_PERMISSIONS_COL_DIRECTORY;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.TABLE_PERMISSIONS_COL_GRANTED;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.TABLE_PERMISSIONS_COL_PACKAGE;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.TABLE_PERMISSIONS_COL_VOLUME_UUID;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-import static org.testng.Assert.assertThrows;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.net.Uri;
-import android.os.Environment;
-import android.os.storage.StorageManager;
-import android.os.storage.VolumeInfo;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-import androidx.preference.TwoStatePreference;
-
-import com.android.car.settings.CarSettingsRobolectricTestRunner;
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowStorageManager;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
-import org.robolectric.fakes.BaseCursor;
-import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowContentResolver;
-
-import java.util.Arrays;
-
-/** Unit test for {@link DirectoryAccessDetailsPreferenceController}. */
-@RunWith(CarSettingsRobolectricTestRunner.class)
-@Config(shadows = {ShadowStorageManager.class})
-public class DirectoryAccessDetailsPreferenceControllerTest {
-
- private static final String PACKAGE = "test.package";
-
- @Mock
- private BaseCursor mCursor;
- private Uri mProviderUri;
-
- private Context mContext;
- private PreferenceGroup mPreferenceGroup;
- private PreferenceControllerTestHelper<DirectoryAccessDetailsPreferenceController>
- mControllerHelper;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
-
- mContext = RuntimeEnvironment.application;
- mPreferenceGroup = new LogicalPreferenceGroup(mContext);
- mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
- DirectoryAccessDetailsPreferenceController.class);
- mControllerHelper.getController().setPackage(PACKAGE);
- mControllerHelper.setPreference(mPreferenceGroup);
-
- mProviderUri = new Uri.Builder()
- .scheme(ContentResolver.SCHEME_CONTENT)
- .authority(AUTHORITY)
- .appendPath(TABLE_PERMISSIONS)
- .appendPath("*")
- .build();
- getShadowContentResolver().setCursor(mProviderUri, mCursor);
- }
-
- @Test
- public void checkInitialized_noPackageSet_throwsIllegalStateException() {
- mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
- DirectoryAccessDetailsPreferenceController.class);
-
- assertThrows(IllegalStateException.class,
- () -> mControllerHelper.setPreference(new LogicalPreferenceGroup(mContext)));
- }
-
- @Test
- public void onCreate_primaryStoragePermission_addsPreference() {
- when(mCursor.getCount()).thenReturn(1);
- when(mCursor.moveToNext()).thenReturn(true).thenReturn(false);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_PACKAGE)).thenReturn(PACKAGE);
- // Null uuid for primary storage.
- when(mCursor.getString(TABLE_PERMISSIONS_COL_VOLUME_UUID)).thenReturn(null);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_DIRECTORY)).thenReturn(
- Environment.DIRECTORY_PICTURES);
-
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
- assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
- }
-
- @Test
- public void onCreate_primaryStoragePermission_granted_setsChecked() {
- when(mCursor.getCount()).thenReturn(1);
- when(mCursor.moveToNext()).thenReturn(true).thenReturn(false);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_PACKAGE)).thenReturn(PACKAGE);
- // Null uuid for primary storage.
- when(mCursor.getString(TABLE_PERMISSIONS_COL_VOLUME_UUID)).thenReturn(null);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_DIRECTORY)).thenReturn(
- Environment.DIRECTORY_PICTURES);
- when(mCursor.getInt(TABLE_PERMISSIONS_COL_GRANTED)).thenReturn(1);
-
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
- TwoStatePreference pref = (TwoStatePreference) mPreferenceGroup.getPreference(0);
- assertThat(pref.isChecked()).isTrue();
- }
-
- @Test
- public void onCreate_primaryStoragePermission_setsPreferenceTitleToDirectory() {
- String dirName = Environment.DIRECTORY_PICTURES;
- when(mCursor.getCount()).thenReturn(1);
- when(mCursor.moveToNext()).thenReturn(true).thenReturn(false);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_PACKAGE)).thenReturn(PACKAGE);
- // Null uuid for primary storage.
- when(mCursor.getString(TABLE_PERMISSIONS_COL_VOLUME_UUID)).thenReturn(null);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_DIRECTORY)).thenReturn(dirName);
-
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
- Preference pref = mPreferenceGroup.getPreference(0);
- assertThat(pref.getTitle()).isEqualTo(dirName);
- }
-
- @Test
- public void onCreate_externalVolumePermission_wholeVolume_addsPreference() {
- String name = "external volume";
- String uuid = "external uuid";
- VolumeInfo primaryStorage = mock(VolumeInfo.class);
- VolumeInfo external = mock(VolumeInfo.class);
- when(external.getFsUuid()).thenReturn(uuid);
- getShadowStorageManager().setVolumes(Arrays.asList(primaryStorage, external));
- getShadowStorageManager().setBestVolumeDescription(external, name);
-
- when(mCursor.getCount()).thenReturn(1);
- when(mCursor.moveToNext()).thenReturn(true).thenReturn(false);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_PACKAGE)).thenReturn(PACKAGE);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_VOLUME_UUID)).thenReturn(uuid);
- // Null directory indicates access for whole volume.
- when(mCursor.getString(TABLE_PERMISSIONS_COL_DIRECTORY)).thenReturn(null);
-
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
- assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
- assertThat(mPreferenceGroup.getPreference(0).getTitle()).isEqualTo(name);
- }
-
- @Test
- public void onCreate_externalVolumePermission_directory_addsWholeAndDirectoryPreferences() {
- String name = "external volume";
- String uuid = "external uuid";
- String dirName = Environment.DIRECTORY_PICTURES;
- VolumeInfo primaryStorage = mock(VolumeInfo.class);
- VolumeInfo external = mock(VolumeInfo.class);
- when(external.getFsUuid()).thenReturn(uuid);
- getShadowStorageManager().setVolumes(Arrays.asList(primaryStorage, external));
- getShadowStorageManager().setBestVolumeDescription(external, name);
-
- when(mCursor.getCount()).thenReturn(2);
- when(mCursor.moveToNext()).thenReturn(true).thenReturn(true).thenReturn(false);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_PACKAGE)).thenReturn(PACKAGE);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_VOLUME_UUID)).thenReturn(uuid);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_DIRECTORY)).thenReturn(null).thenReturn(
- dirName);
- // Root not granted.
- when(mCursor.getInt(TABLE_PERMISSIONS_COL_GRANTED)).thenReturn(0);
-
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
- assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
- assertThat(mPreferenceGroup.getPreference(0).getTitle()).isEqualTo(name);
- // External volume directory preference should have name of volume and directory.
- assertThat(mPreferenceGroup.getPreference(1).getTitle().toString()).contains(name);
- assertThat(mPreferenceGroup.getPreference(1).getTitle().toString()).contains(dirName);
- }
-
- @Test
- public void onCreate_externalVolumePermission_rootGranted_hidesDirectoryPreference() {
- String name = "external volume";
- String uuid = "external uuid";
- String dirName = Environment.DIRECTORY_PICTURES;
- VolumeInfo primaryStorage = mock(VolumeInfo.class);
- VolumeInfo external = mock(VolumeInfo.class);
- when(external.getFsUuid()).thenReturn(uuid);
- getShadowStorageManager().setVolumes(Arrays.asList(primaryStorage, external));
- getShadowStorageManager().setBestVolumeDescription(external, name);
-
- when(mCursor.getCount()).thenReturn(2);
- when(mCursor.moveToNext()).thenReturn(true).thenReturn(true).thenReturn(false);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_PACKAGE)).thenReturn(PACKAGE);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_VOLUME_UUID)).thenReturn(uuid);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_DIRECTORY)).thenReturn(null).thenReturn(
- dirName);
- // Root granted.
- when(mCursor.getInt(TABLE_PERMISSIONS_COL_GRANTED)).thenReturn(1);
-
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
-
- assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
- assertThat(mPreferenceGroup.getPreference(0).getTitle()).isEqualTo(name);
- }
-
- @Test
- public void onPreferenceClicked_primaryStorage_updatesContentProvider() {
- String dirName = Environment.DIRECTORY_PICTURES;
- when(mCursor.getCount()).thenReturn(1);
- when(mCursor.moveToNext()).thenReturn(true).thenReturn(false);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_PACKAGE)).thenReturn(PACKAGE);
- // Null uuid for primary storage.
- when(mCursor.getString(TABLE_PERMISSIONS_COL_VOLUME_UUID)).thenReturn(null);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_DIRECTORY)).thenReturn(dirName);
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
- Preference pref = mPreferenceGroup.getPreference(0);
-
- pref.performClick();
-
- assertThat(getShadowContentResolver().getUpdateStatements()).hasSize(1);
- ShadowContentResolver.UpdateStatement updateStatement =
- getShadowContentResolver().getUpdateStatements().get(0);
- assertThat(updateStatement.getUri()).isEqualTo(mProviderUri);
- assertThat(updateStatement.getContentValues().get(COL_GRANTED)).isEqualTo(true);
- assertThat(updateStatement.getSelectionArgs()).isEqualTo(
- new String[]{PACKAGE, null, dirName});
- }
-
- @Test
- public void onPreferenceClicked_externalStorage_updatesContentProvider() {
- String uuid = "external uuid";
- VolumeInfo primaryStorage = mock(VolumeInfo.class);
- VolumeInfo external = mock(VolumeInfo.class);
- when(external.getFsUuid()).thenReturn(uuid);
- getShadowStorageManager().setVolumes(Arrays.asList(primaryStorage, external));
- getShadowStorageManager().setBestVolumeDescription(external, "external volume");
-
- when(mCursor.getCount()).thenReturn(1);
- when(mCursor.moveToNext()).thenReturn(true).thenReturn(false);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_PACKAGE)).thenReturn(PACKAGE);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_VOLUME_UUID)).thenReturn(uuid);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_DIRECTORY)).thenReturn(null);
- // Root granted
- when(mCursor.getInt(TABLE_PERMISSIONS_COL_GRANTED)).thenReturn(1);
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
- Preference pref = mPreferenceGroup.getPreference(0);
-
- pref.performClick();
-
- assertThat(getShadowContentResolver().getUpdateStatements()).hasSize(1);
- ShadowContentResolver.UpdateStatement updateStatement =
- getShadowContentResolver().getUpdateStatements().get(0);
- assertThat(updateStatement.getUri()).isEqualTo(mProviderUri);
- assertThat(updateStatement.getContentValues().get(COL_GRANTED)).isEqualTo(false);
- assertThat(updateStatement.getSelectionArgs()).isEqualTo(
- new String[]{PACKAGE, uuid, null});
- }
-
- @Test
- public void onPreferenceClicked_externalStorage_directory_updatesContentProvider() {
- String uuid = "external uuid";
- String dirName = Environment.DIRECTORY_PICTURES;
- VolumeInfo primaryStorage = mock(VolumeInfo.class);
- VolumeInfo external = mock(VolumeInfo.class);
- when(external.getFsUuid()).thenReturn(uuid);
- getShadowStorageManager().setVolumes(Arrays.asList(primaryStorage, external));
- getShadowStorageManager().setBestVolumeDescription(external, "external volume");
-
- when(mCursor.getCount()).thenReturn(2);
- when(mCursor.moveToNext()).thenReturn(true).thenReturn(true).thenReturn(false);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_PACKAGE)).thenReturn(PACKAGE);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_VOLUME_UUID)).thenReturn(uuid);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_DIRECTORY)).thenReturn(null).thenReturn(
- dirName);
- // Root not granted.
- when(mCursor.getInt(TABLE_PERMISSIONS_COL_GRANTED)).thenReturn(0);
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
- Preference pref = mPreferenceGroup.getPreference(1);
-
- pref.performClick();
-
- assertThat(getShadowContentResolver().getUpdateStatements()).hasSize(1);
- ShadowContentResolver.UpdateStatement updateStatement =
- getShadowContentResolver().getUpdateStatements().get(0);
- assertThat(updateStatement.getUri()).isEqualTo(mProviderUri);
- assertThat(updateStatement.getContentValues().get(COL_GRANTED)).isEqualTo(true);
- assertThat(updateStatement.getSelectionArgs()).isEqualTo(
- new String[]{PACKAGE, uuid, dirName});
- }
-
- @Test
- public void onPreferenceClicked_refreshesUi() {
- String uuid = "external uuid";
- String dirName = Environment.DIRECTORY_PICTURES;
- VolumeInfo primaryStorage = mock(VolumeInfo.class);
- VolumeInfo external = mock(VolumeInfo.class);
- when(external.getFsUuid()).thenReturn(uuid);
- getShadowStorageManager().setVolumes(Arrays.asList(primaryStorage, external));
- getShadowStorageManager().setBestVolumeDescription(external, "external volume");
-
- when(mCursor.getCount()).thenReturn(2);
- // Setup for two iterations over cursor with two rows.
- when(mCursor.moveToNext()).thenReturn(true).thenReturn(true).thenReturn(false).thenReturn(
- true).thenReturn(true).thenReturn(false);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_PACKAGE)).thenReturn(PACKAGE);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_VOLUME_UUID)).thenReturn(uuid);
- when(mCursor.getString(TABLE_PERMISSIONS_COL_DIRECTORY)).thenReturn(null).thenReturn(
- dirName).thenReturn(null).thenReturn(dirName);
- // Root not granted, dir not granted -> root granted, dir not explicitly granted.
- when(mCursor.getInt(TABLE_PERMISSIONS_COL_GRANTED)).thenReturn(0).thenReturn(0).thenReturn(
- 1).thenReturn(0);
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
- assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
- Preference pref = mPreferenceGroup.getPreference(0);
-
- pref.performClick();
-
- // Granting access to root should hide the directory preference on refresh.
- assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
- }
-
- private ShadowContentResolver getShadowContentResolver() {
- return Shadows.shadowOf(mContext.getContentResolver());
- }
-
- private ShadowStorageManager getShadowStorageManager() {
- return Shadow.extract(mContext.getSystemService(StorageManager.class));
- }
-}
diff --git a/tests/robotests/src/com/android/car/settings/applications/specialaccess/DirectoryAccessPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/specialaccess/DirectoryAccessPreferenceControllerTest.java
deleted file mode 100644
index 3da0a44..0000000
--- a/tests/robotests/src/com/android/car/settings/applications/specialaccess/DirectoryAccessPreferenceControllerTest.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.applications.specialaccess;
-
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.AUTHORITY;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.TABLE_PACKAGES;
-import static android.os.storage.StorageVolume.ScopedAccessProviderContract.TABLE_PACKAGES_COL_PACKAGE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.isNull;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.pm.ApplicationInfo;
-import android.net.Uri;
-import android.os.Looper;
-
-import androidx.fragment.app.Fragment;
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-import androidx.preference.PreferenceGroup;
-
-import com.android.car.settings.CarSettingsRobolectricTestRunner;
-import com.android.car.settings.common.LogicalPreferenceGroup;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowApplicationsState;
-import com.android.car.settings.testutils.ShadowContentResolver;
-import com.android.settingslib.applications.ApplicationsState;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.fakes.BaseCursor;
-import org.robolectric.shadow.api.Shadow;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-/** Unit test for {@link DirectoryAccessPreferenceController}. */
-@RunWith(CarSettingsRobolectricTestRunner.class)
-@Config(shadows = {ShadowApplicationsState.class, ShadowContentResolver.class})
-public class DirectoryAccessPreferenceControllerTest {
-
- @Mock
- private AppEntryListManager mAppEntryListManager;
- @Mock
- private ApplicationsState mApplicationsState;
- @Captor
- private ArgumentCaptor<AppEntryListManager.AppFilterProvider> mFilterCaptor;
- @Captor
- private ArgumentCaptor<AppEntryListManager.Callback> mCallbackCaptor;
-
- private Context mContext;
- private PreferenceGroup mPreferenceGroup;
- private PreferenceControllerTestHelper<DirectoryAccessPreferenceController> mControllerHelper;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- ShadowApplicationsState.setInstance(mApplicationsState);
- when(mApplicationsState.getBackgroundLooper()).thenReturn(Looper.getMainLooper());
-
- mContext = RuntimeEnvironment.application;
- mPreferenceGroup = new LogicalPreferenceGroup(mContext);
- mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
- DirectoryAccessPreferenceController.class, mPreferenceGroup);
- mControllerHelper.getController().mAppEntryListManager = mAppEntryListManager;
- mControllerHelper.markState(Lifecycle.State.CREATED);
- verify(mAppEntryListManager).init(isNull(), mFilterCaptor.capture(),
- mCallbackCaptor.capture());
- }
-
- @After
- public void tearDown() {
- ShadowApplicationsState.reset();
- ShadowContentResolver.reset();
- }
-
- @Test
- public void onStart_startsListManager() {
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
-
- verify(mAppEntryListManager).start();
- }
-
- @Test
- public void onStop_stopsListManager() {
- mControllerHelper.markState(Lifecycle.State.STARTED);
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
-
- verify(mAppEntryListManager).stop();
- }
-
- @Test
- public void onDestroy_destroysListManager() {
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_DESTROY);
-
- verify(mAppEntryListManager).destroy();
- }
-
- @Test
- public void onAppEntryListChanged_addsPreferencesForEntries() {
- mControllerHelper.markState(Lifecycle.State.STARTED);
- List<ApplicationsState.AppEntry> entries = Arrays.asList(
- createAppEntry("test.package", /* uid= */ 1),
- createAppEntry("another.test.package", /* uid= */ 2));
-
- mCallbackCaptor.getValue().onAppEntryListChanged(entries);
-
- assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
- }
-
- @Test
- public void onPreferenceClicked_launchesDetailsFragmentForPackage() {
- mControllerHelper.markState(Lifecycle.State.STARTED);
- String packageName = "test.package";
- List<ApplicationsState.AppEntry> entries = Collections.singletonList(
- createAppEntry(packageName, /* uid= */ 1));
- mCallbackCaptor.getValue().onAppEntryListChanged(entries);
- Preference appPref = mPreferenceGroup.getPreference(0);
-
- appPref.performClick();
-
- ArgumentCaptor<Fragment> fragmentCaptor = ArgumentCaptor.forClass(Fragment.class);
- verify(mControllerHelper.getMockFragmentController()).launchFragment(
- fragmentCaptor.capture());
- assertThat(fragmentCaptor.getValue()).isInstanceOf(DirectoryAccessDetailsFragment.class);
- assertThat(fragmentCaptor.getValue().getArguments().getString(
- DirectoryAccessDetailsFragment.ARG_PACKAGE_NAME)).isEqualTo(packageName);
- }
-
- @Test
- public void appFilter_removesPackagesNotInScopedAccessProvider() {
- mControllerHelper.markState(Lifecycle.State.STARTED);
- String includedPackage = "test.package";
- String excludedPackage = "test.package2";
-
- BaseCursor cursor = mock(BaseCursor.class);
- when(cursor.getCount()).thenReturn(1);
- when(cursor.moveToNext()).thenReturn(true).thenReturn(false);
- when(cursor.getString(TABLE_PACKAGES_COL_PACKAGE)).thenReturn(includedPackage);
-
- Uri providerUri = new Uri.Builder()
- .scheme(ContentResolver.SCHEME_CONTENT)
- .authority(AUTHORITY)
- .appendPath(TABLE_PACKAGES)
- .appendPath("*")
- .build();
- getShadowContentResolver().setCursor(providerUri, cursor);
-
- ApplicationsState.AppFilter filter = mFilterCaptor.getValue().getAppFilter();
- filter.init(mContext);
-
- assertThat(filter.filterApp(createAppEntry(includedPackage, /* uid= */ 1))).isTrue();
- assertThat(filter.filterApp(createAppEntry(excludedPackage, /* uid= */ 2))).isFalse();
- }
-
- private ApplicationsState.AppEntry createAppEntry(String packageName, int uid) {
- ApplicationInfo info = new ApplicationInfo();
- info.packageName = packageName;
- info.uid = uid;
-
- ApplicationsState.AppEntry appEntry = mock(ApplicationsState.AppEntry.class);
- appEntry.info = info;
- appEntry.label = packageName;
-
- return appEntry;
- }
-
- private ShadowContentResolver getShadowContentResolver() {
- return Shadow.extract(mContext.getContentResolver());
- }
-}
diff --git a/tests/robotests/src/com/android/car/settings/applications/specialaccess/MoreSpecialAccessPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/applications/specialaccess/MoreSpecialAccessPreferenceControllerTest.java
new file mode 100644
index 0000000..de6cd2e
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/applications/specialaccess/MoreSpecialAccessPreferenceControllerTest.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.applications.specialaccess;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.ResolveInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowApplicationPackageManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowApplication;
+
+import java.util.Collections;
+
+/** Unit test for {@link MoreSpecialAccessPreferenceController}. */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowApplicationPackageManager.class})
+public class MoreSpecialAccessPreferenceControllerTest {
+
+ private static final String PACKAGE = "test.package";
+
+ private Context mContext;
+ private Preference mPreference;
+ private Intent mIntent;
+ private ResolveInfo mResolveInfo;
+
+ @Before
+ public void setUp() {
+ mContext = RuntimeEnvironment.application;
+ mPreference = new Preference(mContext);
+ mIntent = new Intent(Intent.ACTION_MANAGE_SPECIAL_APP_ACCESSES);
+ mIntent.setPackage(PACKAGE);
+
+ ApplicationInfo applicationInfo = new ApplicationInfo();
+ applicationInfo.packageName = PACKAGE;
+ applicationInfo.name = "TestClass";
+ ActivityInfo activityInfo = new ActivityInfo();
+ activityInfo.applicationInfo = applicationInfo;
+
+ mResolveInfo = new ResolveInfo();
+ mResolveInfo.activityInfo = activityInfo;
+ }
+
+ @After
+ public void tearDown() {
+ ShadowApplicationPackageManager.reset();
+ }
+
+ @Test
+ public void getAvailabilityStatus_noPermissionController_returnsUnsupportedOnDevice() {
+ PreferenceControllerTestHelper<MoreSpecialAccessPreferenceController> controllerHelper =
+ new PreferenceControllerTestHelper<>(mContext,
+ MoreSpecialAccessPreferenceController.class, mPreference);
+
+ assertThat(controllerHelper.getController().getAvailabilityStatus()).isEqualTo(
+ UNSUPPORTED_ON_DEVICE);
+ }
+
+ @Test
+ public void getAvailabilityStatus_noResolvedActivity_returnsUnsupportedOnDevice() {
+ getShadowApplicationPackageManager().setPermissionControllerPackageName(PACKAGE);
+
+ PreferenceControllerTestHelper<MoreSpecialAccessPreferenceController> controllerHelper =
+ new PreferenceControllerTestHelper<>(mContext,
+ MoreSpecialAccessPreferenceController.class, mPreference);
+
+ assertThat(controllerHelper.getController().getAvailabilityStatus()).isEqualTo(
+ UNSUPPORTED_ON_DEVICE);
+ }
+
+ @Test
+ public void getAvailabilityStatus_resolvedActivity_returnsAvailable() {
+ getShadowApplicationPackageManager().setPermissionControllerPackageName(PACKAGE);
+ getShadowApplicationPackageManager().setResolveInfosForIntent(mIntent,
+ Collections.singletonList(mResolveInfo));
+
+ PreferenceControllerTestHelper<MoreSpecialAccessPreferenceController> controllerHelper =
+ new PreferenceControllerTestHelper<>(mContext,
+ MoreSpecialAccessPreferenceController.class, mPreference);
+
+ assertThat(controllerHelper.getController().getAvailabilityStatus()).isEqualTo(
+ AVAILABLE);
+ }
+
+ @Test
+ public void preferenceClicked_startsResolvedActivity() {
+ getShadowApplicationPackageManager().setPermissionControllerPackageName(PACKAGE);
+ getShadowApplicationPackageManager().setResolveInfosForIntent(mIntent,
+ Collections.singletonList(mResolveInfo));
+
+ PreferenceControllerTestHelper<MoreSpecialAccessPreferenceController> controllerHelper =
+ new PreferenceControllerTestHelper<>(mContext,
+ MoreSpecialAccessPreferenceController.class, mPreference);
+ controllerHelper.markState(Lifecycle.State.STARTED);
+
+ mPreference.performClick();
+
+ Intent started = ShadowApplication.getInstance().getNextStartedActivity();
+ assertThat(started.getAction()).isEqualTo(Intent.ACTION_MANAGE_SPECIAL_APP_ACCESSES);
+ assertThat(started.getPackage()).isEqualTo(PACKAGE);
+ }
+
+ private ShadowApplicationPackageManager getShadowApplicationPackageManager() {
+ return Shadow.extract(mContext.getPackageManager());
+ }
+}
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceControllerTest.java
index 5c4b164..09790b0 100644
--- a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothDeviceNamePreferenceControllerTest.java
@@ -137,8 +137,7 @@
String summary = "summary";
when(mDevice.getCarConnectionSummary()).thenReturn(summary);
String otherSummary = "other summary";
- when(mCachedDeviceManager.getHearingAidPairDeviceSummary(mDevice)).thenReturn(
- "other summary");
+ when(mCachedDeviceManager.getSubDeviceSummary(mDevice)).thenReturn("other summary");
mController.refreshUi();
diff --git a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceControllerTest.java
index 6dba9bb..730186d 100644
--- a/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/bluetooth/BluetoothUnbondedDevicesPreferenceControllerTest.java
@@ -187,8 +187,7 @@
devicePreference.performClick();
- verify(mUnbondedCachedDevice).setPhonebookPermissionChoice(
- CachedBluetoothDevice.ACCESS_ALLOWED);
+ verify(mUnbondedDevice).setPhonebookAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
}
@Test
@@ -200,8 +199,7 @@
devicePreference.performClick();
- verify(mUnbondedCachedDevice).setMessagePermissionChoice(
- CachedBluetoothDevice.ACCESS_ALLOWED);
+ verify(mUnbondedDevice).setMessageAccessPermission(BluetoothDevice.ACCESS_ALLOWED);
}
@Test
diff --git a/tests/robotests/src/com/android/car/settings/common/ButtonPreferenceTest.java b/tests/robotests/src/com/android/car/settings/common/ButtonPreferenceTest.java
index 156fe33..f12036d 100644
--- a/tests/robotests/src/com/android/car/settings/common/ButtonPreferenceTest.java
+++ b/tests/robotests/src/com/android/car/settings/common/ButtonPreferenceTest.java
@@ -20,6 +20,8 @@
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
+import android.content.Context;
+import android.view.ContextThemeWrapper;
import android.view.View;
import androidx.preference.PreferenceViewHolder;
@@ -41,10 +43,12 @@
@Before
public void setUp() {
- View rootView = View.inflate(RuntimeEnvironment.application, R.layout.two_action_preference,
- null);
+ Context context = RuntimeEnvironment.application;
+ Context themedContext = new ContextThemeWrapper(context, R.style.CarSettingTheme);
+
+ View rootView = View.inflate(themedContext, R.layout.two_action_preference, null);
mViewHolder = PreferenceViewHolder.createInstanceForTests(rootView);
- mButtonPreference = new ButtonPreference(RuntimeEnvironment.application);
+ mButtonPreference = new ButtonPreference(context);
}
@Test
diff --git a/tests/robotests/src/com/android/car/settings/common/MasterSwitchPreferenceTest.java b/tests/robotests/src/com/android/car/settings/common/MasterSwitchPreferenceTest.java
index 7550967..c39281c 100644
--- a/tests/robotests/src/com/android/car/settings/common/MasterSwitchPreferenceTest.java
+++ b/tests/robotests/src/com/android/car/settings/common/MasterSwitchPreferenceTest.java
@@ -25,8 +25,8 @@
import android.content.Context;
import android.view.View;
-import android.widget.FrameLayout;
+import androidx.appcompat.view.ContextThemeWrapper;
import androidx.preference.PreferenceViewHolder;
import com.android.car.settings.CarSettingsRobolectricTestRunner;
@@ -51,9 +51,10 @@
public void setUp() {
MockitoAnnotations.initMocks(this);
Context context = RuntimeEnvironment.application;
- View rootView = View.inflate(context, R.layout.two_action_preference, null);
- View.inflate(context, R.layout.master_switch_widget,
- (FrameLayout) rootView.findViewById(android.R.id.widget_frame));
+ Context themedContext = new ContextThemeWrapper(context, R.style.CarSettingTheme);
+ View rootView = View.inflate(themedContext, R.layout.two_action_preference, null);
+ View.inflate(themedContext, R.layout.master_switch_widget,
+ rootView.findViewById(android.R.id.widget_frame));
mViewHolder = PreferenceViewHolder.createInstanceForTests(rootView);
mMasterSwitchPreference = new MasterSwitchPreference(context);
diff --git a/tests/robotests/src/com/android/car/settings/common/PreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/common/PreferenceControllerTest.java
index 29d0622..237d863 100644
--- a/tests/robotests/src/com/android/car/settings/common/PreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/common/PreferenceControllerTest.java
@@ -256,6 +256,7 @@
verify(mPreference).setVisible(true);
verify(mPreference).setEnabled(true);
}
+
@Test
public void refreshUi_created_availableForViewing_preferenceShownAndDisabled() {
mController.setAvailabilityStatus(AVAILABLE_FOR_VIEWING);
@@ -267,6 +268,7 @@
verify(mPreference).setVisible(true);
verify(mPreference).setEnabled(false);
}
+
@Test
public void refreshUi_created_notAvailable_preferenceHidden() {
mController.setAvailabilityStatus(CONDITIONALLY_UNAVAILABLE);
diff --git a/tests/robotests/src/com/android/car/settings/common/TwoActionPreferenceTest.java b/tests/robotests/src/com/android/car/settings/common/TwoActionPreferenceTest.java
index e6f9513..5cce802 100644
--- a/tests/robotests/src/com/android/car/settings/common/TwoActionPreferenceTest.java
+++ b/tests/robotests/src/com/android/car/settings/common/TwoActionPreferenceTest.java
@@ -20,6 +20,7 @@
import android.content.Context;
import android.os.Bundle;
+import android.view.ContextThemeWrapper;
import android.view.View;
import androidx.annotation.XmlRes;
@@ -56,7 +57,8 @@
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
- View rootView = View.inflate(mContext, R.layout.two_action_preference,
+ Context themedContext = new ContextThemeWrapper(mContext, R.style.CarSettingTheme);
+ View rootView = View.inflate(themedContext, R.layout.two_action_preference,
null);
mViewHolder = PreferenceViewHolder.createInstanceForTests(rootView);
mTestTwoActionPreference = new TestTwoActionPreference(mContext);
diff --git a/tests/robotests/src/com/android/car/settings/datausage/DataUsageSummaryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/datausage/DataUsageSummaryPreferenceControllerTest.java
index 1fb0c60..d0c5abc 100644
--- a/tests/robotests/src/com/android/car/settings/datausage/DataUsageSummaryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/datausage/DataUsageSummaryPreferenceControllerTest.java
@@ -360,8 +360,9 @@
SubscriptionInfo subInfo = new SubscriptionInfo(/* id= */ 0, /* iccId= */ "",
/* simSlotIndex= */ 0, /* displayName= */ "", name,
/* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
- /* roaming= */ 0, /* icon= */ null, /* mcc= */ 0, /* mnc= */ 0,
- /* countryIso= */ "");
+ /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", /* mnc= */ "",
+ /* countryIso= */ "", /* isEmbedded= */ false,
+ /* accessRules= */ null, /* cardString= */ "");
ShadowSubscriptionManager.setDefaultDataSubscriptionInfo(subInfo);
}
diff --git a/tests/robotests/src/com/android/car/settings/display/BrightnessLevelPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/display/BrightnessLevelPreferenceControllerTest.java
index 237333d..d501e79 100644
--- a/tests/robotests/src/com/android/car/settings/display/BrightnessLevelPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/display/BrightnessLevelPreferenceControllerTest.java
@@ -25,7 +25,6 @@
import android.car.userlib.CarUserManagerHelper;
import android.content.Context;
-import android.os.PowerManager;
import android.provider.Settings;
import androidx.lifecycle.Lifecycle;
@@ -34,7 +33,6 @@
import com.android.car.settings.common.PreferenceControllerTestHelper;
import com.android.car.settings.common.SeekBarPreference;
import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
-import com.android.car.settings.testutils.ShadowPowerManager;
import org.junit.After;
import org.junit.Before;
@@ -43,10 +41,8 @@
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
@RunWith(CarSettingsRobolectricTestRunner.class)
-@Config(shadows = {ShadowPowerManager.class})
public class BrightnessLevelPreferenceControllerTest {
private static final int CURRENT_USER = 10;
@@ -58,8 +54,6 @@
private int mMid;
@Mock
private CarUserManagerHelper mCarUserManagerHelper;
- @Mock
- private PowerManager mPowerManager;
@Before
public void setUp() {
@@ -74,9 +68,6 @@
ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
when(mCarUserManagerHelper.getCurrentProcessUserId()).thenReturn(CURRENT_USER);
- ShadowPowerManager.setInstance(mPowerManager);
- when(mPowerManager.getMinimumScreenBrightnessSetting()).thenReturn(mMin);
- when(mPowerManager.getMaximumScreenBrightnessSetting()).thenReturn(mMax);
mSeekBarPreference = new SeekBarPreference(mContext);
PreferenceControllerTestHelper<BrightnessLevelPreferenceController>
@@ -89,7 +80,6 @@
@After
public void tearDown() {
ShadowCarUserManagerHelper.reset();
- ShadowPowerManager.reset();
}
@Test
diff --git a/tests/robotests/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceControllerTest.java
index 35ec3e2..79f7691 100644
--- a/tests/robotests/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/inputmethod/EnabledKeyboardPreferenceControllerTest.java
@@ -40,6 +40,7 @@
import com.android.car.settings.testutils.ShadowDevicePolicyManager;
import com.android.car.settings.testutils.ShadowInputMethodManager;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -52,7 +53,6 @@
import java.util.ArrayList;
import java.util.List;
-
@RunWith(CarSettingsRobolectricTestRunner.class)
@Config(shadows = {ShadowInputMethodManager.class, ShadowDevicePolicyManager.class})
public class EnabledKeyboardPreferenceControllerTest {
@@ -82,6 +82,12 @@
mControllerHelper.markState(Lifecycle.State.CREATED);
}
+ @After
+ public void tearDown() {
+ getShadowInputMethodManager(mContext).reset();
+ getShadowDevicePolicyManager(mContext).reset();
+ }
+
@Test
public void refreshUi_permitAllInputMethods() {
getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
diff --git a/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceControllerTest.java
index 48ea47d..ef165fc 100644
--- a/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardManagementPreferenceControllerTest.java
@@ -92,6 +92,9 @@
mPermittedList = new ArrayList<>();
mPermittedList.add(DUMMY_PACKAGE_NAME);
mPermittedList.add(ALLOWED_PACKAGE_NAME);
+
+ getShadowInputMethodManager(mContext).setInputMethodList(new ArrayList<>());
+
mControllerHelper.markState(Lifecycle.State.CREATED);
}
diff --git a/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardPreferenceControllerTest.java
index 52a39ff..d51e9b1 100644
--- a/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/inputmethod/KeyboardPreferenceControllerTest.java
@@ -36,6 +36,7 @@
import com.android.car.settings.testutils.ShadowDevicePolicyManager;
import com.android.car.settings.testutils.ShadowInputMethodManager;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -77,6 +78,12 @@
mControllerHelper.markState(Lifecycle.State.CREATED);
}
+ @After
+ public void tearDown() {
+ ShadowInputMethodManager.reset();
+ ShadowDevicePolicyManager.reset();
+ }
+
@Test
public void refreshUi_noInputMethodInfo() {
getShadowDevicePolicyManager(mContext).setPermittedInputMethodsForCurrentUser(null);
diff --git a/tests/robotests/src/com/android/car/settings/location/LocationServicesPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/location/LocationServicesPreferenceControllerTest.java
index 500919c..65e8527 100644
--- a/tests/robotests/src/com/android/car/settings/location/LocationServicesPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/location/LocationServicesPreferenceControllerTest.java
@@ -23,11 +23,12 @@
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
import android.content.Context;
import android.content.Intent;
import android.location.SettingInjectorService;
+import android.os.UserHandle;
+import android.util.ArrayMap;
import androidx.lifecycle.Lifecycle;
import androidx.preference.Preference;
@@ -45,12 +46,15 @@
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.Map;
@RunWith(CarSettingsRobolectricTestRunner.class)
public class LocationServicesPreferenceControllerTest {
+
+ private static final int PROFILE_ID = UserHandle.USER_CURRENT;
+
@Mock
private SettingsInjector mSettingsInjector;
private Context mContext;
@@ -71,13 +75,12 @@
@Test
public void onCreate_addsInjectedSettingsToPreferenceCategory() {
- List<Preference> samplePrefs = getSamplePreferences();
- when(mSettingsInjector.hasInjectedSettings(anyInt())).thenReturn(true);
+ Map<Integer, List<Preference>> samplePrefs = getSamplePreferences();
doReturn(samplePrefs).when(mSettingsInjector)
.getInjectedSettings(any(Context.class), anyInt());
mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
- assertThat(mCategory.getPreferenceCount()).isEqualTo(samplePrefs.size());
+ assertThat(mCategory.getPreferenceCount()).isEqualTo(samplePrefs.get(PROFILE_ID).size());
}
@Test
@@ -101,7 +104,6 @@
@Test
public void preferenceCategory_isVisibleIfThereAreInjectedSettings() {
- doReturn(true).when(mSettingsInjector).hasInjectedSettings(anyInt());
doReturn(getSamplePreferences()).when(mSettingsInjector)
.getInjectedSettings(any(Context.class), anyInt());
mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
@@ -112,15 +114,17 @@
@Test
public void preferenceCategory_isHiddenIfThereAreNoInjectedSettings() {
- doReturn(false).when(mSettingsInjector).hasInjectedSettings(anyInt());
mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
mController.refreshUi();
assertThat(mCategory.isVisible()).isFalse();
}
- private List<Preference> getSamplePreferences() {
- return new ArrayList<>(Arrays.asList(
- new Preference(mContext), new Preference(mContext), new Preference(mContext)));
+ private Map<Integer, List<Preference>> getSamplePreferences() {
+ Map<Integer, List<Preference>> preferences = new ArrayMap<>();
+ preferences.put(PROFILE_ID,
+ Arrays.asList(new Preference(mContext), new Preference(mContext),
+ new Preference(mContext)));
+ return preferences;
}
}
diff --git a/tests/robotests/src/com/android/car/settings/location/RecentLocationRequestsPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/location/RecentLocationRequestsPreferenceControllerTest.java
index aa638cc..de03da8 100644
--- a/tests/robotests/src/com/android/car/settings/location/RecentLocationRequestsPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/location/RecentLocationRequestsPreferenceControllerTest.java
@@ -68,7 +68,7 @@
@Test
public void refreshUi_noRecentRequests_messageDisplayed() {
- when(mRecentLocationApps.getAppListSorted()).thenReturn(Collections.emptyList());
+ when(mRecentLocationApps.getAppListSorted(true)).thenReturn(Collections.emptyList());
mController.refreshUi();
assertThat(mScreen.getPreference(0).getTitle()).isEqualTo(
@@ -81,7 +81,7 @@
mock(RecentLocationApps.Request.class),
mock(RecentLocationApps.Request.class),
mock(RecentLocationApps.Request.class));
- when(mRecentLocationApps.getAppListSorted()).thenReturn(list);
+ when(mRecentLocationApps.getAppListSorted(true)).thenReturn(list);
mController.refreshUi();
assertThat(mScreen.getPreferenceCount()).isEqualTo(list.size());
@@ -93,7 +93,7 @@
mock(RecentLocationApps.Request.class),
mock(RecentLocationApps.Request.class),
mock(RecentLocationApps.Request.class));
- when(mRecentLocationApps.getAppListSorted()).thenReturn(list1);
+ when(mRecentLocationApps.getAppListSorted(true)).thenReturn(list1);
List<RecentLocationApps.Request> list2 = new ArrayList<>(list1);
list2.add(mock(RecentLocationApps.Request.class));
@@ -101,7 +101,7 @@
mController.refreshUi();
assertThat(mScreen.getPreferenceCount()).isEqualTo(list1.size());
- when(mRecentLocationApps.getAppListSorted()).thenReturn(list2);
+ when(mRecentLocationApps.getAppListSorted(true)).thenReturn(list2);
mController.refreshUi();
assertThat(mScreen.getPreferenceCount()).isEqualTo(list2.size());
diff --git a/tests/robotests/src/com/android/car/settings/network/AddMobileNetworkPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/network/AddMobileNetworkPreferenceControllerTest.java
new file mode 100644
index 0000000..14e32d0
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/network/AddMobileNetworkPreferenceControllerTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.network;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.content.pm.ResolveInfo;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowEuiccManager;
+import org.robolectric.shadows.ShadowPackageManager;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class AddMobileNetworkPreferenceControllerTest {
+
+ private Context mContext;
+ private AddMobileNetworkPreferenceController mController;
+
+ @Before
+ public void setUp() {
+ mContext = RuntimeEnvironment.application;
+ PreferenceControllerTestHelper<AddMobileNetworkPreferenceController> controllerHelper =
+ new PreferenceControllerTestHelper<>(mContext,
+ AddMobileNetworkPreferenceController.class, new Preference(mContext));
+ mController = controllerHelper.getController();
+ controllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+ }
+
+ @After
+ public void tearDown() {
+ ShadowPackageManager.reset();
+ }
+
+ @Test
+ public void getAvailabilityStatus_euiccDisabled_isUnsupported() {
+ getShadowEuiccManager().setIsEnabled(false);
+
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+ }
+
+ @Test
+ public void getAvailabilityStatus_euiccEnabled_intentResolves_isAvailable() {
+ getShadowEuiccManager().setIsEnabled(true);
+ getShadowPackageManager().addResolveInfoForIntent(
+ AddMobileNetworkPreferenceController.ADD_NETWORK_INTENT, new ResolveInfo());
+
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+ }
+
+ @Test
+ public void getAvailabilityStatus_euiccEnabled_intentFailsToResolve_isUnsupported() {
+ getShadowEuiccManager().setIsEnabled(true);
+
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+ }
+
+ private ShadowPackageManager getShadowPackageManager() {
+ return Shadow.extract(mContext.getPackageManager());
+ }
+
+ private ShadowEuiccManager getShadowEuiccManager() {
+ return Shadow.extract(mContext.getSystemService(Context.EUICC_SERVICE));
+ }
+}
diff --git a/tests/robotests/src/com/android/car/settings/network/ConfirmMobileDataDisableDialogTest.java b/tests/robotests/src/com/android/car/settings/network/ConfirmMobileDataDisableDialogTest.java
deleted file mode 100644
index 8cd7370..0000000
--- a/tests/robotests/src/com/android/car/settings/network/ConfirmMobileDataDisableDialogTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.network;
-
-import static org.mockito.Mockito.verify;
-
-import android.app.AlertDialog;
-import android.content.DialogInterface;
-
-import com.android.car.settings.CarSettingsRobolectricTestRunner;
-import com.android.car.settings.testutils.BaseTestActivity;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.Robolectric;
-import org.robolectric.shadows.ShadowDialog;
-
-@RunWith(CarSettingsRobolectricTestRunner.class)
-public class ConfirmMobileDataDisableDialogTest {
-
- private ConfirmMobileDataDisableDialog mDialog;
- @Mock
- private ConfirmMobileDataDisableDialog.ConfirmMobileDataDisableListener mListener;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- mDialog = new ConfirmMobileDataDisableDialog();
- mDialog.setListener(mListener);
- }
-
- @Test
- public void confirmDisable_disableCallbackCalled() {
- AlertDialog dialog = showDialog(mDialog);
- dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
-
- verify(mListener).onMobileDataDisableConfirmed();
- }
-
- @Test
- public void rejectDisable_rejectCallbackCalled() {
- AlertDialog dialog = showDialog(mDialog);
- dialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick();
-
- verify(mListener).onMobileDataDisableRejected();
- }
-
- private AlertDialog showDialog(ConfirmMobileDataDisableDialog fragment) {
- BaseTestActivity activity = Robolectric.setupActivity(BaseTestActivity.class);
- activity.showDialog(fragment, /* tag= */ null);
- return (AlertDialog) ShadowDialog.getLatestDialog();
- }
-}
diff --git a/tests/robotests/src/com/android/car/settings/network/MobileDataTogglePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/network/MobileDataTogglePreferenceControllerTest.java
index 7329d79..676e2db 100644
--- a/tests/robotests/src/com/android/car/settings/network/MobileDataTogglePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/network/MobileDataTogglePreferenceControllerTest.java
@@ -22,7 +22,12 @@
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
+import android.app.AlertDialog;
import android.content.Context;
+import android.content.DialogInterface;
+import android.provider.Settings;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import androidx.lifecycle.Lifecycle;
@@ -30,20 +35,31 @@
import androidx.preference.TwoStatePreference;
import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.ConfirmationDialogFragment;
import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowSubscriptionManager;
import com.android.car.settings.testutils.ShadowTelephonyManager;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.robolectric.Robolectric;
import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowContentResolver;
+import org.robolectric.shadows.ShadowDialog;
@RunWith(CarSettingsRobolectricTestRunner.class)
-@Config(shadows = {ShadowTelephonyManager.class})
+@Config(shadows = {ShadowTelephonyManager.class, ShadowSubscriptionManager.class})
public class MobileDataTogglePreferenceControllerTest {
+ private static final int SUB_ID = 1;
+
private Context mContext;
private TwoStatePreference mPreference;
private PreferenceControllerTestHelper<MobileDataTogglePreferenceController>
@@ -54,19 +70,71 @@
@Before
public void setUp() {
mContext = RuntimeEnvironment.application;
- mPreference = new SwitchPreference(mContext);
mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
- MobileDataTogglePreferenceController.class, mPreference);
+ MobileDataTogglePreferenceController.class);
mController = mControllerHelper.getController();
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
-
mTelephonyManager.setDataEnabled(false);
+
+ getShadowTelephonyManager().setTelephonyManagerForSubscriptionId(SUB_ID, mTelephonyManager);
+ mController.setSubId(SUB_ID);
+
+ mPreference = new SwitchPreference(mContext);
+ mControllerHelper.setPreference(mPreference);
+
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
}
@After
public void tearDown() {
ShadowTelephonyManager.reset();
+ ShadowSubscriptionManager.reset();
+ }
+
+ @Test
+ public void onStart_singleSim_registersObserver() {
+ ShadowTelephonyManager.setSimCount(1);
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+ assertThat(getShadowContentResolver().getContentObservers(
+ Settings.Global.getUriFor(Settings.Global.MOBILE_DATA))).isNotEmpty();
+ }
+
+ @Test
+ public void onStart_multiSim_registersObserver() {
+ ShadowTelephonyManager.setSimCount(2);
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+ assertThat(getShadowContentResolver().getContentObservers(
+ Settings.Global.getUriFor(Settings.Global.MOBILE_DATA + SUB_ID))).isNotEmpty();
+ }
+
+ @Test
+ public void onStop_singleSim_unregistersObserver() {
+ ShadowTelephonyManager.setSimCount(1);
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+ assertThat(getShadowContentResolver().getContentObservers(
+ Settings.Global.getUriFor(Settings.Global.MOBILE_DATA))).isEmpty();
+ }
+
+ @Test
+ public void refreshUi_isOpportunistic_isDisabled() {
+ getShadowSubscriptionManager().setActiveSubscriptionInfos(
+ createSubscriptionInfo(SUB_ID, /* isOpportunistic= */ true));
+ mController.refreshUi();
+
+ assertThat(mPreference.isEnabled()).isFalse();
+ }
+
+ @Test
+ public void refreshUi_isNotOpportunistic_isEnabled() {
+ getShadowSubscriptionManager().setActiveSubscriptionInfos(
+ createSubscriptionInfo(SUB_ID, /* isOpportunistic= */ false));
+ mController.refreshUi();
+
+ assertThat(mPreference.isEnabled()).isTrue();
}
@Test
@@ -86,54 +154,210 @@
}
@Test
- public void handlePreferenceChanged_setFalse_opensDialog() {
+ public void handlePreferenceChanged_setFalse_isSingleSim_opensDialog() {
+ ShadowTelephonyManager.setSimCount(1);
mPreference.callChangeListener(false);
verify(mControllerHelper.getMockFragmentController()).showDialog(
- any(ConfirmMobileDataDisableDialog.class), eq(ConfirmMobileDataDisableDialog.TAG));
+ any(ConfirmationDialogFragment.class),
+ eq(MobileDataTogglePreferenceController.DISABLE_DIALOG_TAG));
}
@Test
- public void handlePreferenceChanged_setTrue_enablesData() {
+ public void handlePreferenceChanged_setFalse_isMultiSim_disablesData() {
+ mPreference.setChecked(true);
+ mTelephonyManager.setDataEnabled(true);
+ ShadowTelephonyManager.setSimCount(2);
+ mPreference.callChangeListener(false);
+
+ assertThat(mTelephonyManager.isDataEnabled()).isFalse();
+ }
+
+ @Test
+ public void handlePreferenceChanged_setFalse_isMultiSim_setsUnchecked() {
+ mPreference.setChecked(true);
+ mTelephonyManager.setDataEnabled(true);
+ ShadowTelephonyManager.setSimCount(2);
+ mPreference.callChangeListener(false);
+
+ assertThat(mPreference.isChecked()).isFalse();
+ }
+
+ @Test
+ public void handlePreferenceChanged_setTrue_isSingleSim_enablesData() {
+ mPreference.setChecked(false);
+ mTelephonyManager.setDataEnabled(false);
+ ShadowTelephonyManager.setSimCount(1);
mPreference.callChangeListener(true);
assertThat(mTelephonyManager.isDataEnabled()).isTrue();
}
@Test
- public void handlePreferenceChanged_setTrue_checksSwitch() {
+ public void handlePreferenceChanged_setTrue_isSingleSim_setsChecked() {
mPreference.setChecked(false);
+ mTelephonyManager.setDataEnabled(false);
+ ShadowTelephonyManager.setSimCount(1);
mPreference.callChangeListener(true);
assertThat(mPreference.isChecked()).isTrue();
}
@Test
- public void onMobileDataDisableConfirmed_unchecksSwitch() {
- mTelephonyManager.setDataEnabled(true);
- mPreference.setChecked(true);
+ public void handlePreferenceChanged_setTrue_isMultiSim_noOtherSimActive_enablesData() {
+ mPreference.setChecked(false);
+ mTelephonyManager.setDataEnabled(false);
+ ShadowTelephonyManager.setSimCount(2);
+ ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID);
+ getShadowSubscriptionManager().setCurrentActiveSubscriptionId(SUB_ID);
+ mPreference.callChangeListener(true);
- mController.onMobileDataDisableConfirmed();
-
- assertThat(mPreference.isChecked()).isFalse();
+ assertThat(mTelephonyManager.isDataEnabled()).isTrue();
}
@Test
- public void onMobileDataDisableConfirmed_disablesMobileData() {
- mTelephonyManager.setDataEnabled(true);
+ public void handlePreferenceChanged_setTrue_isMultiSim_noOtherSimActive_setsChecked() {
+ mPreference.setChecked(false);
+ mTelephonyManager.setDataEnabled(false);
+ ShadowTelephonyManager.setSimCount(2);
+ ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUB_ID);
+ getShadowSubscriptionManager().setCurrentActiveSubscriptionId(SUB_ID);
+ mPreference.callChangeListener(true);
- mController.onMobileDataDisableConfirmed();
+ assertThat(mPreference.isChecked()).isTrue();
+ }
+
+ @Test
+ public void handlePreferenceChanged_setTrue_isMultiSim_otherSimActive_opensDialog() {
+ int otherSubId = SUB_ID + 1;
+ mPreference.setChecked(false);
+ mTelephonyManager.setDataEnabled(false);
+ ShadowTelephonyManager.setSimCount(2);
+ ShadowSubscriptionManager.setDefaultDataSubscriptionId(otherSubId);
+ getShadowSubscriptionManager().setCurrentActiveSubscriptionId(otherSubId);
+ mPreference.callChangeListener(true);
+
+ verify(mControllerHelper.getMockFragmentController()).showDialog(
+ any(ConfirmationDialogFragment.class),
+ eq(MobileDataTogglePreferenceController.ENABLE_MULTISIM_DIALOG_TAG));
+ }
+
+ @Test
+ public void disableSingleSimDialog_onConfirm_disablesData() {
+ mPreference.setChecked(true);
+ mTelephonyManager.setDataEnabled(true);
+ ShadowTelephonyManager.setSimCount(1);
+ mPreference.callChangeListener(false);
+
+ ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+ ConfirmationDialogFragment.class);
+ verify(mControllerHelper.getMockFragmentController()).showDialog(
+ dialogCaptor.capture(),
+ eq(MobileDataTogglePreferenceController.DISABLE_DIALOG_TAG));
+
+ ConfirmationDialogFragment dialog = dialogCaptor.getValue();
+ assertThat(dialogCaptor).isNotNull();
+ AlertDialog alertDialog = showDialog(dialog);
+ alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
assertThat(mTelephonyManager.isDataEnabled()).isFalse();
}
@Test
- public void onMobileDataDisableRejected_checksSwitch() {
+ public void disableSingleSimDialog_onConfirm_setsUnchecked() {
+ mPreference.setChecked(true);
mTelephonyManager.setDataEnabled(true);
- mPreference.setChecked(false);
+ ShadowTelephonyManager.setSimCount(1);
+ mPreference.callChangeListener(false);
- mController.onMobileDataDisableRejected();
+ ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+ ConfirmationDialogFragment.class);
+ verify(mControllerHelper.getMockFragmentController()).showDialog(
+ dialogCaptor.capture(),
+ eq(MobileDataTogglePreferenceController.DISABLE_DIALOG_TAG));
+
+ ConfirmationDialogFragment dialog = dialogCaptor.getValue();
+ assertThat(dialogCaptor).isNotNull();
+ AlertDialog alertDialog = showDialog(dialog);
+ alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+
+ assertThat(mPreference.isChecked()).isFalse();
+ }
+
+ @Test
+ public void enableMutliSimDialog_onConfirm_enablesData() {
+ int otherSubId = SUB_ID + 1;
+ mPreference.setChecked(false);
+ mTelephonyManager.setDataEnabled(false);
+ ShadowTelephonyManager.setSimCount(2);
+ ShadowSubscriptionManager.setDefaultDataSubscriptionId(otherSubId);
+ getShadowSubscriptionManager().setCurrentActiveSubscriptionId(otherSubId);
+ mPreference.callChangeListener(true);
+
+ ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+ ConfirmationDialogFragment.class);
+ verify(mControllerHelper.getMockFragmentController()).showDialog(
+ dialogCaptor.capture(),
+ eq(MobileDataTogglePreferenceController.ENABLE_MULTISIM_DIALOG_TAG));
+
+ ConfirmationDialogFragment dialog = dialogCaptor.getValue();
+ assertThat(dialogCaptor).isNotNull();
+ AlertDialog alertDialog = showDialog(dialog);
+ alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+
+ assertThat(mTelephonyManager.isDataEnabled()).isTrue();
+ }
+
+ @Test
+ public void enableMutliSimDialog_onConfirm_setsChecked() {
+ int otherSubId = SUB_ID + 1;
+ mPreference.setChecked(false);
+ mTelephonyManager.setDataEnabled(false);
+ ShadowTelephonyManager.setSimCount(2);
+ ShadowSubscriptionManager.setDefaultDataSubscriptionId(otherSubId);
+ getShadowSubscriptionManager().setCurrentActiveSubscriptionId(otherSubId);
+ mPreference.callChangeListener(true);
+
+ ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+ ConfirmationDialogFragment.class);
+ verify(mControllerHelper.getMockFragmentController()).showDialog(
+ dialogCaptor.capture(),
+ eq(MobileDataTogglePreferenceController.ENABLE_MULTISIM_DIALOG_TAG));
+
+ ConfirmationDialogFragment dialog = dialogCaptor.getValue();
+ assertThat(dialogCaptor).isNotNull();
+ AlertDialog alertDialog = showDialog(dialog);
+ alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
assertThat(mPreference.isChecked()).isTrue();
}
+
+ private ShadowTelephonyManager getShadowTelephonyManager() {
+ return (ShadowTelephonyManager) Shadows.shadowOf(mTelephonyManager);
+ }
+
+ private ShadowContentResolver getShadowContentResolver() {
+ return (ShadowContentResolver) Shadows.shadowOf(mContext.getContentResolver());
+ }
+
+ private ShadowSubscriptionManager getShadowSubscriptionManager() {
+ return Shadow.extract(mContext.getSystemService(SubscriptionManager.class));
+ }
+
+ private SubscriptionInfo createSubscriptionInfo(int subId, boolean isOpportunistic) {
+ SubscriptionInfo subInfo = new SubscriptionInfo(subId, /* iccId= */ "",
+ /* simSlotIndex= */ 0, /* displayName= */ "", /* carrierName= */ "",
+ /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
+ /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", /* mnc= */ "",
+ /* countryIso= */ "", /* isEmbedded= */ false,
+ /* accessRules= */ null, /* cardString= */ "", isOpportunistic,
+ /* groupUUID= */ null, /* carrierId= */ 0, /* profileClass= */ 0);
+ return subInfo;
+ }
+
+ private AlertDialog showDialog(ConfirmationDialogFragment dialog) {
+ BaseTestActivity activity = Robolectric.setupActivity(BaseTestActivity.class);
+ activity.showDialog(dialog, /* tag= */ null);
+ return (AlertDialog) ShadowDialog.getLatestDialog();
+ }
}
diff --git a/tests/robotests/src/com/android/car/settings/network/MobileNetworkEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/network/MobileNetworkEntryPreferenceControllerTest.java
index ba06e29..917a41f 100644
--- a/tests/robotests/src/com/android/car/settings/network/MobileNetworkEntryPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/network/MobileNetworkEntryPreferenceControllerTest.java
@@ -22,43 +22,53 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.robolectric.shadow.api.Shadow.extract;
import android.car.userlib.CarUserManagerHelper;
import android.content.Context;
-import android.content.Intent;
import android.content.pm.UserInfo;
import android.net.ConnectivityManager;
import android.net.NetworkCapabilities;
import android.os.UserManager;
-import android.provider.Settings;
-import android.telephony.PhoneStateListener;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
+import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.preference.Preference;
import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
import com.android.car.settings.common.PreferenceControllerTestHelper;
import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
import com.android.car.settings.testutils.ShadowConnectivityManager;
+import com.android.car.settings.testutils.ShadowSubscriptionManager;
import com.android.car.settings.testutils.ShadowTelephonyManager;
+import com.google.android.collect.Lists;
+
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
-import org.robolectric.shadows.ShadowApplication;
+import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowNetwork;
+import java.util.List;
+
@RunWith(CarSettingsRobolectricTestRunner.class)
@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowConnectivityManager.class,
- ShadowTelephonyManager.class})
+ ShadowTelephonyManager.class, ShadowSubscriptionManager.class})
public class MobileNetworkEntryPreferenceControllerTest {
private static final String TEST_NETWORK_NAME = "test network name";
@@ -106,60 +116,6 @@
}
@Test
- public void onStart_phoneStateListenerSet() {
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
- assertThat(getShadowTelephonyManager().getListenersForFlags(
- PhoneStateListener.LISTEN_SERVICE_STATE).size()).isEqualTo(1);
- }
-
- @Test
- public void onStop_phoneStateListenerUnset() {
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
- assertThat(getShadowTelephonyManager().getListenersForFlags(
- PhoneStateListener.LISTEN_SERVICE_STATE).size()).isEqualTo(1);
-
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
- assertThat(getShadowTelephonyManager().getListenersForFlags(
- PhoneStateListener.LISTEN_SERVICE_STATE).size()).isEqualTo(0);
- }
-
- @Test
- public void onStart_airplaneModeChangedListenerSet() {
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
- // One receiver (bluetooth pairing request) is always registered through the manifest.
- assertThat(ShadowApplication.getInstance().getRegisteredReceivers().size()).isGreaterThan(
- 0);
-
- boolean hasMatch = false;
- for (ShadowApplication.Wrapper wrapper :
- ShadowApplication.getInstance().getRegisteredReceivers()) {
- if (wrapper.getIntentFilter().hasAction(Intent.ACTION_AIRPLANE_MODE_CHANGED)) {
- hasMatch = true;
- }
- }
- assertThat(hasMatch).isTrue();
- }
-
- @Test
- public void onStop_airplaneModeChangedListenerUnset() {
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
- int prevSize = ShadowApplication.getInstance().getRegisteredReceivers().size();
- assertThat(prevSize).isGreaterThan(0);
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
- assertThat(ShadowApplication.getInstance().getRegisteredReceivers().size()).isLessThan(
- prevSize);
-
- boolean hasMatch = false;
- for (ShadowApplication.Wrapper wrapper :
- ShadowApplication.getInstance().getRegisteredReceivers()) {
- if (wrapper.getIntentFilter().hasAction(Intent.ACTION_AIRPLANE_MODE_CHANGED)) {
- hasMatch = true;
- }
- }
- assertThat(hasMatch).isFalse();
- }
-
- @Test
public void getAvailabilityStatus_noMobileNetwork_unsupported() {
when(mNetworkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)).thenReturn(
false);
@@ -199,8 +155,7 @@
}
@Test
- public void refreshUi_airplaneModeOn_preferenceDisabled() {
- Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 1);
+ public void refreshUi_noSims_disabled() {
mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
mController.refreshUi();
@@ -208,8 +163,12 @@
}
@Test
- public void refreshUi_airplaneModeOff_preferenceEnabled() {
- Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0);
+ public void refreshUi_oneSim_enabled() {
+ SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1,
+ /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
+ List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+ getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
+
mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
mController.refreshUi();
@@ -217,8 +176,12 @@
}
@Test
- public void refreshUi_summarySet() {
- getShadowTelephonyManager().setNetworkOperatorName(TEST_NETWORK_NAME);
+ public void refreshUi_oneSim_summaryIsDisplayName() {
+ SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1,
+ /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
+ List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+ getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
+
mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
mController.refreshUi();
@@ -226,23 +189,78 @@
}
@Test
- public void sendBroadcast_airplaneModeOn_disablePreference() {
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
- mPreference.setEnabled(true);
- Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 1);
- mContext.sendBroadcast(new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED));
+ public void refreshUi_multiSim_enabled() {
+ SubscriptionInfo info1 = createSubscriptionInfo(/* subId= */ 1,
+ /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
+ SubscriptionInfo info2 = createSubscriptionInfo(/* subId= */ 2,
+ /* simSlotIndex= */ 2, TEST_NETWORK_NAME);
+ List<SubscriptionInfo> selectable = Lists.newArrayList(info1, info2);
+ getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
- assertThat(mPreference.isEnabled()).isFalse();
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+ mController.refreshUi();
+
+ assertThat(mPreference.isEnabled()).isTrue();
}
@Test
- public void sendBroadcast_airplaneModeOff_enablePreference() {
- mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
- mPreference.setEnabled(false);
- Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.AIRPLANE_MODE_ON, 0);
- mContext.sendBroadcast(new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED));
+ public void refreshUi_multiSim_summaryShowsCount() {
+ SubscriptionInfo info1 = createSubscriptionInfo(/* subId= */ 1,
+ /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
+ SubscriptionInfo info2 = createSubscriptionInfo(/* subId= */ 2,
+ /* simSlotIndex= */ 2, TEST_NETWORK_NAME);
+ List<SubscriptionInfo> selectable = Lists.newArrayList(info1, info2);
+ getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
- assertThat(mPreference.isEnabled()).isTrue();
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+ mController.refreshUi();
+
+ assertThat(mPreference.getSummary()).isEqualTo(mContext.getResources().getQuantityString(
+ R.plurals.mobile_network_summary_count, 2, 2));
+ }
+
+ @Test
+ public void performClick_noSim_noFragmentStarted() {
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+ mPreference.performClick();
+
+ verify(mControllerHelper.getMockFragmentController(), never()).launchFragment(
+ any(Fragment.class));
+ }
+
+ @Test
+ public void performClick_oneSim_startsMobileNetworkFragment() {
+ int subId = 1;
+ SubscriptionInfo info = createSubscriptionInfo(subId, /* simSlotIndex= */ 1,
+ TEST_NETWORK_NAME);
+ List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+ getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
+
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+ mPreference.performClick();
+
+ ArgumentCaptor<MobileNetworkFragment> captor = ArgumentCaptor.forClass(
+ MobileNetworkFragment.class);
+ verify(mControllerHelper.getMockFragmentController()).launchFragment(captor.capture());
+
+ assertThat(captor.getValue().getArguments().getInt(MobileNetworkFragment.ARG_NETWORK_SUB_ID,
+ -1)).isEqualTo(subId);
+ }
+
+ @Test
+ public void performClick_multiSim_startsMobileNetworkListFragment() {
+ SubscriptionInfo info1 = createSubscriptionInfo(/* subId= */ 1,
+ /* simSlotIndex= */ 1, TEST_NETWORK_NAME);
+ SubscriptionInfo info2 = createSubscriptionInfo(/* subId= */ 2,
+ /* simSlotIndex= */ 2, TEST_NETWORK_NAME);
+ List<SubscriptionInfo> selectable = Lists.newArrayList(info1, info2);
+ getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
+
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+ mPreference.performClick();
+
+ verify(mControllerHelper.getMockFragmentController()).launchFragment(
+ any(MobileNetworkListFragment.class));
}
private ShadowTelephonyManager getShadowTelephonyManager() {
@@ -253,4 +271,19 @@
return (ShadowConnectivityManager) extract(
mContext.getSystemService(ConnectivityManager.class));
}
+
+ private ShadowSubscriptionManager getShadowSubscriptionManager() {
+ return Shadow.extract(mContext.getSystemService(SubscriptionManager.class));
+ }
+
+ private SubscriptionInfo createSubscriptionInfo(int subId, int simSlotIndex,
+ String displayName) {
+ SubscriptionInfo subInfo = new SubscriptionInfo(subId, /* iccId= */ "",
+ simSlotIndex, displayName, /* carrierName= */ "",
+ /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
+ /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", "mncString",
+ /* countryIso= */ "", /* isEmbedded= */ false,
+ /* accessRules= */ null, /* cardString= */ "");
+ return subInfo;
+ }
}
diff --git a/tests/robotests/src/com/android/car/settings/network/MobileNetworkFragmentTest.java b/tests/robotests/src/com/android/car/settings/network/MobileNetworkFragmentTest.java
new file mode 100644
index 0000000..aee5ac6
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/network/MobileNetworkFragmentTest.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.network;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.widget.TextView;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.FragmentController;
+import com.android.car.settings.testutils.ShadowSubscriptionManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.Collections;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowSubscriptionManager.class})
+public class MobileNetworkFragmentTest {
+
+ private static final int SUB_ID = 1;
+ private static final String TEST_NAME = "Test Name";
+
+ private Context mContext;
+ private FragmentController<MobileNetworkFragment> mFragmentController;
+ private MobileNetworkFragment mFragment;
+
+ @Before
+ public void setUp() {
+ mContext = RuntimeEnvironment.application;
+ }
+
+ @After
+ public void tearDown() {
+ ShadowSubscriptionManager.reset();
+ }
+
+ @Test
+ public void onMobileNetworkUpdated_startWithArgument_updateTitle() {
+ setUpFragmentWithSubId(SUB_ID, TEST_NAME);
+ getShadowSubscriptionManager().setSelectableSubscriptionInfoList(
+ Collections.singletonList(createSubscriptionInfo(SUB_ID, TEST_NAME)));
+ getShadowSubscriptionManager().setActiveSubscriptionInfos(
+ createSubscriptionInfo(SUB_ID + 1, TEST_NAME + "_1"),
+ createSubscriptionInfo(SUB_ID + 2, TEST_NAME + "_2"));
+ mFragmentController.setup();
+
+ TextView textView = mFragment.requireActivity().findViewById(R.id.title);
+ assertThat(textView.getText()).isEqualTo(TEST_NAME);
+ }
+
+ @Test
+ public void onMobileNetworkUpdated_noArgumentProvided_updateTitle() {
+ mFragment = new MobileNetworkFragment();
+ mFragmentController = FragmentController.of(mFragment);
+ getShadowSubscriptionManager().setSelectableSubscriptionInfoList(
+ Collections.singletonList(createSubscriptionInfo(SUB_ID, TEST_NAME)));
+ getShadowSubscriptionManager().setActiveSubscriptionInfos(
+ createSubscriptionInfo(SUB_ID + 1, TEST_NAME + "_1"),
+ createSubscriptionInfo(SUB_ID + 2, TEST_NAME + "_2"));
+ mFragmentController.setup();
+
+ TextView textView = mFragment.requireActivity().findViewById(R.id.title);
+ assertThat(textView.getText()).isEqualTo(TEST_NAME + "_1");
+ }
+
+ private void setUpFragmentWithSubId(int subId, String name) {
+ SubscriptionInfo info = createSubscriptionInfo(subId, name);
+ getShadowSubscriptionManager().setSelectableSubscriptionInfoList(
+ Collections.singletonList(info));
+
+ mFragment = MobileNetworkFragment.newInstance(subId);
+ mFragmentController = FragmentController.of(mFragment);
+ }
+
+ private SubscriptionInfo createSubscriptionInfo(int subId, String name) {
+ SubscriptionInfo subInfo = new SubscriptionInfo(subId, /* iccId= */ "",
+ /* simSlotIndex= */ 0, /* displayName= */ name, /* carrierName= */ "",
+ /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
+ /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", /* mnc= */ "",
+ /* countryIso= */ "", /* isEmbedded= */ false,
+ /* accessRules= */ null, /* cardString= */ "");
+ return subInfo;
+ }
+
+ private ShadowSubscriptionManager getShadowSubscriptionManager() {
+ return Shadow.extract(mContext.getSystemService(SubscriptionManager.class));
+ }
+}
diff --git a/tests/robotests/src/com/android/car/settings/network/MobileNetworkListPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/network/MobileNetworkListPreferenceControllerTest.java
new file mode 100644
index 0000000..34b8d5c
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/network/MobileNetworkListPreferenceControllerTest.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.network;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowSubscriptionManager;
+
+import com.google.android.collect.Lists;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowSubscriptionManager.class})
+public class MobileNetworkListPreferenceControllerTest {
+
+ private static final int SUB_ID = 1;
+ private Context mContext;
+ private PreferenceGroup mPreferenceGroup;
+ private PreferenceControllerTestHelper<MobileNetworkListPreferenceController> mControllerHelper;
+
+ @Before
+ public void setUp() {
+ mContext = RuntimeEnvironment.application;
+ mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+ mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+ MobileNetworkListPreferenceController.class, mPreferenceGroup);
+
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
+ }
+
+ @After
+ public void tearDown() {
+ ShadowSubscriptionManager.reset();
+ }
+
+ @Test
+ public void refreshUi_containsElements() {
+ SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1,
+ /* simSlotIndex= */ 1, /* cardString= */"", "mncString");
+ List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+ getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
+
+ mControllerHelper.getController().refreshUi();
+
+ assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+ }
+
+ @Test
+ public void onPreferenceClicked_launchesFragment() {
+ SubscriptionInfo info = createSubscriptionInfo(SUB_ID, /* simSlotIndex= */ 1,
+ /* cardString= */"", "mncString");
+ List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+ getShadowSubscriptionManager().setSelectableSubscriptionInfoList(selectable);
+
+ mControllerHelper.getController().refreshUi();
+ Preference preference = mPreferenceGroup.getPreference(0);
+ preference.performClick();
+
+ ArgumentCaptor<MobileNetworkFragment> captor = ArgumentCaptor.forClass(
+ MobileNetworkFragment.class);
+ verify(mControllerHelper.getMockFragmentController()).launchFragment(captor.capture());
+
+ assertThat(captor.getValue().getArguments().getInt(MobileNetworkFragment.ARG_NETWORK_SUB_ID,
+ -1)).isEqualTo(SUB_ID);
+ }
+
+ private ShadowSubscriptionManager getShadowSubscriptionManager() {
+ return Shadow.extract(mContext.getSystemService(SubscriptionManager.class));
+ }
+
+ private SubscriptionInfo createSubscriptionInfo(int subId, int simSlotIndex,
+ String cardString, String mncString) {
+ SubscriptionInfo subInfo = new SubscriptionInfo(subId, /* iccId= */ "",
+ simSlotIndex, /* displayName= */ "", /* carrierName= */ "",
+ /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
+ /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", mncString,
+ /* countryIso= */ "", /* isEmbedded= */ false,
+ /* accessRules= */ null, cardString);
+ return subInfo;
+ }
+}
diff --git a/tests/robotests/src/com/android/car/settings/network/MobileNetworkUpdateManagerTest.java b/tests/robotests/src/com/android/car/settings/network/MobileNetworkUpdateManagerTest.java
new file mode 100644
index 0000000..0070999
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/network/MobileNetworkUpdateManagerTest.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.network;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowSubscriptionManager;
+import com.android.internal.telephony.TelephonyIntents;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.android.controller.ActivityController;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowApplication;
+
+import java.util.Collections;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowSubscriptionManager.class})
+public class MobileNetworkUpdateManagerTest {
+
+ private static final int SUB_ID = 1;
+
+ private Context mContext;
+ private ActivityController<BaseTestActivity> mActivityController;
+ private BaseTestActivity mActivity;
+ private MobileNetworkUpdateManager mMobileNetworkUpdateManager;
+
+ @Mock
+ private MobileNetworkUpdateManager.MobileNetworkUpdateListener mMobileNetworkUpdateListener;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mContext = RuntimeEnvironment.application;
+ mActivity = new BaseTestActivity();
+ mActivityController = ActivityController.of(mActivity);
+ }
+
+ @Test
+ public void onStart_receiverRegistered() {
+ setupMobileNetworkUpdateManager(SUB_ID);
+ mActivityController.create().start().visible();
+
+ assertThat(ShadowApplication.getInstance().getRegisteredReceivers().size()).isGreaterThan(
+ 0);
+
+ boolean hasMatch = false;
+ for (ShadowApplication.Wrapper wrapper :
+ ShadowApplication.getInstance().getRegisteredReceivers()) {
+ if (wrapper.getIntentFilter().matchAction(
+ TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED)) {
+ hasMatch = true;
+ }
+ }
+ assertThat(hasMatch).isTrue();
+ }
+
+ @Test
+ public void onStop_receiverUnregistered() {
+ setupMobileNetworkUpdateManager(SUB_ID);
+ mActivityController.create().start().visible();
+ int prevSize = ShadowApplication.getInstance().getRegisteredReceivers().size();
+
+ mActivityController.stop();
+ assertThat(ShadowApplication.getInstance().getRegisteredReceivers().size()).isLessThan(
+ prevSize);
+
+ boolean hasMatch = false;
+ for (ShadowApplication.Wrapper wrapper :
+ ShadowApplication.getInstance().getRegisteredReceivers()) {
+ if (wrapper.getIntentFilter().matchAction(
+ TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED)) {
+ hasMatch = true;
+ }
+ }
+ assertThat(hasMatch).isFalse();
+ }
+
+ @Test
+ public void onStart_subscriptionListenerRegistered() {
+ setupMobileNetworkUpdateManager(SUB_ID);
+ assertThat(getShadowSubscriptionManager().getOnSubscriptionChangedListeners()).isEmpty();
+ mActivityController.create().start().visible();
+
+ assertThat(getShadowSubscriptionManager().getOnSubscriptionChangedListeners()).isNotEmpty();
+ }
+
+ @Test
+ public void onStop_subscriptionListenerUnregistered() {
+ setupMobileNetworkUpdateManager(SUB_ID);
+ assertThat(getShadowSubscriptionManager().getOnSubscriptionChangedListeners()).isEmpty();
+ mActivityController.create().start().visible();
+ assertThat(getShadowSubscriptionManager().getOnSubscriptionChangedListeners()).isNotEmpty();
+ mActivityController.stop();
+
+ assertThat(getShadowSubscriptionManager().getOnSubscriptionChangedListeners()).isEmpty();
+ }
+
+ @Test
+ public void onMobileNetworkUpdated_withInitialSubId_pickSubId() {
+ setupMobileNetworkUpdateManager(SUB_ID);
+ getShadowSubscriptionManager().setActiveSubscriptionInfos(
+ createSubscriptionInfo(SUB_ID + 1), createSubscriptionInfo(SUB_ID + 2));
+ mActivityController.setup();
+
+ verify(mMobileNetworkUpdateListener).onMobileNetworkUpdated(SUB_ID);
+ }
+
+ @Test
+ public void onMobileNetworkUpdated_withoutInitialSubId_pickDefaultSubId() {
+ setupMobileNetworkUpdateManager(MobileNetworkUpdateManager.SUB_ID_NULL);
+ getShadowSubscriptionManager().setActiveSubscriptionInfos(
+ createSubscriptionInfo(SUB_ID + 1), createSubscriptionInfo(SUB_ID + 2));
+ mActivityController.setup();
+
+ verify(mMobileNetworkUpdateListener).onMobileNetworkUpdated(SUB_ID + 1);
+ }
+
+ private void setupMobileNetworkUpdateManager(int subId) {
+ mMobileNetworkUpdateManager = new MobileNetworkUpdateManager(mContext, subId);
+ mActivity.getLifecycle().addObserver(mMobileNetworkUpdateManager);
+ mMobileNetworkUpdateManager.registerListener(mMobileNetworkUpdateListener);
+
+ getShadowSubscriptionManager().setSelectableSubscriptionInfoList(
+ Collections.singletonList(createSubscriptionInfo(subId)));
+ }
+
+ private ShadowSubscriptionManager getShadowSubscriptionManager() {
+ return Shadow.extract(mContext.getSystemService(SubscriptionManager.class));
+ }
+
+ private SubscriptionInfo createSubscriptionInfo(int subId) {
+ SubscriptionInfo subInfo = new SubscriptionInfo(/* id= */ subId, /* iccId= */ "",
+ /* simSlotIndex= */ 0, /* displayName= */ "", /* carrierName= */ "",
+ /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
+ /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", /* mnc= */ "",
+ /* countryIso= */ "", /* isEmbedded= */ false,
+ /* accessRules= */ null, /* cardString= */ "");
+ return subInfo;
+ }
+}
diff --git a/tests/robotests/src/com/android/car/settings/network/RoamingPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/network/RoamingPreferenceControllerTest.java
new file mode 100644
index 0000000..414c93e
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/network/RoamingPreferenceControllerTest.java
@@ -0,0 +1,233 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.network;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.os.PersistableBundle;
+import android.provider.Settings;
+import android.telephony.CarrierConfigManager;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.SwitchPreference;
+import androidx.preference.TwoStatePreference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.ConfirmationDialogFragment;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.BaseTestActivity;
+import com.android.car.settings.testutils.ShadowCarrierConfigManager;
+import com.android.car.settings.testutils.ShadowTelephonyManager;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.robolectric.Robolectric;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowContentResolver;
+import org.robolectric.shadows.ShadowDialog;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowTelephonyManager.class, ShadowCarrierConfigManager.class})
+public class RoamingPreferenceControllerTest {
+
+ private static final int SUB_ID = 1;
+
+ private Context mContext;
+ private TwoStatePreference mPreference;
+ private PreferenceControllerTestHelper<RoamingPreferenceController> mControllerHelper;
+ private RoamingPreferenceController mController;
+ private TelephonyManager mTelephonyManager;
+ private CarrierConfigManager mCarrierConfigManager;
+
+ @Before
+ public void setUp() {
+ mContext = RuntimeEnvironment.application;
+ mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+ RoamingPreferenceController.class);
+ mController = mControllerHelper.getController();
+ mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class);
+ mTelephonyManager = mContext.getSystemService(TelephonyManager.class);
+ getShadowTelephonyManager().setTelephonyManagerForSubscriptionId(SUB_ID, mTelephonyManager);
+ mController.setSubId(SUB_ID);
+
+ mPreference = new SwitchPreference(mContext);
+ mControllerHelper.setPreference(mPreference);
+ }
+
+ @After
+ public void tearDown() {
+ ShadowTelephonyManager.reset();
+ }
+
+ @Test
+ public void onStart_registerObserver() {
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+ assertThat(getShadowContentResolver().getContentObservers(
+ Settings.Global.getUriFor(Settings.Global.DATA_ROAMING))).isNotEmpty();
+ }
+
+ @Test
+ public void onStart_registerObserver_additionalSubId() {
+ ShadowTelephonyManager.setSimCount(2);
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+
+ assertThat(getShadowContentResolver().getContentObservers(
+ Settings.Global.getUriFor(Settings.Global.DATA_ROAMING + SUB_ID))).isNotEmpty();
+ }
+
+ @Test
+ public void onStop_unregisterObserver() {
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_STOP);
+
+ assertThat(getShadowContentResolver().getContentObservers(
+ Settings.Global.getUriFor(Settings.Global.DATA_ROAMING))).isEmpty();
+ }
+
+ @Test
+ public void refreshUi_invalidSubId_isDisabled() {
+ getShadowTelephonyManager().setTelephonyManagerForSubscriptionId(
+ SubscriptionManager.INVALID_SUBSCRIPTION_ID, mTelephonyManager);
+ mController.setSubId(SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+ mController.refreshUi();
+
+ assertThat(mPreference.isEnabled()).isFalse();
+ }
+
+ @Test
+ public void refreshUi_validSubId_isEnabled() {
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+ mController.refreshUi();
+
+ assertThat(mPreference.isEnabled()).isTrue();
+ }
+
+ @Test
+ public void refreshUi_roamingEnabled_setChecked() {
+ mTelephonyManager.setDataRoamingEnabled(true);
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+ mController.refreshUi();
+
+ assertThat(mPreference.isChecked()).isTrue();
+ }
+
+ @Test
+ public void refreshUi_roamingDisabled_setUnchecked() {
+ mTelephonyManager.setDataRoamingEnabled(false);
+ mControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+ mController.refreshUi();
+
+ assertThat(mPreference.isChecked()).isFalse();
+ }
+
+ @Test
+ public void callChangeListener_toggleFalse_turnOffRoaming() {
+ mPreference.setChecked(true);
+ mTelephonyManager.setDataRoamingEnabled(true);
+
+ mPreference.callChangeListener(false);
+
+ assertThat(mTelephonyManager.isDataRoamingEnabled()).isFalse();
+ }
+
+ @Test
+ public void callChangeListener_toggleTrue_needsDialog_showDialog() {
+ mPreference.setChecked(false);
+ mTelephonyManager.setDataRoamingEnabled(false);
+ PersistableBundle bundle = new PersistableBundle();
+ bundle.putBoolean(CarrierConfigManager.KEY_DISABLE_CHARGE_INDICATION_BOOL, false);
+ getShadowCarrierConfigManager().setConfigForSubId(SUB_ID, bundle);
+
+ mPreference.callChangeListener(true);
+
+ verify(mControllerHelper.getMockFragmentController()).showDialog(
+ any(ConfirmationDialogFragment.class), eq(ConfirmationDialogFragment.TAG));
+ }
+
+ @Test
+ public void confirmDialog_turnOnRoaming() {
+ mPreference.setChecked(false);
+ mTelephonyManager.setDataRoamingEnabled(false);
+ PersistableBundle bundle = new PersistableBundle();
+ bundle.putBoolean(CarrierConfigManager.KEY_DISABLE_CHARGE_INDICATION_BOOL, false);
+ getShadowCarrierConfigManager().setConfigForSubId(SUB_ID, bundle);
+
+ mPreference.callChangeListener(true);
+
+ // Capture the dialog that is shown on toggle.
+ ArgumentCaptor<ConfirmationDialogFragment> dialogCaptor = ArgumentCaptor.forClass(
+ ConfirmationDialogFragment.class);
+ verify(mControllerHelper.getMockFragmentController()).showDialog(
+ dialogCaptor.capture(), eq(ConfirmationDialogFragment.TAG));
+
+ // Show the captured dialog on press the confirmation button.
+ ConfirmationDialogFragment dialog = dialogCaptor.getValue();
+ assertThat(dialogCaptor).isNotNull();
+ AlertDialog alertDialog = showDialog(dialog);
+ alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();
+
+ assertThat(mTelephonyManager.isDataRoamingEnabled()).isTrue();
+ }
+
+ @Test
+ public void callChangeListener_toggleTrue_doesntNeedDialog_turnOnRoaming() {
+ mPreference.setChecked(false);
+ mTelephonyManager.setDataRoamingEnabled(false);
+ PersistableBundle bundle = new PersistableBundle();
+ bundle.putBoolean(CarrierConfigManager.KEY_DISABLE_CHARGE_INDICATION_BOOL, true);
+ getShadowCarrierConfigManager().setConfigForSubId(SUB_ID, bundle);
+
+ mPreference.callChangeListener(true);
+
+ assertThat(mTelephonyManager.isDataRoamingEnabled()).isTrue();
+ }
+
+ private ShadowContentResolver getShadowContentResolver() {
+ return (ShadowContentResolver) Shadows.shadowOf(mContext.getContentResolver());
+ }
+
+ private ShadowTelephonyManager getShadowTelephonyManager() {
+ return (ShadowTelephonyManager) Shadows.shadowOf(mTelephonyManager);
+ }
+
+ private ShadowCarrierConfigManager getShadowCarrierConfigManager() {
+ return (ShadowCarrierConfigManager) Shadow.extract(mCarrierConfigManager);
+ }
+
+ private AlertDialog showDialog(ConfirmationDialogFragment dialog) {
+ BaseTestActivity activity = Robolectric.setupActivity(BaseTestActivity.class);
+ activity.showDialog(dialog, /* tag= */ null);
+ return (AlertDialog) ShadowDialog.getLatestDialog();
+ }
+}
diff --git a/tests/robotests/src/com/android/car/settings/network/SubscriptionUtilsTest.java b/tests/robotests/src/com/android/car/settings/network/SubscriptionUtilsTest.java
new file mode 100644
index 0000000..73eff14
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/network/SubscriptionUtilsTest.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.network;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+import android.telephony.UiccSlotInfo;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+
+import com.google.android.collect.Lists;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+public class SubscriptionUtilsTest {
+
+ @Test
+ public void getAvailableSubscriptions_hasSubscriptionsFromSubscriptionManager_valueReturned() {
+ SubscriptionManager subscriptionManager = mock(SubscriptionManager.class);
+ TelephonyManager telephonyManager = mock(TelephonyManager.class);
+
+ SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1,
+ /* simSlotIndex= */ 1, /* cardString= */"", "mncString");
+ List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+ when(subscriptionManager.getSelectableSubscriptionInfoList()).thenReturn(selectable);
+ when(telephonyManager.getUiccSlotsInfo()).thenReturn(new UiccSlotInfo[0]);
+
+ List<SubscriptionInfo> infos = SubscriptionUtils.getAvailableSubscriptions(
+ subscriptionManager, telephonyManager);
+
+ assertThat(infos).contains(info);
+ }
+
+ @Test
+ public void getAvailableSubscriptions_hasSimSlotNotInSubscriptionManager_valueReturned() {
+ SubscriptionManager subscriptionManager = mock(SubscriptionManager.class);
+ TelephonyManager telephonyManager = mock(TelephonyManager.class);
+
+ int simSlotIdx = 1;
+ String cardString = "testString";
+ SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1, simSlotIdx, cardString,
+ "mncString");
+ UiccSlotInfo slotInfo = createUuicSlotInfo(/* isActive= */ false, /* isEsim= */ false,
+ simSlotIdx, cardString, UiccSlotInfo.CARD_STATE_INFO_PRESENT);
+ List<SubscriptionInfo> allSims = Lists.newArrayList(info);
+ when(subscriptionManager.getAllSubscriptionInfoList()).thenReturn(allSims);
+ when(telephonyManager.getUiccSlotsInfo()).thenReturn(new UiccSlotInfo[]{slotInfo});
+
+ List<SubscriptionInfo> infos = SubscriptionUtils.getAvailableSubscriptions(
+ subscriptionManager, telephonyManager);
+
+ assertThat(infos).contains(info);
+ }
+
+ @Test
+ public void getAvailableSubscriptions_hasInactiveInsertedPSim_valueRemoved() {
+ SubscriptionManager subscriptionManager = mock(SubscriptionManager.class);
+ TelephonyManager telephonyManager = mock(TelephonyManager.class);
+
+ SubscriptionInfo info = createSubscriptionInfo(/* subId= */ 1,
+ /* simSlotIndex= */ 1, /* cardString= */"", "");
+ List<SubscriptionInfo> selectable = Lists.newArrayList(info);
+ when(subscriptionManager.getSelectableSubscriptionInfoList()).thenReturn(selectable);
+ when(telephonyManager.getUiccSlotsInfo()).thenReturn(new UiccSlotInfo[0]);
+
+ List<SubscriptionInfo> infos = SubscriptionUtils.getAvailableSubscriptions(
+ subscriptionManager, telephonyManager);
+
+ assertThat(infos).doesNotContain(info);
+ }
+
+ private SubscriptionInfo createSubscriptionInfo(int subId, int simSlotIndex,
+ String cardString, String mncString) {
+ SubscriptionInfo subInfo = new SubscriptionInfo(subId, /* iccId= */ "",
+ simSlotIndex, /* displayName= */ "", /* carrierName= */ "",
+ /* nameSource= */ 0, /* iconTint= */ 0, /* number= */ "",
+ /* roaming= */ 0, /* icon= */ null, /* mcc= */ "", mncString,
+ /* countryIso= */ "", /* isEmbedded= */ false,
+ /* accessRules= */ null, cardString);
+ return subInfo;
+ }
+
+ private UiccSlotInfo createUuicSlotInfo(boolean isActive, boolean isEsim, int simSlotIndex,
+ String cardId, int cardStateInfo) {
+ return new UiccSlotInfo(isActive, isEsim, cardId, cardStateInfo, simSlotIndex,
+ /* isExtendedApduSupported= */ false, /* isRemoveable= */ true);
+ }
+}
diff --git a/tests/robotests/src/com/android/car/settings/network/SubscriptionsChangeListenerTest.java b/tests/robotests/src/com/android/car/settings/network/SubscriptionsChangeListenerTest.java
new file mode 100644
index 0000000..85d374c
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/network/SubscriptionsChangeListenerTest.java
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.network;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.content.Intent;
+import android.telephony.SubscriptionManager;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.testutils.ShadowSubscriptionManager;
+import com.android.internal.telephony.TelephonyIntents;
+
+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;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowApplication;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowSubscriptionManager.class})
+public class SubscriptionsChangeListenerTest {
+
+ private Context mContext;
+ private SubscriptionsChangeListener mSubscriptionsChangeListener;
+ @Mock
+ private SubscriptionsChangeListener.SubscriptionsChangeAction mSubscriptionsChangeAction;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+
+ mContext = RuntimeEnvironment.application;
+ mSubscriptionsChangeListener = new SubscriptionsChangeListener(mContext,
+ mSubscriptionsChangeAction);
+ }
+
+ @After
+ public void tearDown() {
+ ShadowSubscriptionManager.reset();
+ }
+
+ @Test
+ public void start_registersListener() {
+ assertThat(getShadowSubscriptionManager().getOnSubscriptionChangedListeners()).isEmpty();
+ mSubscriptionsChangeListener.start();
+ assertThat(getShadowSubscriptionManager().getOnSubscriptionChangedListeners()).isNotEmpty();
+ }
+
+ @Test
+ public void onSubscriptionChange_triggersAction() {
+ mSubscriptionsChangeListener.start();
+ // This is a way to trigger subscription change on the shadows.
+ getShadowSubscriptionManager().setActiveSubscriptionInfoList(null);
+
+ verify(mSubscriptionsChangeAction).onSubscriptionsChanged();
+ }
+
+ @Test
+ public void stop_unregistersListener() {
+ mSubscriptionsChangeListener.start();
+ mSubscriptionsChangeListener.stop();
+ assertThat(getShadowSubscriptionManager().getOnSubscriptionChangedListeners()).isEmpty();
+ }
+
+ @Test
+ public void start_registersReceiver() {
+ mSubscriptionsChangeListener.start();
+
+ boolean hasMatch = false;
+ for (ShadowApplication.Wrapper wrapper :
+ ShadowApplication.getInstance().getRegisteredReceivers()) {
+ if (wrapper.getIntentFilter().matchAction(
+ TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED)) {
+ hasMatch = true;
+ }
+ }
+ assertThat(hasMatch).isTrue();
+ }
+
+ @Test
+ public void onReceive_triggersAction() {
+ mSubscriptionsChangeListener.start();
+ mContext.sendBroadcast(new Intent(TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED));
+
+ verify(mSubscriptionsChangeAction).onSubscriptionsChanged();
+ }
+
+ @Test
+ public void stop_unregistersReceiver() {
+ mSubscriptionsChangeListener.start();
+ mSubscriptionsChangeListener.stop();
+
+ boolean hasMatch = false;
+ for (ShadowApplication.Wrapper wrapper :
+ ShadowApplication.getInstance().getRegisteredReceivers()) {
+ if (wrapper.getIntentFilter().matchAction(
+ TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED)) {
+ hasMatch = true;
+ }
+ }
+ assertThat(hasMatch).isFalse();
+ }
+
+ private ShadowSubscriptionManager getShadowSubscriptionManager() {
+ return Shadow.extract(mContext.getSystemService(SubscriptionManager.class));
+ }
+}
diff --git a/tests/robotests/src/com/android/car/settings/security/AddTrustedDeviceActivityTest.java b/tests/robotests/src/com/android/car/settings/security/AddTrustedDeviceActivityTest.java
new file mode 100644
index 0000000..bf3c9af
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/security/AddTrustedDeviceActivityTest.java
@@ -0,0 +1,237 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.security;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.admin.DevicePolicyManager;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
+import android.car.Car;
+import android.car.drivingstate.CarUxRestrictions;
+import android.car.drivingstate.CarUxRestrictionsManager;
+import android.car.trust.CarTrustAgentEnrollmentManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+import android.os.Bundle;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.testutils.ShadowCar;
+import com.android.car.settings.testutils.ShadowLockPatternUtils;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.android.controller.ActivityController;
+import org.robolectric.annotation.Config;
+
+/**
+ * Unit tests for {@link AddTrustedDeviceActivity}.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCar.class, ShadowLockPatternUtils.class})
+public class AddTrustedDeviceActivityTest {
+ private static final String ADDRESS = "00:11:22:33:AA:BB";
+ private static final String BLUETOOTH_DEVICE_KEY = "bluetoothDevice";
+ private static final String CURRENT_HANDLE_KEY = "currentHandle";
+ private Context mContext;
+ private ActivityController<AddTrustedDeviceActivity> mActivityController;
+ private AddTrustedDeviceActivity mActivity;
+ @Mock
+ private CarTrustAgentEnrollmentManager mMockCarTrustAgentEnrollmentManager;
+ @Mock
+ private CarUxRestrictionsManager mMockCarUxRestrictionsManager;
+ private CarUserManagerHelper mCarUserManagerHelper;
+ private BluetoothDevice mBluetoothDevice;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ CarUxRestrictions noSetupRestrictions = new CarUxRestrictions.Builder(/* reqOpt= */ true,
+ CarUxRestrictions.UX_RESTRICTIONS_BASELINE, /* time= */ 0).build();
+ when(mMockCarUxRestrictionsManager.getCurrentCarUxRestrictions())
+ .thenReturn(noSetupRestrictions);
+ ShadowCar.setCarManager(Car.CAR_UX_RESTRICTION_SERVICE, mMockCarUxRestrictionsManager);
+ mContext = RuntimeEnvironment.application;
+ ShadowCar.setCarManager(Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE,
+ mMockCarTrustAgentEnrollmentManager);
+ mCarUserManagerHelper = new CarUserManagerHelper(mContext);
+ mBluetoothDevice = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(ADDRESS);
+ mActivityController = ActivityController.of(new AddTrustedDeviceActivity());
+ mActivity = mActivityController.get();
+ ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_NUMERIC);
+ mActivityController.create();
+ }
+
+ @After
+ public void tearDown() {
+ ShadowCar.reset();
+ ShadowLockPatternUtils.reset();
+ }
+
+ @Test
+ public void onStart_no_saveInstanceState_startAdvertising() {
+ mActivityController.start();
+ verify(mMockCarTrustAgentEnrollmentManager).startEnrollmentAdvertising();
+ }
+
+ @Test
+ public void onStart_saveInstanceState_deviceConnected_doNotStartAdvertising() {
+ // Recreate with saved state (e.g. during config change).
+ Bundle outState = new Bundle();
+ outState.putParcelable(BLUETOOTH_DEVICE_KEY, mBluetoothDevice);
+ mActivityController = ActivityController.of(new AddTrustedDeviceActivity());
+ mActivityController.setup(outState);
+ verify(mMockCarTrustAgentEnrollmentManager, never()).startEnrollmentAdvertising();
+ }
+
+ @Test
+ public void onStart_saveInstanceState_deviceNotConnected_startAdvertising() {
+ // Recreate with saved state (e.g. during config change).
+ Bundle outState = new Bundle();
+ outState.putParcelable(BLUETOOTH_DEVICE_KEY, null);
+ mActivityController = ActivityController.of(new AddTrustedDeviceActivity());
+ mActivityController.setup(outState);
+ verify(mMockCarTrustAgentEnrollmentManager).startEnrollmentAdvertising();
+ }
+
+ @Test
+ public void onStart_has_activated_handle_finish() {
+ mActivityController.start().postCreate(null).resume();
+ ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback> callBack =
+ ArgumentCaptor.forClass(
+ CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback.class);
+ verify(mMockCarTrustAgentEnrollmentManager).setEnrollmentCallback(callBack.capture());
+
+ callBack.getValue().onEscrowTokenAdded(1);
+ mActivityController.stop();
+
+ when(mMockCarTrustAgentEnrollmentManager.isEscrowTokenActive(1,
+ mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(true);
+ Bundle outState = new Bundle();
+ outState.putLong(CURRENT_HANDLE_KEY, 1);
+ outState.putParcelable(BLUETOOTH_DEVICE_KEY, mBluetoothDevice);
+ mActivityController = ActivityController.of(new AddTrustedDeviceActivity());
+ mActivityController.setup(outState).start();
+
+ assertThat(mActivityController.get().isFinishing()).isTrue();
+ }
+
+ @Test
+ public void onAuthStringAvailable_createDialog() {
+ mActivityController.start().postCreate(null).resume();
+ ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback>
+ enrollmentCallBack =
+ ArgumentCaptor.forClass(
+ CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback.class);
+ verify(mMockCarTrustAgentEnrollmentManager).setEnrollmentCallback(
+ enrollmentCallBack.capture());
+ enrollmentCallBack.getValue().onAuthStringAvailable(mBluetoothDevice, "123");
+
+ assertThat(mActivity.findDialogByTag(ConfirmPairingCodeDialog.TAG)).isNotNull();
+ }
+
+ @Test
+ public void onLockVerified_showAddTrustedDeviceProgressFragment() {
+ mActivityController.start().postCreate(null).resume();
+
+ mActivity.launchFragment(ConfirmLockPinPasswordFragment.newPinInstance());
+ mActivity.onLockVerified("lock".getBytes());
+
+ assertThat(mActivity.getSupportFragmentManager().findFragmentById(R.id.fragment_container))
+ .isInstanceOf(AddTrustedDeviceProgressFragment.class);
+ }
+
+ @Test
+ public void onEscrowTokenAdded_showCheckLockFragment() {
+ mActivityController.start().postCreate(null).resume();
+ ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback> callBack =
+ ArgumentCaptor.forClass(
+ CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback.class);
+ verify(mMockCarTrustAgentEnrollmentManager).setEnrollmentCallback(callBack.capture());
+
+ callBack.getValue().onEscrowTokenAdded(1);
+
+ assertThat(mActivityController.get().getInitialFragment()).isInstanceOf(
+ ConfirmLockPinPasswordFragment.class);
+ }
+
+ @Test
+ public void onBluetoothDeviceDisconnected_finish() {
+ mActivityController.start().postCreate(null).resume();
+ ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback>
+ bleCallBack = ArgumentCaptor.forClass(
+ CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback.class);
+ verify(mMockCarTrustAgentEnrollmentManager).setBleCallback(bleCallBack.capture());
+
+ bleCallBack.getValue().onBleEnrollmentDeviceDisconnected(mBluetoothDevice);
+
+ assertThat(mActivity.isFinishing()).isTrue();
+ }
+
+ @Test
+ public void onPairingCodeDialogConfirmed_handshakeAccepted() {
+ mActivityController.start().postCreate(null).resume();
+ ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback> bleCallBack =
+ ArgumentCaptor.forClass(
+ CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback.class);
+ verify(mMockCarTrustAgentEnrollmentManager).setBleCallback(bleCallBack.capture());
+
+ bleCallBack.getValue().onBleEnrollmentDeviceConnected(mBluetoothDevice);
+ mActivity.mConfirmParingCodeListener.onConfirmPairingCode();
+ verify(mMockCarTrustAgentEnrollmentManager).enrollmentHandshakeAccepted(mBluetoothDevice);
+
+ }
+
+ @Test
+ public void onStart_onEscrowTokenActiveStateChanged_activated_finish() {
+ mActivityController.start().postCreate(null).resume();
+ ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback> callBack =
+ ArgumentCaptor.forClass(
+ CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback.class);
+ verify(mMockCarTrustAgentEnrollmentManager).setEnrollmentCallback(callBack.capture());
+
+ ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback> bleCallBack =
+ ArgumentCaptor.forClass(
+ CarTrustAgentEnrollmentManager.CarTrustAgentBleCallback.class);
+ verify(mMockCarTrustAgentEnrollmentManager).setBleCallback(bleCallBack.capture());
+
+ bleCallBack.getValue().onBleEnrollmentDeviceConnected(mBluetoothDevice);
+ callBack.getValue().onEscrowTokenActiveStateChanged(1, true);
+
+ assertThat(mActivity.isFinishing()).isTrue();
+ }
+
+ @Test
+ public void configurationNotChanged_terminateEnrollmentHandshake() {
+ mActivityController.start();
+
+ mActivityController.pause();
+
+ verify(mMockCarTrustAgentEnrollmentManager).terminateEnrollmentHandshake();
+ }
+}
diff --git a/tests/robotests/src/com/android/car/settings/security/AddTrustedDevicePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/security/AddTrustedDevicePreferenceControllerTest.java
new file mode 100644
index 0000000..4373d13
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/security/AddTrustedDevicePreferenceControllerTest.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.security;
+
+import static android.content.pm.PackageManager.FEATURE_BLUETOOTH;
+import static android.os.UserManager.DISALLOW_BLUETOOTH;
+import static android.os.UserManager.DISALLOW_CONFIG_BLUETOOTH;
+
+import static com.android.car.settings.common.PreferenceController.AVAILABLE;
+import static com.android.car.settings.common.PreferenceController.DISABLED_FOR_USER;
+import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.app.admin.DevicePolicyManager;
+import android.bluetooth.BluetoothAdapter;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowBluetoothAdapter;
+import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
+import com.android.car.settings.testutils.ShadowLockPatternUtils;
+
+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;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.annotation.Config;
+
+
+/**
+ * Unit tests for {@link AddTrustedDevicePreferenceController}.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowLockPatternUtils.class, ShadowBluetoothAdapter.class,
+ ShadowCarUserManagerHelper.class})
+public class AddTrustedDevicePreferenceControllerTest {
+
+ private Context mContext;
+ private PreferenceControllerTestHelper<AddTrustedDevicePreferenceController>
+ mPreferenceControllerHelper;
+ @Mock
+ private CarUserManagerHelper mCarUserManagerHelper;
+ private Preference mPreference;
+ private AddTrustedDevicePreferenceController mController;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mContext = RuntimeEnvironment.application;
+ ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
+ mPreference = new Preference(mContext);
+ mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+ AddTrustedDevicePreferenceController.class, mPreference);
+ mController = mPreferenceControllerHelper.getController();
+ Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+ FEATURE_BLUETOOTH, /* supported= */ true);
+ mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+ }
+
+ @After
+ public void tearDown() {
+ ShadowLockPatternUtils.reset();
+ ShadowBluetoothAdapter.reset();
+ ShadowCarUserManagerHelper.reset();
+ }
+
+ @Test
+ public void refreshUi_hasPassword_preferenceEnabled() {
+ ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
+ when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+ DISALLOW_BLUETOOTH)).thenReturn(false);
+
+ mController.refreshUi();
+
+ assertThat(mPreference.isEnabled()).isTrue();
+ }
+
+ @Test
+ public void refreshUi_noPassword_preferenceDisabled() {
+ ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
+ when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+ DISALLOW_BLUETOOTH)).thenReturn(false);
+
+ mController.refreshUi();
+
+ assertThat(mPreference.isEnabled()).isFalse();
+ }
+
+ @Test
+ public void refreshUi_bluetoothAdapterEnabled_setsEmptySummary() {
+ ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
+ when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+ DISALLOW_BLUETOOTH)).thenReturn(false);
+ BluetoothAdapter.getDefaultAdapter().enable();
+
+ mController.refreshUi();
+
+ assertThat(mPreference.getSummary().toString()).isEmpty();
+ }
+
+ @Test
+ public void refreshUi_bluetoothAdapterDisabled_setsTurnOnToAddSummary() {
+ BluetoothAdapter.getDefaultAdapter().disable();
+
+ mController.refreshUi();
+
+ assertThat(mPreference.getSummary()).isEqualTo(
+ mContext.getString(R.string.add_device_summary));
+ }
+
+ @Test
+ public void onPreferenceClicked_hasPassword_enableBluetooth() {
+ BluetoothAdapter.getDefaultAdapter().disable();
+ ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
+ mController.refreshUi();
+
+ mPreference.performClick();
+
+ assertThat(BluetoothAdapter.getDefaultAdapter().isEnabled()).isTrue();
+ }
+
+ @Test
+ public void getAvailabilityStatus_bluetoothNotAvailable_unsupportedOnDevice() {
+ Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+ FEATURE_BLUETOOTH, /* supported= */ false);
+
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
+ }
+
+ @Test
+ public void getAvailabilityStatus_disallowBluetoothUserRestriction_disabledForUser() {
+ Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+ FEATURE_BLUETOOTH, /* supported= */ true);
+ when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+ DISALLOW_BLUETOOTH)).thenReturn(true);
+
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+ }
+
+ @Test
+ public void getAvailabilityStatus_disallowConfigBluetoothUserRestriction_disabledForUser() {
+ Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+ FEATURE_BLUETOOTH, /* supported= */ true);
+ when(mCarUserManagerHelper.isCurrentProcessUserHasRestriction(
+ DISALLOW_CONFIG_BLUETOOTH)).thenReturn(true);
+
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(DISABLED_FOR_USER);
+ }
+
+ @Test
+ public void getAvailabilityStatus_available() {
+ Shadows.shadowOf(RuntimeEnvironment.application.getPackageManager()).setSystemFeature(
+ FEATURE_BLUETOOTH, /* supported= */ true);
+ // No user restrictions.
+
+ assertThat(mController.getAvailabilityStatus()).isEqualTo(AVAILABLE);
+ }
+}
diff --git a/tests/robotests/src/com/android/car/settings/security/ConfirmLockPinPasswordFragmentTest.java b/tests/robotests/src/com/android/car/settings/security/ConfirmLockPinPasswordFragmentTest.java
index ad07dad..e8ac043 100644
--- a/tests/robotests/src/com/android/car/settings/security/ConfirmLockPinPasswordFragmentTest.java
+++ b/tests/robotests/src/com/android/car/settings/security/ConfirmLockPinPasswordFragmentTest.java
@@ -42,7 +42,6 @@
@Before
public void initFragment() {
mTestActivity = Robolectric.setupActivity(TestSettingsScreenLockActivity.class);
-
mPinFragment = ConfirmLockPinPasswordFragment.newPinInstance();
mTestActivity.launchFragment(mPinFragment);
}
diff --git a/tests/robotests/src/com/android/car/settings/security/InitialLockSetupServiceTest.java b/tests/robotests/src/com/android/car/settings/security/InitialLockSetupServiceTest.java
index d05a33d..73ab223 100644
--- a/tests/robotests/src/com/android/car/settings/security/InitialLockSetupServiceTest.java
+++ b/tests/robotests/src/com/android/car/settings/security/InitialLockSetupServiceTest.java
@@ -213,7 +213,6 @@
assertThat(result).isEqualTo(SetLockCodes.SUCCESS);
List<LockPatternView.Cell> savedPattern = ShadowLockPatternUtils.getSavedPattern();
assertThat(savedPattern).containsExactlyElementsIn(pattern);
-
}
@Test
diff --git a/tests/robotests/src/com/android/car/settings/security/NoLockPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/security/NoLockPreferenceControllerTest.java
index ed6e3a7..a27607d 100644
--- a/tests/robotests/src/com/android/car/settings/security/NoLockPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/security/NoLockPreferenceControllerTest.java
@@ -34,7 +34,6 @@
import com.android.car.settings.common.PreferenceControllerTestHelper;
import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
import com.android.car.settings.testutils.ShadowLockPatternUtils;
-import com.android.internal.widget.LockPatternUtils;
import org.junit.After;
import org.junit.Before;
@@ -58,14 +57,11 @@
private Preference mPreference;
@Mock
private CarUserManagerHelper mCarUserManagerHelper;
- @Mock
- private LockPatternUtils mLockPatternUtils;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
- ShadowLockPatternUtils.setInstance(mLockPatternUtils);
mContext = RuntimeEnvironment.application;
mPreference = new Preference(mContext);
mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
@@ -111,7 +107,9 @@
mController.mRemoveLockListener.onConfirmRemoveScreenLock();
- verify(mLockPatternUtils).clearLock(TEST_CURRENT_PASSWORD, TEST_USER);
+ assertThat(ShadowLockPatternUtils.getClearLockCredential()).isEqualTo(
+ TEST_CURRENT_PASSWORD);
+ assertThat(ShadowLockPatternUtils.getClearLockUser()).isEqualTo(TEST_USER);
}
@Test
diff --git a/tests/robotests/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceControllerTest.java
new file mode 100644
index 0000000..a91bb5d
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/security/TrustedDeviceEntryPreferenceControllerTest.java
@@ -0,0 +1,95 @@
+/*
+ * 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.car.settings.security;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.car.Car;
+import android.car.CarNotConnectedException;
+import android.car.trust.CarTrustAgentEnrollmentManager;
+import android.car.trust.TrustedDeviceInfo;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCar;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCar.class})
+public class TrustedDeviceEntryPreferenceControllerTest {
+
+ private Context mContext;
+ private PreferenceControllerTestHelper<TrustedDeviceEntryPreferenceController>
+ mPreferenceControllerHelper;
+ private Preference mTrustedDevicePreference;
+ @Mock
+ private CarTrustAgentEnrollmentManager mMockCarTrustAgentEnrollmentManager;
+ private TrustedDeviceEntryPreferenceController mController;
+ private CarUserManagerHelper mCarUserManagerHelper;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mContext = RuntimeEnvironment.application;
+ mTrustedDevicePreference = new Preference(mContext);
+ ShadowCar.setCarManager(Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE,
+ mMockCarTrustAgentEnrollmentManager);
+ mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+ TrustedDeviceEntryPreferenceController.class, mTrustedDevicePreference);
+ mController = mPreferenceControllerHelper.getController();
+ mCarUserManagerHelper = new CarUserManagerHelper(mContext);
+ mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+ }
+
+ @Test
+ public void testHandlePreferenceClicked_listenerTriggered() {
+ mTrustedDevicePreference.performClick();
+ verify(mPreferenceControllerHelper.getMockFragmentController()).launchFragment(
+ any(ChooseTrustedDeviceFragment.class));
+ }
+
+ @Test
+ public void testUpdateState() throws CarNotConnectedException {
+ List<TrustedDeviceInfo> devices = new ArrayList<>();
+ devices.add(new TrustedDeviceInfo(1, "", ""));
+ devices.add(new TrustedDeviceInfo(2, "", ""));
+ when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+ mCarUserManagerHelper.getCurrentProcessUserId()))
+ .thenReturn(devices);
+ mController.refreshUi();
+ assertThat(mTrustedDevicePreference.getSummary()).isEqualTo("2 devices");
+ }
+}
diff --git a/tests/robotests/src/com/android/car/settings/security/TrustedDeviceListPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/security/TrustedDeviceListPreferenceControllerTest.java
new file mode 100644
index 0000000..be4d6cb
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/security/TrustedDeviceListPreferenceControllerTest.java
@@ -0,0 +1,206 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.car.settings.security;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.admin.DevicePolicyManager;
+import android.car.Car;
+import android.car.trust.CarTrustAgentEnrollmentManager;
+import android.car.trust.TrustedDeviceInfo;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.Context;
+
+import androidx.lifecycle.Lifecycle;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceGroup;
+
+import com.android.car.settings.CarSettingsRobolectricTestRunner;
+import com.android.car.settings.R;
+import com.android.car.settings.common.LogicalPreferenceGroup;
+import com.android.car.settings.common.PreferenceControllerTestHelper;
+import com.android.car.settings.testutils.ShadowCar;
+import com.android.car.settings.testutils.ShadowLockPatternUtils;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
+import org.robolectric.annotation.Config;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * Unit tests for {@link TrustedDeviceListPreferenceController}.
+ */
+@RunWith(CarSettingsRobolectricTestRunner.class)
+@Config(shadows = {ShadowCar.class, ShadowLockPatternUtils.class})
+public class TrustedDeviceListPreferenceControllerTest {
+
+ List<TrustedDeviceInfo> mUpdatedDevices = new ArrayList<>();
+ List<TrustedDeviceInfo> mDevices = new ArrayList<>();
+ private Context mContext;
+ private PreferenceControllerTestHelper<TrustedDeviceListPreferenceController>
+ mPreferenceControllerHelper;
+ @Mock
+ private CarTrustAgentEnrollmentManager mMockCarTrustAgentEnrollmentManager;
+ private CarUserManagerHelper mCarUserManagerHelper;
+ private PreferenceGroup mPreferenceGroup;
+ private TrustedDeviceListPreferenceController mController;
+ private TrustedDeviceInfo mTestDevice1 = new TrustedDeviceInfo(1, "", "");
+ private TrustedDeviceInfo mTestDevice2 = new TrustedDeviceInfo(2, "", "");
+ private TrustedDeviceInfo mTestDevice3 = new TrustedDeviceInfo(3, "", "");
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mContext = RuntimeEnvironment.application;
+ ShadowCar.setCarManager(Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE,
+ mMockCarTrustAgentEnrollmentManager);
+ mPreferenceGroup = new LogicalPreferenceGroup(mContext);
+ mPreferenceControllerHelper = new PreferenceControllerTestHelper<>(mContext,
+ TrustedDeviceListPreferenceController.class, mPreferenceGroup);
+ mController = mPreferenceControllerHelper.getController();
+ mCarUserManagerHelper = new CarUserManagerHelper(mContext);
+ mDevices.add(mTestDevice1);
+ mDevices.add(mTestDevice2);
+ mUpdatedDevices.add(mTestDevice1);
+ mUpdatedDevices.add(mTestDevice2);
+ mUpdatedDevices.add(mTestDevice3);
+ mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_START);
+ }
+
+ @After
+ public void tearDown() {
+ ShadowCar.reset();
+ ShadowLockPatternUtils.reset();
+ }
+
+ @Test
+ public void onDeviceRemoved_refreshUi() {
+ ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
+ when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+ mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mUpdatedDevices);
+
+ mController.refreshUi();
+
+ assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
+
+ ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback> callBack =
+ ArgumentCaptor.forClass(
+ CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback.class);
+ verify(mMockCarTrustAgentEnrollmentManager).setEnrollmentCallback(callBack.capture());
+ mUpdatedDevices.remove(0);
+ when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+ mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mUpdatedDevices);
+ callBack.getValue().onEscrowTokenRemoved(mUpdatedDevices.get(0).getHandle());
+
+ assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+ }
+
+ @Test
+ public void onDeviceAdded_refreshUi() {
+ when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+ mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mDevices);
+ ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
+ mController.refreshUi();
+
+ assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(2);
+
+ ArgumentCaptor<CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback> callBack =
+ ArgumentCaptor.forClass(
+ CarTrustAgentEnrollmentManager.CarTrustAgentEnrollmentCallback.class);
+ when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+ mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mUpdatedDevices);
+ verify(mMockCarTrustAgentEnrollmentManager).setEnrollmentCallback(callBack.capture());
+
+ callBack.getValue().onEscrowTokenActiveStateChanged(mUpdatedDevices.get(0).getHandle(),
+ true);
+
+ assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
+ }
+
+ @Test
+ public void refreshUi_noDevices_hasPassword_hidesGroup() {
+ ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
+ when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+ mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(
+ Collections.emptyList());
+
+ mController.refreshUi();
+
+ assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(0);
+ assertThat(mPreferenceGroup.isVisible()).isFalse();
+ }
+
+ @Test
+ public void refreshUi_devices_hasPassword_showsGroup() {
+ ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
+ when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+ mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mUpdatedDevices);
+
+ mController.refreshUi();
+
+ assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(3);
+ assertThat(mPreferenceGroup.isVisible()).isTrue();
+ }
+
+ @Test
+ public void refreshUi_noPassword_showAuthenticationReminderPreference() {
+ ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
+
+
+ mController.refreshUi();
+
+ assertThat(mPreferenceGroup.getPreferenceCount()).isEqualTo(1);
+ assertThat(mPreferenceGroup.getPreference(0).getSummary()).isEqualTo(
+ mContext.getString(R.string.trusted_device_set_authentication_reminder));
+ }
+
+ @Test
+ public void onPreferenceClicked_hasPassword_showDialog() {
+ ShadowLockPatternUtils.setPasswordQuality(DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
+ when(mMockCarTrustAgentEnrollmentManager.getEnrolledDeviceInfoForUser(
+ mCarUserManagerHelper.getCurrentProcessUserId())).thenReturn(mDevices);
+ mController.refreshUi();
+ Preference p = mPreferenceGroup.getPreference(0);
+
+ p.performClick();
+
+ verify(mPreferenceControllerHelper.getMockFragmentController()).showDialog(
+ any(ConfirmRemoveDeviceDialog.class), anyString());
+ }
+
+ @Test
+ public void onRemoveDeviceDialogConfirmed_remoeEscrwoToken() {
+ mController.mConfirmRemoveDeviceListener.onConfirmRemoveDevice(1);
+
+ verify(mMockCarTrustAgentEnrollmentManager).removeEscrowToken(1,
+ mCarUserManagerHelper.getCurrentProcessUserId());
+ }
+}
diff --git a/tests/robotests/src/com/android/car/settings/storage/AppStorageSettingsDetailsFragmentTest.java b/tests/robotests/src/com/android/car/settings/storage/AppStorageSettingsDetailsFragmentTest.java
index ad0dc19..7146cb5 100644
--- a/tests/robotests/src/com/android/car/settings/storage/AppStorageSettingsDetailsFragmentTest.java
+++ b/tests/robotests/src/com/android/car/settings/storage/AppStorageSettingsDetailsFragmentTest.java
@@ -46,7 +46,7 @@
import com.android.car.settings.testutils.ShadowApplicationPackageManager;
import com.android.car.settings.testutils.ShadowApplicationsState;
import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
-import com.android.car.settings.testutils.ShadowRestrictedLockUtils;
+import com.android.car.settings.testutils.ShadowRestrictedLockUtilsInternal;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.applications.StorageStatsSource;
@@ -63,7 +63,7 @@
/** Unit test for {@link AppStorageSettingsDetailsFragment}. */
@RunWith(CarSettingsRobolectricTestRunner.class)
@Config(shadows = {ShadowApplicationsState.class, ShadowCarUserManagerHelper.class,
- ShadowRestrictedLockUtils.class, ShadowApplicationPackageManager.class,
+ ShadowRestrictedLockUtilsInternal.class, ShadowApplicationPackageManager.class,
ShadowActivityManager.class})
public class AppStorageSettingsDetailsFragmentTest {
@@ -122,7 +122,7 @@
public void tearDown() {
ShadowApplicationsState.reset();
ShadowCarUserManagerHelper.reset();
- ShadowRestrictedLockUtils.reset();
+ ShadowRestrictedLockUtilsInternal.reset();
ShadowApplicationPackageManager.reset();
ShadowActivityManager.reset();
}
@@ -157,7 +157,7 @@
@Test
public void handleClearCacheClick_disallowedBySystem_shouldNotDeleteApplicationCache() {
- ShadowRestrictedLockUtils.setEnforcedAdmin(mEnforcedAdmin);
+ ShadowRestrictedLockUtilsInternal.setEnforcedAdmin(mEnforcedAdmin);
ShadowApplicationPackageManager.setPackageManager(mPackageManager);
doNothing().when(mPackageManager).deleteApplicationCacheFiles(anyString(), any());
@@ -179,8 +179,8 @@
@Test
public void handleClearCacheClick_allowedBySystem_shouldNotDeleteApplicationCache() {
- ShadowRestrictedLockUtils.setEnforcedAdmin(mEnforcedAdmin);
- ShadowRestrictedLockUtils.setHasBaseUserRestriction(true);
+ ShadowRestrictedLockUtilsInternal.setEnforcedAdmin(mEnforcedAdmin);
+ ShadowRestrictedLockUtilsInternal.setHasBaseUserRestriction(true);
ShadowApplicationPackageManager.setPackageManager(mPackageManager);
doNothing().when(mPackageManager).deleteApplicationCacheFiles(anyString(), any());
@@ -202,7 +202,7 @@
@Test
public void handleClearDataClick_disallowedBySystem_shouldNotShowDialogToClear() {
- ShadowRestrictedLockUtils.setEnforcedAdmin(mEnforcedAdmin);
+ ShadowRestrictedLockUtilsInternal.setEnforcedAdmin(mEnforcedAdmin);
ShadowApplicationPackageManager.setPackageManager(mPackageManager);
StorageStats stats = new StorageStats();
@@ -222,8 +222,8 @@
@Test
public void handleClearDataClick_allowedBySystem_shouldShowDialogToClear() {
- ShadowRestrictedLockUtils.setEnforcedAdmin(mEnforcedAdmin);
- ShadowRestrictedLockUtils.setHasBaseUserRestriction(true);
+ ShadowRestrictedLockUtilsInternal.setEnforcedAdmin(mEnforcedAdmin);
+ ShadowRestrictedLockUtilsInternal.setHasBaseUserRestriction(true);
ShadowApplicationPackageManager.setPackageManager(mPackageManager);
mFragmentController.resume();
diff --git a/tests/robotests/src/com/android/car/settings/storage/StorageMediaCategoryDetailPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/storage/StorageMediaCategoryDetailPreferenceControllerTest.java
index 5b55242..1bd79b0 100644
--- a/tests/robotests/src/com/android/car/settings/storage/StorageMediaCategoryDetailPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/storage/StorageMediaCategoryDetailPreferenceControllerTest.java
@@ -91,13 +91,9 @@
assertThat(mLogicalPreferenceGroup.getPreferenceCount()).isEqualTo(2);
- assertThat(mLogicalPreferenceGroup.getPreference(0).getIcon()).isEqualTo(
- mContext.getDrawable(R.drawable.test_icon));
assertThat(mLogicalPreferenceGroup.getPreference(0).getTitle()).isEqualTo(LABEL);
assertThat(mLogicalPreferenceGroup.getPreference(0).getSummary()).isEqualTo(SIZE_STR);
- assertThat(mLogicalPreferenceGroup.getPreference(1).getIcon()).isEqualTo(
- mContext.getDrawable(R.drawable.ic_headset));
assertThat(mLogicalPreferenceGroup.getPreference(1).getTitle()).isEqualTo(
mContext.getString(R.string.storage_audio_files_title));
assertThat(mLogicalPreferenceGroup.getPreference(1).getSummary()).isEqualTo(
diff --git a/tests/robotests/src/com/android/car/settings/system/MasterClearConfirmFragmentTest.java b/tests/robotests/src/com/android/car/settings/system/MasterClearConfirmFragmentTest.java
index 183bb7d..5ed62ea 100644
--- a/tests/robotests/src/com/android/car/settings/system/MasterClearConfirmFragmentTest.java
+++ b/tests/robotests/src/com/android/car/settings/system/MasterClearConfirmFragmentTest.java
@@ -18,6 +18,10 @@
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
@@ -31,39 +35,41 @@
import com.android.car.settings.CarSettingsRobolectricTestRunner;
import com.android.car.settings.R;
import com.android.car.settings.testutils.FragmentController;
-import com.android.car.settings.testutils.ShadowOemLockManager;
-import com.android.car.settings.testutils.ShadowPersistentDataBlockManager;
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;
import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
-import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowApplication;
-import org.robolectric.shadows.ShadowContextImpl;
-import org.robolectric.util.ReflectionHelpers;
-
-import java.util.Map;
/** Unit test for {@link MasterClearConfirmFragment}. */
@RunWith(CarSettingsRobolectricTestRunner.class)
-@Config(shadows = {ShadowPersistentDataBlockManager.class, ShadowOemLockManager.class})
public class MasterClearConfirmFragmentTest {
+ @Mock
+ private PersistentDataBlockManager mPersistentDataBlockManager;
+ @Mock
+ private OemLockManager mOemLockManager;
+
private Context mContext;
private MasterClearConfirmFragment mFragment;
@Before
public void setUp() {
- // Robolectric doesn't know about the pdb manager, so we must add it ourselves.
- getSystemServiceMap().put(Context.PERSISTENT_DATA_BLOCK_SERVICE,
- PersistentDataBlockManager.class.getName());
- // Robolectric doesn't know about the oem lock manager, so we must add it ourselves.
- getSystemServiceMap().put(Context.OEM_LOCK_SERVICE, OemLockManager.class.getName());
-
+ MockitoAnnotations.initMocks(this);
mContext = RuntimeEnvironment.application;
+ // Note: this is not a general pattern to follow for other use cases! Most system
+ // services can be mocked using Shadows!
+ // Because these services are conditionally included in Android's SystemServiceRegistry
+ // and are not created in ShadowServiceManager, there is no way to conventionally shadow
+ // them in Robolectric.
+ ShadowApplication.getInstance().setSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE,
+ mPersistentDataBlockManager);
+ ShadowApplication.getInstance().setSystemService(Context.OEM_LOCK_SERVICE, mOemLockManager);
+
mFragment = FragmentController.of(new MasterClearConfirmFragment()).setup();
// Default to not provisioned.
@@ -73,7 +79,6 @@
@After
public void tearDown() {
- getSystemServiceMap().remove(Context.PERSISTENT_DATA_BLOCK_SERVICE);
Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
0);
}
@@ -104,7 +109,7 @@
@Test
public void confirmClicked_pdbManagerNull_sendsResetIntent() {
- getSystemServiceMap().remove(Context.PERSISTENT_DATA_BLOCK_SERVICE);
+ ShadowApplication.getInstance().removeSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE);
findMasterClearConfirmButton(mFragment.requireActivity()).performClick();
@@ -114,16 +119,16 @@
@Test
public void confirmClicked_oemUnlockAllowed_doesNotWipePdb() {
- getShadowOemLockManager().setIsOemUnlockAllowed(true);
+ when(mOemLockManager.isOemUnlockAllowed()).thenReturn(true);
findMasterClearConfirmButton(mFragment.requireActivity()).performClick();
- assertThat(getShadowPdbManager().getWipeCalledCount()).isEqualTo(0);
+ verify(mPersistentDataBlockManager, never()).wipe();
}
@Test
public void confirmClicked_oemUnlockAllowed_sendsResetIntent() {
- getShadowOemLockManager().setIsOemUnlockAllowed(true);
+ when(mOemLockManager.isOemUnlockAllowed()).thenReturn(true);
findMasterClearConfirmButton(mFragment.requireActivity()).performClick();
@@ -133,16 +138,16 @@
@Test
public void confirmClicked_noOemUnlockAllowed_notProvisioned_doesNotWipePdb() {
- getShadowOemLockManager().setIsOemUnlockAllowed(false);
+ when(mOemLockManager.isOemUnlockAllowed()).thenReturn(false);
findMasterClearConfirmButton(mFragment.requireActivity()).performClick();
- assertThat(getShadowPdbManager().getWipeCalledCount()).isEqualTo(0);
+ verify(mPersistentDataBlockManager, never()).wipe();
}
@Test
public void confirmClicked_noOemUnlockAllowed_notProvisioned_sendsResetIntent() {
- getShadowOemLockManager().setIsOemUnlockAllowed(false);
+ when(mOemLockManager.isOemUnlockAllowed()).thenReturn(false);
findMasterClearConfirmButton(mFragment.requireActivity()).performClick();
@@ -152,18 +157,18 @@
@Test
public void confirmClicked_noOemUnlockAllowed_provisioned_wipesPdb() {
- getShadowOemLockManager().setIsOemUnlockAllowed(false);
+ when(mOemLockManager.isOemUnlockAllowed()).thenReturn(false);
Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
1);
findMasterClearConfirmButton(mFragment.requireActivity()).performClick();
- assertThat(getShadowPdbManager().getWipeCalledCount()).isEqualTo(1);
+ verify(mPersistentDataBlockManager).wipe();
}
@Test
public void confirmClicked_noOemUnlockAllowed_provisioned_sendsResetIntent() {
- getShadowOemLockManager().setIsOemUnlockAllowed(false);
+ when(mOemLockManager.isOemUnlockAllowed()).thenReturn(false);
Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.DEVICE_PROVISIONED,
1);
@@ -176,16 +181,4 @@
private Button findMasterClearConfirmButton(Activity activity) {
return activity.findViewById(R.id.action_button1);
}
-
- private ShadowPersistentDataBlockManager getShadowPdbManager() {
- return Shadow.extract(mContext.getSystemService(Context.PERSISTENT_DATA_BLOCK_SERVICE));
- }
-
- private ShadowOemLockManager getShadowOemLockManager() {
- return Shadow.extract(mContext.getSystemService(Context.OEM_LOCK_SERVICE));
- }
-
- private Map<String, String> getSystemServiceMap() {
- return ReflectionHelpers.getStaticField(ShadowContextImpl.class, "SYSTEM_SERVICE_MAP");
- }
}
diff --git a/tests/robotests/src/com/android/car/settings/system/MasterClearFragmentTest.java b/tests/robotests/src/com/android/car/settings/system/MasterClearFragmentTest.java
index ed2b79f..10bbddf 100644
--- a/tests/robotests/src/com/android/car/settings/system/MasterClearFragmentTest.java
+++ b/tests/robotests/src/com/android/car/settings/system/MasterClearFragmentTest.java
@@ -30,7 +30,6 @@
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
-import android.telephony.euicc.EuiccManager;
import android.widget.Button;
import androidx.fragment.app.Fragment;
@@ -40,7 +39,7 @@
import com.android.car.settings.security.CheckLockActivity;
import com.android.car.settings.testutils.FragmentController;
import com.android.car.settings.testutils.ShadowCarUserManagerHelper;
-import com.android.car.settings.testutils.ShadowEuiccManager;
+import com.android.car.settings.testutils.ShadowUserManager;
import org.junit.After;
import org.junit.Before;
@@ -52,15 +51,12 @@
import org.robolectric.Shadows;
import org.robolectric.annotation.Config;
import org.robolectric.shadows.ShadowApplication;
-import org.robolectric.shadows.ShadowContextImpl;
-import org.robolectric.util.ReflectionHelpers;
import java.util.Collections;
-import java.util.Map;
/** Unit test for {@link MasterClearFragment}. */
@RunWith(CarSettingsRobolectricTestRunner.class)
-@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowEuiccManager.class})
+@Config(shadows = {ShadowCarUserManagerHelper.class, ShadowUserManager.class})
public class MasterClearFragmentTest {
@Mock
@@ -77,16 +73,14 @@
Shadows.shadowOf(context.getPackageManager())
.setSystemFeature(PackageManager.FEATURE_AUTOMOTIVE, true);
when(mCarUserManagerHelper.getAllSwitchableUsers()).thenReturn(Collections.emptyList());
- // Robolectric doesn't know about the euicc manager, so we must add it ourselves.
- getSystemServiceMap().put(Context.EUICC_SERVICE, EuiccManager.class.getName());
mFragment = FragmentController.of(new MasterClearFragment()).setup();
}
@After
public void tearDown() {
- getSystemServiceMap().remove(Context.CARRIER_CONFIG_SERVICE);
ShadowCarUserManagerHelper.reset();
+ ShadowUserManager.reset();
}
@Test
@@ -121,8 +115,4 @@
private Button findMasterClearButton(Activity activity) {
return activity.findViewById(R.id.action_button1);
}
-
- private Map<String, String> getSystemServiceMap() {
- return ReflectionHelpers.getStaticField(ShadowContextImpl.class, "SYSTEM_SERVICE_MAP");
- }
}
diff --git a/tests/robotests/src/com/android/car/settings/system/MasterClearResetEsimPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/MasterClearResetEsimPreferenceControllerTest.java
index 85826ce..cd16313 100644
--- a/tests/robotests/src/com/android/car/settings/system/MasterClearResetEsimPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/system/MasterClearResetEsimPreferenceControllerTest.java
@@ -24,29 +24,22 @@
import android.content.Context;
import android.os.SystemProperties;
import android.provider.Settings;
-import android.telephony.euicc.EuiccManager;
import androidx.preference.SwitchPreference;
import com.android.car.settings.CarSettingsRobolectricTestRunner;
import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowEuiccManager;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowContextImpl;
-import org.robolectric.util.ReflectionHelpers;
-
-import java.util.Map;
+import org.robolectric.shadows.ShadowEuiccManager;
/** Unit test for {@link MasterClearResetEsimPreferenceController}. */
@RunWith(CarSettingsRobolectricTestRunner.class)
-@Config(shadows = {ShadowEuiccManager.class})
public class MasterClearResetEsimPreferenceControllerTest {
private Context mContext;
@@ -54,8 +47,6 @@
@Before
public void setUp() {
- // Robolectric doesn't know about the euicc manager, so we must add it ourselves.
- getSystemServiceMap().put(Context.EUICC_SERVICE, EuiccManager.class.getName());
mContext = RuntimeEnvironment.application;
((ShadowEuiccManager) Shadow.extract(
mContext.getSystemService(Context.EUICC_SERVICE))).setIsEnabled(true);
@@ -68,7 +59,6 @@
@After
public void tearDown() {
- getSystemServiceMap().remove(Context.CARRIER_CONFIG_SERVICE);
Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED, 0);
}
@@ -87,8 +77,4 @@
assertThat(mController.getAvailabilityStatus()).isEqualTo(UNSUPPORTED_ON_DEVICE);
}
-
- private Map<String, String> getSystemServiceMap() {
- return ReflectionHelpers.getStaticField(ShadowContextImpl.class, "SYSTEM_SERVICE_MAP");
- }
}
diff --git a/tests/robotests/src/com/android/car/settings/system/ResetEsimPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/ResetEsimPreferenceControllerTest.java
index 71bc7fe..249eb09 100644
--- a/tests/robotests/src/com/android/car/settings/system/ResetEsimPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/system/ResetEsimPreferenceControllerTest.java
@@ -16,7 +16,6 @@
package com.android.car.settings.system;
-
import static com.android.car.settings.common.PreferenceController.AVAILABLE;
import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
@@ -24,29 +23,22 @@
import android.content.Context;
import android.provider.Settings;
-import android.telephony.euicc.EuiccManager;
import androidx.preference.SwitchPreference;
import com.android.car.settings.CarSettingsRobolectricTestRunner;
import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowEuiccManager;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowContextImpl;
-import org.robolectric.util.ReflectionHelpers;
-
-import java.util.Map;
+import org.robolectric.shadows.ShadowEuiccManager;
/** Unit test for {@link ResetEsimPreferenceController}. */
@RunWith(CarSettingsRobolectricTestRunner.class)
-@Config(shadows = {ShadowEuiccManager.class})
public class ResetEsimPreferenceControllerTest {
private Context mContext;
@@ -54,9 +46,6 @@
@Before
public void setUp() {
- // Robolectric doesn't know about the euicc manager, so we must add it ourselves.
- getSystemServiceMap().put(Context.EUICC_SERVICE, EuiccManager.class.getName());
-
mContext = RuntimeEnvironment.application;
mController = new PreferenceControllerTestHelper<>(mContext,
ResetEsimPreferenceController.class,
@@ -65,7 +54,6 @@
@After
public void tearDown() {
- getSystemServiceMap().remove(Context.CARRIER_CONFIG_SERVICE);
Settings.Global.putInt(mContext.getContentResolver(),
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.EUICC_PROVISIONED, 0);
@@ -105,8 +93,4 @@
private ShadowEuiccManager getShadowEuiccManager() {
return Shadow.extract(mContext.getSystemService(Context.EUICC_SERVICE));
}
-
- private Map<String, String> getSystemServiceMap() {
- return ReflectionHelpers.getStaticField(ShadowContextImpl.class, "SYSTEM_SERVICE_MAP");
- }
}
diff --git a/tests/robotests/src/com/android/car/settings/system/ResetNetworkConfirmFragmentTest.java b/tests/robotests/src/com/android/car/settings/system/ResetNetworkConfirmFragmentTest.java
index 16fdc53..1257b62 100644
--- a/tests/robotests/src/com/android/car/settings/system/ResetNetworkConfirmFragmentTest.java
+++ b/tests/robotests/src/com/android/car/settings/system/ResetNetworkConfirmFragmentTest.java
@@ -23,6 +23,7 @@
import android.content.ContentResolver;
import android.content.Context;
+import android.net.INetworkPolicyManager.Default;
import android.net.NetworkPolicyManager;
import android.net.Uri;
import android.provider.Telephony;
@@ -49,12 +50,11 @@
import org.robolectric.Robolectric;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Config;
+import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowContentResolver;
import org.robolectric.shadows.ShadowContextImpl;
-import org.robolectric.util.ReflectionHelpers;
import java.util.List;
-import java.util.Map;
@RunWith(CarSettingsRobolectricTestRunner.class)
@Config(shadows = {
@@ -74,10 +74,13 @@
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
- getSystemServiceMap().put(Context.NETWORK_POLICY_SERVICE,
- NetworkPolicyManager.class.getName());
-
mContext = RuntimeEnvironment.application;
+
+ final NetworkPolicyManager npm = new NetworkPolicyManager(mContext, new Default());
+ ShadowContextImpl shadowContext =
+ Shadow.extract(RuntimeEnvironment.application.getBaseContext());
+ shadowContext.setSystemService(Context.NETWORK_POLICY_SERVICE, npm);
+
mContentResolver = mContext.getContentResolver();
setEuiccResetCheckbox(false);
@@ -93,7 +96,6 @@
@After
public void tearDown() {
- getSystemServiceMap().remove(Context.NETWORK_POLICY_SERVICE);
ShadowConnectivityManager.reset();
ShadowWifiManager.reset();
ShadowBluetoothAdapter.reset();
@@ -222,8 +224,4 @@
PreferenceManager.getDefaultSharedPreferences(mContext).edit().putString(
mContext.getString(R.string.pk_reset_network_subscription), id).commit();
}
-
- private Map<String, String> getSystemServiceMap() {
- return ReflectionHelpers.getStaticField(ShadowContextImpl.class, "SYSTEM_SERVICE_MAP");
- }
}
diff --git a/tests/robotests/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceControllerTest.java
index 0572237..3e3a999 100644
--- a/tests/robotests/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/system/ResetNetworkSubscriptionPreferenceControllerTest.java
@@ -36,27 +36,21 @@
import com.android.car.settings.CarSettingsRobolectricTestRunner;
import com.android.car.settings.common.PreferenceControllerTestHelper;
-import com.android.car.settings.testutils.ShadowSubscriptionManager;
-import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows;
-import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow;
-import org.robolectric.shadows.ShadowContextImpl;
import org.robolectric.shadows.ShadowPackageManager;
-import org.robolectric.util.ReflectionHelpers;
+import org.robolectric.shadows.ShadowSubscriptionManager;
import java.util.Arrays;
import java.util.Collections;
-import java.util.Map;
/** Unit test for {@link ResetNetworkSubscriptionPreferenceController}. */
@RunWith(CarSettingsRobolectricTestRunner.class)
-@Config(shadows = {ShadowSubscriptionManager.class})
public class ResetNetworkSubscriptionPreferenceControllerTest {
private static final int SUBID_1 = MIN_SUBSCRIPTION_ID_VALUE;
@@ -73,10 +67,6 @@
@Before
public void setUp() {
- // Robolectric doesn't know about the euicc manager, so we must add it ourselves.
- getSystemServiceMap().put(Context.TELEPHONY_SUBSCRIPTION_SERVICE,
- SubscriptionManager.class.getName());
-
mContext = RuntimeEnvironment.application;
mShadowSubscriptionManager = Shadow.extract(
mContext.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE));
@@ -93,12 +83,6 @@
mPreferenceControllerHelper.sendLifecycleEvent(Lifecycle.Event.ON_CREATE);
}
- @After
- public void tearDown() {
- getSystemServiceMap().remove(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
- ShadowSubscriptionManager.reset();
- }
-
@Test
public void getAvailabilityStatus_telephonyAvailable_available() {
ShadowPackageManager shadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
@@ -217,7 +201,7 @@
createSubInfo(SUBID_3, "sub3"), createSubInfo(SUBID_4, "sub4")));
ShadowSubscriptionManager.setDefaultSubscriptionId(SUBID_4);
- ShadowSubscriptionManager.setDefaultSmsSubId(SUBID_3);
+ ShadowSubscriptionManager.setDefaultSmsSubscriptionId(SUBID_3);
mController.refreshUi();
assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_3));
@@ -230,8 +214,8 @@
createSubInfo(SUBID_3, "sub3"), createSubInfo(SUBID_4, "sub4")));
ShadowSubscriptionManager.setDefaultSubscriptionId(SUBID_4);
- ShadowSubscriptionManager.setDefaultSmsSubId(SUBID_3);
- ShadowSubscriptionManager.setDefaultVoiceSubId(SUBID_2);
+ ShadowSubscriptionManager.setDefaultSmsSubscriptionId(SUBID_3);
+ ShadowSubscriptionManager.setDefaultVoiceSubscriptionId(SUBID_2);
mController.refreshUi();
assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_2));
@@ -244,9 +228,9 @@
createSubInfo(SUBID_3, "sub3"), createSubInfo(SUBID_4, "sub4")));
ShadowSubscriptionManager.setDefaultSubscriptionId(SUBID_4);
- ShadowSubscriptionManager.setDefaultSmsSubId(SUBID_3);
- ShadowSubscriptionManager.setDefaultVoiceSubId(SUBID_2);
- ShadowSubscriptionManager.setDefaultDataSubId(SUBID_1);
+ ShadowSubscriptionManager.setDefaultSmsSubscriptionId(SUBID_3);
+ ShadowSubscriptionManager.setDefaultVoiceSubscriptionId(SUBID_2);
+ ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
mController.refreshUi();
assertThat(mListPreference.getValue()).isEqualTo(String.valueOf(SUBID_1));
@@ -262,7 +246,7 @@
// Multiple subscriptions so that preference is shown / title is set.
mShadowSubscriptionManager.setActiveSubscriptionInfoList(
Arrays.asList(subInfo, createSubInfo(SUBID_2, "sub2")));
- ShadowSubscriptionManager.setDefaultDataSubId(SUBID_1);
+ ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
mController.refreshUi();
@@ -283,7 +267,7 @@
// Multiple subscriptions so that preference is shown / title is set.
mShadowSubscriptionManager.setActiveSubscriptionInfoList(
Arrays.asList(subInfo, createSubInfo(SUBID_2, "sub2")));
- ShadowSubscriptionManager.setDefaultDataSubId(SUBID_1);
+ ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
mController.refreshUi();
@@ -300,7 +284,7 @@
// Multiple subscriptions so that preference is shown / title is set.
mShadowSubscriptionManager.setActiveSubscriptionInfoList(
Arrays.asList(subInfo, createSubInfo(SUBID_2, "sub2")));
- ShadowSubscriptionManager.setDefaultDataSubId(SUBID_1);
+ ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
mController.refreshUi();
@@ -317,7 +301,7 @@
// Multiple subscriptions so that preference is shown / title is set.
mShadowSubscriptionManager.setActiveSubscriptionInfoList(
Arrays.asList(subInfo, createSubInfo(SUBID_2, "sub2")));
- ShadowSubscriptionManager.setDefaultDataSubId(SUBID_1);
+ ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
mController.refreshUi();
@@ -328,7 +312,7 @@
public void handlePreferenceChanged_updatesTitle() {
mShadowSubscriptionManager.setActiveSubscriptionInfoList(
Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2")));
- ShadowSubscriptionManager.setDefaultDataSubId(SUBID_1);
+ ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
mController.refreshUi();
mListPreference.callChangeListener(String.valueOf(SUBID_2));
@@ -340,7 +324,7 @@
public void handlePreferenceChanged_returnsTrue() {
mShadowSubscriptionManager.setActiveSubscriptionInfoList(
Arrays.asList(createSubInfo(SUBID_1, "sub1"), createSubInfo(SUBID_2, "sub2")));
- ShadowSubscriptionManager.setDefaultDataSubId(SUBID_1);
+ ShadowSubscriptionManager.setDefaultDataSubscriptionId(SUBID_1);
mController.refreshUi();
assertThat(mController.handlePreferenceChanged(mListPreference,
@@ -366,8 +350,4 @@
when(subscriptionInfo.getMnc()).thenReturn(333);
return subscriptionInfo;
}
-
- private Map<String, String> getSystemServiceMap() {
- return ReflectionHelpers.getStaticField(ShadowContextImpl.class, "SYSTEM_SERVICE_MAP");
- }
}
diff --git a/tests/robotests/src/com/android/car/settings/system/SystemUpdatePreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/SystemUpdatePreferenceControllerTest.java
index 3ed6bfd..004bb01 100644
--- a/tests/robotests/src/com/android/car/settings/system/SystemUpdatePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/system/SystemUpdatePreferenceControllerTest.java
@@ -28,7 +28,6 @@
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.PersistableBundle;
import android.telephony.CarrierConfigManager;
@@ -53,12 +52,9 @@
import org.robolectric.annotation.Config;
import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowApplication;
-import org.robolectric.shadows.ShadowContextImpl;
import org.robolectric.shadows.ShadowPackageManager;
-import org.robolectric.util.ReflectionHelpers;
import java.util.List;
-import java.util.Map;
/** Unit test for {@link SystemUpdatePreferenceController}. */
@RunWith(CarSettingsRobolectricTestRunner.class)
@@ -74,9 +70,6 @@
@Before
public void setUp() {
- // Robolectric doesn't know about the carrier service, so we must add it ourselves.
- getSystemServiceMap().put(Context.CARRIER_CONFIG_SERVICE,
- CarrierConfigManager.class.getName());
MockitoAnnotations.initMocks(this);
ShadowCarUserManagerHelper.setMockInstance(mCarUserManagerHelper);
when(mCarUserManagerHelper.isCurrentProcessAdminUser()).thenReturn(true);
@@ -90,7 +83,6 @@
@After
public void tearDown() {
- getSystemServiceMap().remove(Context.CARRIER_CONFIG_SERVICE);
ShadowCarUserManagerHelper.reset();
}
@@ -119,12 +111,8 @@
activityInfo.name = "SomeActivity";
String label = "Activity Label";
- ResolveInfo resolveInfo = new ResolveInfo() {
- @Override
- public CharSequence loadLabel(PackageManager pm) {
- return label;
- }
- };
+ ResolveInfo resolveInfo = new ResolveInfo();
+ resolveInfo.nonLocalizedLabel = label;
resolveInfo.activityInfo = activityInfo;
Intent intent = new Intent();
@@ -186,8 +174,4 @@
private ShadowCarrierConfigManager getShadowCarrierConfigManager() {
return Shadow.extract(mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE));
}
-
- private Map<String, String> getSystemServiceMap() {
- return ReflectionHelpers.getStaticField(ShadowContextImpl.class, "SYSTEM_SERVICE_MAP");
- }
}
diff --git a/tests/robotests/src/com/android/car/settings/system/WifiMacAddressPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/WifiMacAddressPreferenceControllerTest.java
deleted file mode 100644
index f475dcb..0000000
--- a/tests/robotests/src/com/android/car/settings/system/WifiMacAddressPreferenceControllerTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.system;
-
-import static com.android.car.settings.common.PreferenceController.AVAILABLE_FOR_VIEWING;
-import static com.android.car.settings.common.PreferenceController.UNSUPPORTED_ON_DEVICE;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-import android.net.wifi.WifiInfo;
-import android.net.wifi.WifiManager;
-
-import androidx.lifecycle.Lifecycle;
-import androidx.preference.Preference;
-
-import com.android.car.settings.CarSettingsRobolectricTestRunner;
-import com.android.car.settings.common.PreferenceControllerTestHelper;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.Shadows;
-
-/** Unit test for {@link WifiMacAddressPreferenceController}. */
-@RunWith(CarSettingsRobolectricTestRunner.class)
-public class WifiMacAddressPreferenceControllerTest {
-
- private static final String MAC_ADDRESS = "mac address";
-
- private Preference mPreference;
- private Context mContext;
-
- @Mock
- private WifiManager mMockWifiManager;
- @Mock
- private WifiInfo mMockWifiInfo;
- @Mock
- private Context mMockContext;
- private PreferenceControllerTestHelper<WifiMacAddressPreferenceController>
- mControllerHelper;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- mContext = RuntimeEnvironment.application;
-
- // Construct controller.
- mPreference = new Preference(mContext);
- mControllerHelper = new PreferenceControllerTestHelper<>(mContext,
- WifiMacAddressPreferenceController.class, mPreference);
-
- when(mMockContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mMockWifiManager);
- when(mMockWifiManager.getConnectionInfo()).thenReturn(mMockWifiInfo);
- mControllerHelper.getController().init(mMockContext);
- }
-
- @Test
- public void getAvailabilityStatus_wifiAvailable_availableForViewing() {
- Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
- PackageManager.FEATURE_WIFI, /* supported= */ true);
-
- assertThat(mControllerHelper.getController().getAvailabilityStatus())
- .isEqualTo(AVAILABLE_FOR_VIEWING);
- }
-
- @Test
- public void getAvailabilityStatus_wifiNotAvailable_unsupportedOnDevice() {
- Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
- PackageManager.FEATURE_WIFI, /* supported= */ false);
-
- assertThat(mControllerHelper.getController().getAvailabilityStatus())
- .isEqualTo(UNSUPPORTED_ON_DEVICE);
- }
-
- @Test
- public void getSummary_shouldHaveMacAddress() {
- Shadows.shadowOf(mContext.getPackageManager()).setSystemFeature(
- PackageManager.FEATURE_WIFI, true);
-
- when(mMockWifiInfo.getMacAddress()).thenReturn(MAC_ADDRESS);
-
- mControllerHelper.markState(Lifecycle.State.CREATED);
- mControllerHelper.getController().refreshUi();
-
- assertThat(mPreference.getSummary()).isEqualTo(MAC_ADDRESS);
- }
-}
diff --git a/tests/robotests/src/com/android/car/settings/system/legal/LegalPreferenceControllerTest.java b/tests/robotests/src/com/android/car/settings/system/legal/LegalPreferenceControllerTest.java
index a01e6ef..be62245 100644
--- a/tests/robotests/src/com/android/car/settings/system/legal/LegalPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/car/settings/system/legal/LegalPreferenceControllerTest.java
@@ -116,14 +116,11 @@
activityInfo.name = "SomeActivity";
activityInfo.applicationInfo = new ApplicationInfo();
activityInfo.applicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
+ activityInfo.applicationInfo.nonLocalizedLabel = TEST_LABEL;
- ResolveInfo resolveInfo = new ResolveInfo() {
- @Override
- public CharSequence loadLabel(PackageManager pm) {
- return TEST_LABEL;
- }
- };
+ ResolveInfo resolveInfo = new ResolveInfo();
resolveInfo.activityInfo = activityInfo;
+
List<ResolveInfo> list = new LinkedList();
list.add(resolveInfo);
diff --git a/tests/robotests/src/com/android/car/settings/testutils/CarSettingsShadowResources.java b/tests/robotests/src/com/android/car/settings/testutils/CarSettingsShadowResources.java
deleted file mode 100644
index 036eb6d..0000000
--- a/tests/robotests/src/com/android/car/settings/testutils/CarSettingsShadowResources.java
+++ /dev/null
@@ -1,70 +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.car.settings.testutils;
-
-import static org.robolectric.shadow.api.Shadow.directlyOn;
-
-import android.annotation.ColorRes;
-import android.annotation.DimenRes;
-import android.annotation.Nullable;
-import android.content.res.Resources;
-
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-import org.robolectric.annotation.RealObject;
-import org.robolectric.shadows.ShadowResources;
-
-/**
- * Overrides ShadowResources to return a dummy value if resources are not found.
- *
- * Reason for this is the Design Support Library has moved to prebuilts but robolectric is unable
- * to pull resources from binaries at this time.
- * TODO: Delete this shadow when robolectric supports binary resource loading
- */
-@Implements(value = Resources.class, inheritImplementationMethods = true)
-public class CarSettingsShadowResources extends ShadowResources {
- @RealObject
- public Resources realResources;
-
- @Implementation
- public int getDimensionPixelSize(@DimenRes int id) {
- try {
- return directlyOn(realResources, Resources.class).getDimensionPixelSize(id);
- } catch (Resources.NotFoundException e1) {
- return 0;
- }
- }
-
- @Implementation
- public int getDimensionPixelOffset(@DimenRes int id) {
- try {
- return directlyOn(realResources, Resources.class).getDimensionPixelOffset(id);
- } catch (Resources.NotFoundException e1) {
- return 0;
- }
- }
-
- @Implementation
- public int getColor(@ColorRes int id, @Nullable Resources.Theme theme) {
- try {
- return directlyOn(realResources, Resources.class).getColor(id, theme);
- } catch (Resources.NotFoundException e1) {
- return 0;
- }
- }
-}
-
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowActivityManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowActivityManager.java
index e4f2ca9..b6a75aa 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowActivityManager.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowActivityManager.java
@@ -23,7 +23,7 @@
import org.robolectric.annotation.Implements;
import org.robolectric.annotation.Resetter;
-@Implements(value = ActivityManager.class, inheritImplementationMethods = true)
+@Implements(value = ActivityManager.class)
public class ShadowActivityManager extends org.robolectric.shadows.ShadowActivityManager {
private static boolean sIsApplicationUserDataCleared;
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowActivityThread.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowActivityThread.java
deleted file mode 100644
index 5cd1ac6..0000000
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowActivityThread.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.testutils;
-
-import android.app.ActivityThread;
-import android.content.pm.IPackageManager;
-import android.content.pm.PackageManager;
-import android.content.pm.ParceledListSlice;
-import android.os.RemoteException;
-
-import org.robolectric.RuntimeEnvironment;
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-
-import java.lang.reflect.Proxy;
-
-@Implements(ActivityThread.class)
-public class ShadowActivityThread {
-
- @Implementation
- protected static IPackageManager getPackageManager() {
- ClassLoader classLoader = ShadowActivityThread.class.getClassLoader();
- Class<?> iPackageManagerClass;
- try {
- iPackageManagerClass = classLoader.loadClass("android.content.pm.IPackageManager");
- } catch (ClassNotFoundException e) {
- throw new RuntimeException(e);
- }
- return (IPackageManager) Proxy.newProxyInstance(
- classLoader, new Class[]{iPackageManagerClass}, (proxy, method, args) -> {
- if (method.getName().equals("getApplicationInfo")) {
- String packageName = (String) args[0];
- int flags = (Integer) args[1];
- try {
- return RuntimeEnvironment.application
- .getPackageManager()
- .getApplicationInfo(packageName, flags);
- } catch (PackageManager.NameNotFoundException e) {
- throw new RemoteException(e.getMessage());
- }
- } else if (method.getName().equals("getInstalledApplications")) {
- int flags = (Integer) args[0];
- return new ParceledListSlice<>(RuntimeEnvironment.application
- .getPackageManager()
- .getInstalledApplications(flags));
- }
- throw new UnsupportedOperationException("sorry, not supporting " + method
- + " yet!");
- }
- );
- }
-}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowAppOpsManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowAppOpsManager.java
index 841af36..bfc582f 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowAppOpsManager.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowAppOpsManager.java
@@ -35,12 +35,6 @@
@Implements(value = AppOpsManager.class)
public class ShadowAppOpsManager {
- private static final long OP_TIME = 1400000000L;
- private static final long REJECT_TIME = 0L;
- private static final int DURATION = 10;
- private static final int PROXY_UID = 0;
- private static final String PROXY_PACKAGE = "";
-
private Table<Integer, InternalKey, Integer> mOpToKeyToMode = HashBasedTable.create();
@Implementation
@@ -72,8 +66,7 @@
if (mode == null) {
mode = AppOpsManager.opToDefaultMode(op);
}
- OpEntry opEntry = new OpEntry(op, mode, OP_TIME, REJECT_TIME, DURATION, PROXY_UID,
- PROXY_PACKAGE);
+ OpEntry opEntry = new OpEntry(op, mode);
PackageOps packageOp = new PackageOps(key.mPackageName, key.mUid,
Collections.singletonList(opEntry));
result.add(packageOp);
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowApplicationPackageManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowApplicationPackageManager.java
index 8200852..ac738fc 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowApplicationPackageManager.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowApplicationPackageManager.java
@@ -17,12 +17,14 @@
import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED;
+import android.annotation.NonNull;
import android.annotation.UserIdInt;
import android.app.ApplicationPackageManager;
import android.content.ComponentName;
import android.content.IntentFilter;
import android.content.pm.ApplicationInfo;
import android.content.pm.IPackageDataObserver;
+import android.content.pm.ModuleInfo;
import android.content.pm.PackageManager;
import android.content.pm.ProviderInfo;
import android.content.pm.ResolveInfo;
@@ -42,7 +44,7 @@
import java.util.Map;
/** Shadow of ApplicationPackageManager that allows the getting of content providers per user. */
-@Implements(value = ApplicationPackageManager.class, inheritImplementationMethods = true)
+@Implements(value = ApplicationPackageManager.class)
public class ShadowApplicationPackageManager extends
org.robolectric.shadows.ShadowApplicationPackageManager {
@@ -57,6 +59,7 @@
new HashMap<>();
private List<ResolveInfo> mHomeActivities = Collections.emptyList();
private ComponentName mDefaultHomeActivity;
+ private String mPermissionControllerPackageName;
@Resetter
public static void reset() {
@@ -65,54 +68,61 @@
}
@Implementation
- public Drawable getUserBadgedIcon(Drawable icon, UserHandle user) {
+ @NonNull
+ protected List<ModuleInfo> getInstalledModules(@PackageManager.ModuleInfoFlags int flags) {
+ return Collections.emptyList();
+ }
+
+ @Implementation
+ protected Drawable getUserBadgedIcon(Drawable icon, UserHandle user) {
return icon;
}
@Override
@Implementation
- public ProviderInfo resolveContentProviderAsUser(String name, int flags,
+ protected ProviderInfo resolveContentProviderAsUser(String name, int flags,
@UserIdInt int userId) {
return resolveContentProvider(name, flags);
}
@Implementation
- public int getPackageUidAsUser(String packageName, int flags, int userId)
+ protected int getPackageUidAsUser(String packageName, int flags, int userId)
throws PackageManager.NameNotFoundException {
return 0;
}
@Implementation
- public void deleteApplicationCacheFiles(String packageName, IPackageDataObserver observer) {
+ protected void deleteApplicationCacheFiles(String packageName, IPackageDataObserver observer) {
sPackageManager.deleteApplicationCacheFiles(packageName, observer);
}
@Implementation
- public Resources getResourcesForApplication(String appPackageName)
+ protected Resources getResourcesForApplication(String appPackageName)
throws PackageManager.NameNotFoundException {
return sResources;
}
@Implementation
- public List<ApplicationInfo> getInstalledApplicationsAsUser(int flags, int userId) {
+ protected List<ApplicationInfo> getInstalledApplicationsAsUser(int flags, int userId) {
return getInstalledApplications(flags);
}
@Implementation
- public ApplicationInfo getApplicationInfoAsUser(String packageName, int flags, int userId)
+ protected ApplicationInfo getApplicationInfoAsUser(String packageName, int flags, int userId)
throws PackageManager.NameNotFoundException {
return getApplicationInfo(packageName, flags);
}
@Implementation
- public ComponentName getHomeActivities(List<ResolveInfo> outActivities) {
+ @Override
+ protected ComponentName getHomeActivities(List<ResolveInfo> outActivities) {
outActivities.addAll(mHomeActivities);
return mDefaultHomeActivity;
}
@Implementation
@Override
- public void clearPackagePreferredActivities(String packageName) {
+ protected void clearPackagePreferredActivities(String packageName) {
mPreferredActivities.clear();
}
@@ -143,20 +153,20 @@
@Implementation
@Override
- public String getDefaultBrowserPackageNameAsUser(int userId) {
+ protected String getDefaultBrowserPackageNameAsUser(int userId) {
return mUserIdToDefaultBrowserMap.getOrDefault(userId, null);
}
@Implementation
@Override
- public boolean setDefaultBrowserPackageNameAsUser(String packageName, int userId) {
+ protected boolean setDefaultBrowserPackageNameAsUser(String packageName, int userId) {
mUserIdToDefaultBrowserMap.put(userId, packageName);
return true;
}
@Implementation
@Override
- public int getIntentVerificationStatusAsUser(String packageName, int userId) {
+ protected int getIntentVerificationStatusAsUser(String packageName, int userId) {
Pair<String, Integer> key = new Pair<>(packageName, userId);
return mPkgAndUserIdToIntentVerificationStatusMap.getOrDefault(key,
INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED);
@@ -164,13 +174,22 @@
@Implementation
@Override
- public boolean updateIntentVerificationStatusAsUser(String packageName, int status,
+ protected boolean updateIntentVerificationStatusAsUser(String packageName, int status,
int userId) {
Pair<String, Integer> key = new Pair<>(packageName, userId);
mPkgAndUserIdToIntentVerificationStatusMap.put(key, status);
return true;
}
+ @Implementation
+ protected String getPermissionControllerPackageName() {
+ return mPermissionControllerPackageName;
+ }
+
+ public void setPermissionControllerPackageName(String packageName) {
+ mPermissionControllerPackageName = packageName;
+ }
+
public void setHomeActivities(List<ResolveInfo> homeActivities) {
mHomeActivities = homeActivities;
}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowBluetoothAdapter.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowBluetoothAdapter.java
index 5b98aa7..9de2084 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowBluetoothAdapter.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowBluetoothAdapter.java
@@ -30,7 +30,7 @@
import java.util.Collections;
import java.util.List;
-@Implements(value = BluetoothAdapter.class, inheritImplementationMethods = true)
+@Implements(BluetoothAdapter.class)
public class ShadowBluetoothAdapter extends org.robolectric.shadows.ShadowBluetoothAdapter {
private static int sResetCalledCount = 0;
@@ -48,22 +48,22 @@
}
@Implementation
- public static synchronized BluetoothAdapter getDefaultAdapter() {
+ protected static synchronized BluetoothAdapter getDefaultAdapter() {
return (BluetoothAdapter) ShadowApplication.getInstance().getBluetoothAdapter();
}
@Implementation
- public ParcelUuid[] getUuids() {
+ protected ParcelUuid[] getUuids() {
return null;
}
@Implementation
- public String getName() {
+ protected String getName() {
return mName;
}
@Implementation
- public boolean setName(String name) {
+ protected boolean setName(String name) {
if (getState() != STATE_ON) {
return false;
}
@@ -72,7 +72,7 @@
}
@Implementation
- public int getScanMode() {
+ protected int getScanMode() {
if (getState() != STATE_ON) {
return SCAN_MODE_NONE;
}
@@ -80,7 +80,7 @@
}
@Implementation
- public boolean setScanMode(int scanMode) {
+ protected boolean setScanMode(int scanMode) {
if (getState() != STATE_ON) {
return false;
}
@@ -89,7 +89,7 @@
}
@Implementation
- public List<Integer> getSupportedProfiles() {
+ protected List<Integer> getSupportedProfiles() {
return Collections.emptyList();
}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowCar.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowCar.java
index 2aaa1f0..ed0f78b 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowCar.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowCar.java
@@ -70,6 +70,23 @@
}
/**
+ * Returns a mocked version of a {@link Car} object.
+ */
+ @Implementation
+ protected static Car createCar(Context context) {
+ doReturn(sIsConnected).when(sMockCar).isConnected();
+ if (sServiceName != null) {
+ try {
+ doReturn(sCarManager).when(sMockCar).getCarManager(sServiceName);
+ } catch (CarNotConnectedException e) {
+ // do nothing, have to do this because compiler doesn't understand mock can't throw
+ // exception.
+ }
+ }
+ return sMockCar;
+ }
+
+ /**
* Sets the manager returned by {@link Car#getCarManager(String)}.
*
* @param serviceName the name for the service request that should return this car manager.
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowCarUserManagerHelper.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowCarUserManagerHelper.java
index e0791cb..b900a55 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowCarUserManagerHelper.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowCarUserManagerHelper.java
@@ -84,12 +84,12 @@
}
@Implementation
- public List<UserInfo> getAllPersistentUsers() {
+ protected List<UserInfo> getAllPersistentUsers() {
return sMockInstance.getAllPersistentUsers();
}
@Implementation
- public UserInfo createNewNonAdminUser(String userName) {
+ protected UserInfo createNewNonAdminUser(String userName) {
return sMockInstance.createNewNonAdminUser(userName);
}
@@ -164,7 +164,7 @@
}
@Implementation
- public void setUserRestriction(UserInfo userInfo, String restriction, boolean enable) {
+ protected void setUserRestriction(UserInfo userInfo, String restriction, boolean enable) {
Map<String, Boolean> permissionsMap = sUserRestrictionMap.getOrDefault(userInfo.id,
new HashMap<>());
permissionsMap.put(restriction, enable);
@@ -172,7 +172,7 @@
}
@Implementation
- public boolean hasUserRestriction(String restriction, UserInfo userInfo) {
+ protected boolean hasUserRestriction(String restriction, UserInfo userInfo) {
// False by default, if nothing was added to our map,
if (!sUserRestrictionMap.containsKey(userInfo.id)) {
return false;
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowConnectivityManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowConnectivityManager.java
index a6d1102..5c41365 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowConnectivityManager.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowConnectivityManager.java
@@ -31,7 +31,7 @@
import java.util.HashMap;
import java.util.Map;
-@Implements(value = ConnectivityManager.class, inheritImplementationMethods = true)
+@Implements(ConnectivityManager.class)
public class ShadowConnectivityManager extends org.robolectric.shadows.ShadowConnectivityManager {
private static int sResetCalledCount = 0;
@@ -64,7 +64,7 @@
}
@Implementation
- public NetworkCapabilities getNetworkCapabilities(Network network) {
+ protected NetworkCapabilities getNetworkCapabilities(Network network) {
return mCapabilitiesMap.get(network);
}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowContentResolver.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowContentResolver.java
index e9359ec..e899705 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowContentResolver.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowContentResolver.java
@@ -23,10 +23,7 @@
import android.content.SyncInfo;
import android.content.SyncStatusInfo;
import android.content.SyncStatusObserver;
-import android.database.Cursor;
-import android.net.Uri;
import android.os.Bundle;
-import android.os.CancellationSignal;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
@@ -58,13 +55,6 @@
private static SyncStatusObserver sStatusObserver;
@Implementation
- public final Cursor query(Uri uri, String[] projection, Bundle queryArgs,
- CancellationSignal cancellationSignal) {
- return query(uri, projection, /* selection= */ null, /* selectionArgs= */
- null, /* sortOrder= */ null, cancellationSignal);
- }
-
- @Implementation
protected static SyncAdapterType[] getSyncAdapterTypesAsUser(int userId) {
return sSyncAdapterTypes;
}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowDevicePolicyManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowDevicePolicyManager.java
index 0e4f28c..5a6e713 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowDevicePolicyManager.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowDevicePolicyManager.java
@@ -22,25 +22,32 @@
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
import java.util.List;
import java.util.Set;
-@Implements(value = DevicePolicyManager.class, inheritImplementationMethods = true)
+@Implements(value = DevicePolicyManager.class)
public class ShadowDevicePolicyManager extends org.robolectric.shadows.ShadowDevicePolicyManager {
@Nullable
- private List<String> mPermittedInputMethods;
+ private static List<String> sPermittedInputMethods;
+
private Set<String> mActiveAdminsPackages = new ArraySet<>();
private boolean mIsInstallInQueue;
- @Implementation
- @Nullable
- public List<String> getPermittedInputMethodsForCurrentUser() {
- return mPermittedInputMethods;
+ @Resetter
+ public static void reset() {
+ sPermittedInputMethods = null;
}
- public void setPermittedInputMethodsForCurrentUser(@Nullable List<String> inputMethods) {
- mPermittedInputMethods = inputMethods;
+ @Implementation
+ @Nullable
+ protected List<String> getPermittedInputMethodsForCurrentUser() {
+ return sPermittedInputMethods;
+ }
+
+ public static void setPermittedInputMethodsForCurrentUser(@Nullable List<String> inputMethods) {
+ sPermittedInputMethods = inputMethods;
}
@Implementation
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowEuiccManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowEuiccManager.java
deleted file mode 100644
index f4f581f..0000000
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowEuiccManager.java
+++ /dev/null
@@ -1,43 +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.car.settings.testutils;
-
-import android.telephony.euicc.EuiccManager;
-
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-
-@Implements(EuiccManager.class)
-public class ShadowEuiccManager {
-
- private boolean mIsEnabled;
-
- @Implementation
- public void __constructor__() {
- // Robolectric instantiates unknown services using the no-arg constructor. Create a shadow
- // so it doesn't complain about Stub!
- }
-
- @Implementation
- protected boolean isEnabled() {
- return mIsEnabled;
- }
-
- public void setIsEnabled(boolean isEnabled) {
- mIsEnabled = isEnabled;
- }
-}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowInputMethodManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowInputMethodManager.java
index f6ccbc0..6edf719 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowInputMethodManager.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowInputMethodManager.java
@@ -28,25 +28,50 @@
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Implements(value = InputMethodManager.class)
public class ShadowInputMethodManager extends org.robolectric.shadows.ShadowInputMethodManager {
- private List<InputMethodInfo> mInputMethodList;
- private Map<String, InputMethodInfo> mInputMethodMap;
- private List<InputMethodSubtype> mInputMethodSubtypes;
+ private static List<InputMethodSubtype> sInputMethodSubtypes = new ArrayList<>();
+ private static List<InputMethodInfo> sInputMethodList = new ArrayList<>();
+ private static Map<String, InputMethodInfo> sInputMethodMap = new HashMap<>();
- public void setEnabledInputMethodList(@Nullable List<InputMethodInfo> inputMethodInfos) {
- String concatenatedInputMethodIds = createInputMethodIdString(inputMethodInfos.stream().map(
- imi -> imi.getId()).collect(Collectors.toList()).toArray(
- new String[inputMethodInfos.size()]));
+ @Resetter
+ public static void reset() {
+ sInputMethodSubtypes.clear();
+ sInputMethodList.clear();
+ sInputMethodMap.clear();
+ org.robolectric.shadows.ShadowInputMethodManager.reset();
+ }
+
+ public static void setEnabledInputMethodSubtypeList(List<InputMethodSubtype> list) {
+ sInputMethodSubtypes = list;
+ }
+
+ @Implementation
+ protected List<InputMethodSubtype> getEnabledInputMethodSubtypeList(InputMethodInfo imi,
+ boolean allowsImplicitlySelectedSubtypes) {
+ return sInputMethodSubtypes;
+ }
+
+ public static void setEnabledInputMethodList(@Nullable List<InputMethodInfo> list) {
+ if (list == null || list.size() == 0) {
+ Settings.Secure.putString(RuntimeEnvironment.application.getContentResolver(),
+ Settings.Secure.ENABLED_INPUT_METHODS, "");
+ return;
+ }
+
+ String concatenatedInputMethodIds = createInputMethodIdString(list.stream().map(
+ imi -> imi.getId()).collect(Collectors.toList()).toArray(new String[list.size()]));
Settings.Secure.putString(RuntimeEnvironment.application.getContentResolver(),
Settings.Secure.ENABLED_INPUT_METHODS, concatenatedInputMethodIds);
- addInputMethodInfosToMap(inputMethodInfos);
+ addInputMethodInfosToMap(list);
}
@Implementation
@@ -62,24 +87,14 @@
InputMethodUtil.sInputMethodSplitter.setString(inputMethodIdString);
while (InputMethodUtil.sInputMethodSplitter.hasNext()) {
- enabledInputMethodList.add(mInputMethodMap.get(InputMethodUtil.sInputMethodSplitter
+ enabledInputMethodList.add(sInputMethodMap.get(InputMethodUtil.sInputMethodSplitter
.next()));
}
return enabledInputMethodList;
}
- public void setEnabledInputMethodSubtypeList(List<InputMethodSubtype> list) {
- mInputMethodSubtypes = list;
- }
-
- @Implementation
- protected List<InputMethodSubtype> getEnabledInputMethodSubtypeList(InputMethodInfo imi,
- boolean allowsImplicitlySelectedSubtypes) {
- return mInputMethodSubtypes;
- }
-
public void setInputMethodList(List<InputMethodInfo> inputMethodInfos) {
- mInputMethodList = inputMethodInfos;
+ sInputMethodList = inputMethodInfos;
if (inputMethodInfos == null) {
return;
}
@@ -89,7 +104,7 @@
@Implementation
protected List<InputMethodInfo> getInputMethodList() {
- return mInputMethodList;
+ return sInputMethodList;
}
private static String createInputMethodIdString(String... ids) {
@@ -109,15 +124,15 @@
return builder.toString();
}
- private void addInputMethodInfosToMap(List<InputMethodInfo> inputMethodInfos) {
- if (mInputMethodMap == null || mInputMethodMap.size() == 0) {
- mInputMethodMap = inputMethodInfos.stream().collect(Collectors.toMap(
+ private static void addInputMethodInfosToMap(List<InputMethodInfo> inputMethodInfos) {
+ if (sInputMethodMap == null || sInputMethodMap.size() == 0) {
+ sInputMethodMap = inputMethodInfos.stream().collect(Collectors.toMap(
InputMethodInfo::getId, imi -> imi));
return;
}
inputMethodInfos.forEach(imi -> {
- mInputMethodMap.put(imi.getId(), imi);
+ sInputMethodMap.put(imi.getId(), imi);
});
}
}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowLockPatternUtils.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowLockPatternUtils.java
index 8f819c3..68731ec 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowLockPatternUtils.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowLockPatternUtils.java
@@ -34,21 +34,22 @@
@Implements(LockPatternUtils.class)
public class ShadowLockPatternUtils {
- private static LockPatternUtils sInstance;
+ public static final int NO_USER = -1;
+
private static int sPasswordQuality = DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
private static byte[] sSavedPassword;
private static List<LockPatternView.Cell> sSavedPattern;
+ private static byte[] sClearLockCredential;
+ private static int sClearLockUser = NO_USER;
- public static void setInstance(LockPatternUtils lockPatternUtils) {
- sInstance = lockPatternUtils;
- }
@Resetter
public static void reset() {
- sInstance = null;
sPasswordQuality = DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
sSavedPassword = null;
sSavedPattern = null;
+ sClearLockCredential = null;
+ sClearLockUser = NO_USER;
}
/**
@@ -67,6 +68,21 @@
}
/**
+ * Returns the saved credential passed in to clear the lock, null if it has not been cleared.
+ */
+ public static byte[] getClearLockCredential() {
+ return sClearLockCredential;
+ }
+
+ /**
+ * Returns the user passed in to clear the lock, {@link #NO_USER} if it has not been cleared.
+ */
+ public static int getClearLockUser() {
+ return sClearLockUser;
+ }
+
+
+ /**
* Returns the pattern saved by a call to {@link LockPatternUtils#saveLockPattern}.
*/
public static List<LockPatternView.Cell> getSavedPattern() {
@@ -75,11 +91,12 @@
@Implementation
protected void clearLock(byte[] savedCredential, int userHandle) {
- sInstance.clearLock(savedCredential, userHandle);
+ sClearLockCredential = savedCredential;
+ sClearLockUser = userHandle;
}
@Implementation
- public int getKeyguardStoredPasswordQuality(int userHandle) {
+ protected int getKeyguardStoredPasswordQuality(int userHandle) {
return sPasswordQuality;
}
@@ -90,7 +107,8 @@
}
@Implementation
- public void saveLockPattern(List<LockPatternView.Cell> pattern, int userId) {
+ public void saveLockPattern(List<LockPatternView.Cell> pattern, byte[] savedPassword,
+ int userId, boolean allowUntrustedChanges) {
sSavedPattern = new ArrayList<>(pattern);
}
}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowOemLockManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowOemLockManager.java
deleted file mode 100644
index 44264d2..0000000
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowOemLockManager.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.testutils;
-
-import android.service.oemlock.OemLockManager;
-
-
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-
-@Implements(OemLockManager.class)
-public class ShadowOemLockManager {
-
- private boolean mIsOemUnlockAllowed;
-
- @Implementation
- protected boolean isOemUnlockAllowed() {
- return mIsOemUnlockAllowed;
- }
-
- public void setIsOemUnlockAllowed(boolean isOemUnlockAllowed) {
- mIsOemUnlockAllowed = isOemUnlockAllowed;
- }
-}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowPermissionControllerManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowPermissionControllerManager.java
new file mode 100644
index 0000000..e3f0a95
--- /dev/null
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowPermissionControllerManager.java
@@ -0,0 +1,54 @@
+/*
+ * 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.car.settings.testutils;
+
+import android.annotation.NonNull;
+import android.content.Context;
+import android.os.Handler;
+import android.permission.PermissionControllerManager;
+
+import org.robolectric.annotation.Implementation;
+import org.robolectric.annotation.Implements;
+
+import java.util.List;
+
+/**
+ * A RuntimePermissionPresenter that changes nothing and <u>never returns callbacks</u>.
+ */
+@Implements(PermissionControllerManager.class)
+public class ShadowPermissionControllerManager {
+ @Implementation
+ protected void __constructor__(Context context, @NonNull Handler handler) {
+ // no nothing, everything is shadowed
+ }
+
+ @Implementation
+ protected void getAppPermissions(String packageName,
+ PermissionControllerManager.OnGetAppPermissionResultCallback callback, Handler handler) {
+ }
+
+ @Implementation
+ protected void revokeRuntimePermission(String packageName, String permissionName) {
+ }
+
+ @Implementation
+ protected void countPermissionApps(List<String> permissionNames, boolean countOnlyGranted,
+ boolean countSystem,
+ PermissionControllerManager.OnCountPermissionAppsResultCallback callback,
+ Handler handler) {
+ }
+}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowPersistentDataBlockManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowPersistentDataBlockManager.java
deleted file mode 100644
index ebe257b..0000000
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowPersistentDataBlockManager.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.testutils;
-
-import android.service.persistentdata.PersistentDataBlockManager;
-
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-
-@Implements(PersistentDataBlockManager.class)
-public class ShadowPersistentDataBlockManager {
-
- private int mWipeCalledCount;
-
- @Implementation
- protected void wipe() {
- mWipeCalledCount++;
- }
-
- public int getWipeCalledCount() {
- return mWipeCalledCount;
- }
-}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowPowerManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowPowerManager.java
deleted file mode 100644
index 9433b6e..0000000
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowPowerManager.java
+++ /dev/null
@@ -1,48 +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.car.settings.testutils;
-
-import android.os.PowerManager;
-
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-import org.robolectric.annotation.Resetter;
-
-@Implements(PowerManager.class)
-public class ShadowPowerManager {
-
- private static PowerManager sInstance;
-
- public static void setInstance(PowerManager powerManager) {
- sInstance = powerManager;
- }
-
- @Resetter
- public static void reset() {
- sInstance = null;
- }
-
- @Implementation
- protected int getMinimumScreenBrightnessSetting() {
- return sInstance.getMinimumScreenBrightnessSetting();
- }
-
- @Implementation
- protected int getMaximumScreenBrightnessSetting() {
- return sInstance.getMaximumScreenBrightnessSetting();
- }
-}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowRestrictedLockUtils.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowRestrictedLockUtilsInternal.java
similarity index 92%
rename from tests/robotests/src/com/android/car/settings/testutils/ShadowRestrictedLockUtils.java
rename to tests/robotests/src/com/android/car/settings/testutils/ShadowRestrictedLockUtilsInternal.java
index 7dfe324..5bde1bf 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowRestrictedLockUtils.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowRestrictedLockUtilsInternal.java
@@ -19,13 +19,14 @@
import android.content.Context;
import com.android.settingslib.RestrictedLockUtils;
+import com.android.settingslib.RestrictedLockUtilsInternal;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.annotation.Resetter;
-@Implements(RestrictedLockUtils.class)
-public class ShadowRestrictedLockUtils {
+@Implements(RestrictedLockUtilsInternal.class)
+public class ShadowRestrictedLockUtilsInternal {
private static RestrictedLockUtils.EnforcedAdmin sEnforcedAdmin;
private static boolean sHasBaseUserRestriction;
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowSecureSettings.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowSecureSettings.java
index cb2ea6c..56e07ee 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowSecureSettings.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowSecureSettings.java
@@ -19,95 +19,65 @@
import android.content.ContentResolver;
import android.provider.Settings;
-import com.google.common.collect.HashBasedTable;
-import com.google.common.collect.Table;
-
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
-import org.robolectric.annotation.Resetter;
-
-import java.util.Map;
-import java.util.WeakHashMap;
+import org.robolectric.shadow.api.Shadow;
+import org.robolectric.shadows.ShadowSettings;
+import org.robolectric.util.ReflectionHelpers;
@Implements(Settings.Secure.class)
-public class ShadowSecureSettings {
-
- private static final Map<ContentResolver, Table<Integer, String, Object>> sUserDataMap =
- new WeakHashMap<>();
+public class ShadowSecureSettings extends ShadowSettings.ShadowSecure {
@Implementation
- protected static int getInt(ContentResolver cr, String name, int def) {
- return getIntForUser(cr, name, def, cr.getUserId());
+ protected static int getInt(ContentResolver resolver, String name) {
+ return Shadow.directlyOn(
+ Settings.Secure.class,
+ "getInt",
+ ReflectionHelpers.ClassParameter.from(ContentResolver.class, resolver),
+ ReflectionHelpers.ClassParameter.from(String.class, name));
+ }
+
+ @Implementation
+ protected static int getInt(ContentResolver resolver, String name, int def) {
+ return Shadow.directlyOn(
+ Settings.Secure.class,
+ "getInt",
+ ReflectionHelpers.ClassParameter.from(ContentResolver.class, resolver),
+ ReflectionHelpers.ClassParameter.from(String.class, name),
+ ReflectionHelpers.ClassParameter.from(int.class, def));
}
@Implementation
protected static int getIntForUser(ContentResolver resolver, String name, int def,
int userHandle) {
- final Table<Integer, String, Object> userTable = getUserTable(resolver);
- synchronized (userTable) {
- final Object object = userTable.get(userHandle, name);
- return object instanceof Integer ? (Integer) object : def;
- }
+ return Shadow.directlyOn(
+ Settings.Secure.class,
+ "getIntForUser",
+ ReflectionHelpers.ClassParameter.from(ContentResolver.class, resolver),
+ ReflectionHelpers.ClassParameter.from(String.class, name),
+ ReflectionHelpers.ClassParameter.from(int.class, def),
+ ReflectionHelpers.ClassParameter.from(int.class, userHandle));
+ }
+
+ @Implementation
+ protected static boolean putInt(ContentResolver resolver, String name, int value) {
+ return Shadow.directlyOn(
+ Settings.Secure.class,
+ "putInt",
+ ReflectionHelpers.ClassParameter.from(ContentResolver.class, resolver),
+ ReflectionHelpers.ClassParameter.from(String.class, name),
+ ReflectionHelpers.ClassParameter.from(int.class, value));
}
@Implementation
protected static boolean putIntForUser(ContentResolver resolver, String name, int value,
int userHandle) {
- final Table<Integer, String, Object> userTable = getUserTable(resolver);
- synchronized (userTable) {
- userTable.put(userHandle, name, value);
- return true;
- }
- }
-
- @Implementation
- protected static String getString(ContentResolver resolver, String name) {
- return getStringForUser(resolver, name, resolver.getUserId());
- }
-
- @Implementation
- protected static String getStringForUser(ContentResolver resolver, String name,
- int userHandle) {
- final Table<Integer, String, Object> userTable = getUserTable(resolver);
- synchronized (userTable) {
- final Object object = userTable.get(userHandle, name);
- return object instanceof String ? (String) object : null;
- }
- }
-
- @Implementation
- protected static boolean putString(ContentResolver resolver, String name, String value) {
- return putStringForUser(resolver, name, value, resolver.getUserId());
- }
-
- @Implementation
- protected static boolean putStringForUser(ContentResolver resolver, String name, String value,
- int userHandle) {
- final Table<Integer, String, Object> userTable = getUserTable(resolver);
- synchronized (userTable) {
- userTable.put(userHandle, name, value);
- return true;
- }
- }
-
- /**
- * Clears the UserDataMap for Robotests.
- */
- @Resetter
- public static void reset() {
- synchronized (sUserDataMap) {
- sUserDataMap.clear();
- }
- }
-
- private static Table<Integer, String, Object> getUserTable(ContentResolver contentResolver) {
- synchronized (sUserDataMap) {
- Table<Integer, String, Object> table = sUserDataMap.get(contentResolver);
- if (table == null) {
- table = HashBasedTable.create();
- sUserDataMap.put(contentResolver, table);
- }
- return table;
- }
+ return Shadow.directlyOn(
+ Settings.Secure.class,
+ "putIntForUser",
+ ReflectionHelpers.ClassParameter.from(ContentResolver.class, resolver),
+ ReflectionHelpers.ClassParameter.from(String.class, name),
+ ReflectionHelpers.ClassParameter.from(int.class, value),
+ ReflectionHelpers.ClassParameter.from(int.class, userHandle));
}
}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowStorageManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowStorageManager.java
deleted file mode 100644
index 0fc2bb4..0000000
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowStorageManager.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.car.settings.testutils;
-
-import android.os.storage.StorageManager;
-import android.os.storage.VolumeInfo;
-import android.util.ArrayMap;
-
-import org.robolectric.annotation.Implementation;
-import org.robolectric.annotation.Implements;
-
-import java.util.List;
-import java.util.Map;
-
-@Implements(StorageManager.class)
-public class ShadowStorageManager {
-
- private List<VolumeInfo> mVolumes;
- private Map<VolumeInfo, String> mBestVolumeDescriptions = new ArrayMap<>();
-
- public void setVolumes(List<VolumeInfo> volumes) {
- mVolumes = volumes;
- }
-
- @Implementation
- protected List<VolumeInfo> getVolumes() {
- return mVolumes;
- }
-
- public void setBestVolumeDescription(VolumeInfo volume, String description) {
- mBestVolumeDescriptions.put(volume, description);
- }
-
- @Implementation
- protected String getBestVolumeDescription(VolumeInfo volume) {
- return mBestVolumeDescriptions.get(volume);
- }
-}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowSubscriptionManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowSubscriptionManager.java
index 98fd592..af06db3 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowSubscriptionManager.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowSubscriptionManager.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2018 The Android Open Source Project
+ * Copyright (C) 2019 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,41 +16,31 @@
package com.android.car.settings.testutils;
-import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
-
-import android.annotation.NonNull;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
+import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
import android.telephony.SubscriptionPlan;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
+import org.robolectric.annotation.Resetter;
+import java.util.ArrayList;
import java.util.List;
@Implements(SubscriptionManager.class)
-public class ShadowSubscriptionManager {
+public class ShadowSubscriptionManager extends org.robolectric.shadows.ShadowSubscriptionManager {
- private static int sDefaultDataSubscriptionId = INVALID_SUBSCRIPTION_ID;
- private static int sDefaultVoiceSubscriptionId = INVALID_SUBSCRIPTION_ID;
- private static int sDefaultSmsSubscriptionId = INVALID_SUBSCRIPTION_ID;
- private static int sDefaultSubscriptionId = INVALID_SUBSCRIPTION_ID;
private static SubscriptionInfo sDefaultDataSubscriptionInfo = null;
- private List<SubscriptionInfo> mSubscriptionInfoList;
private List<SubscriptionPlan> mSubscriptionPlanList;
+ private List<SubscriptionInfo> mSelectableSubscriptionInfoList;
+ private List<OnSubscriptionsChangedListener> mOnSubscriptionsChangedListeners =
+ new ArrayList<>();
+ private int mCurrentActiveSubscriptionId;
@Implementation
- public List<SubscriptionInfo> getActiveSubscriptionInfoList() {
- return mSubscriptionInfoList;
- }
-
- public void setActiveSubscriptionInfoList(List<SubscriptionInfo> subscriptionInfoList) {
- mSubscriptionInfoList = subscriptionInfoList;
- }
-
- @Implementation
- protected @NonNull List<SubscriptionPlan> getSubscriptionPlans(int subId) {
+ protected List<SubscriptionPlan> getSubscriptionPlans(int subId) {
return mSubscriptionPlanList;
}
@@ -59,46 +49,7 @@
}
@Implementation
- public static int getDefaultDataSubscriptionId() {
- return sDefaultDataSubscriptionId;
- }
-
- @Implementation
- public static void setDefaultDataSubId(int subId) {
- sDefaultDataSubscriptionId = subId;
- }
-
- @Implementation
- public static int getDefaultVoiceSubscriptionId() {
- return sDefaultVoiceSubscriptionId;
- }
-
- @Implementation
- public static void setDefaultVoiceSubId(int subId) {
- sDefaultVoiceSubscriptionId = subId;
- }
-
- @Implementation
- public static int getDefaultSmsSubscriptionId() {
- return sDefaultSmsSubscriptionId;
- }
-
- @Implementation
- public static void setDefaultSmsSubId(int subId) {
- sDefaultSmsSubscriptionId = subId;
- }
-
- @Implementation
- public static int getDefaultSubscriptionId() {
- return sDefaultSubscriptionId;
- }
-
- public static void setDefaultSubscriptionId(int subId) {
- sDefaultSubscriptionId = subId;
- }
-
- @Implementation
- public SubscriptionInfo getDefaultDataSubscriptionInfo() {
+ protected SubscriptionInfo getDefaultDataSubscriptionInfo() {
return sDefaultDataSubscriptionInfo;
}
@@ -106,12 +57,44 @@
sDefaultDataSubscriptionInfo = subscriptionInfo;
}
- /** Resets this shadow to its initial state for static values. */
+ @Implementation
+ protected List<SubscriptionInfo> getSelectableSubscriptionInfoList() {
+ return mSelectableSubscriptionInfoList;
+ }
+
+ public void setSelectableSubscriptionInfoList(List<SubscriptionInfo> infos) {
+ mSelectableSubscriptionInfoList = infos;
+ }
+
+ @Implementation
+ protected void addOnSubscriptionsChangedListener(OnSubscriptionsChangedListener listener) {
+ super.addOnSubscriptionsChangedListener(listener);
+ mOnSubscriptionsChangedListeners.add(listener);
+ }
+
+ @Implementation
+ protected void removeOnSubscriptionsChangedListener(OnSubscriptionsChangedListener listener) {
+ super.removeOnSubscriptionsChangedListener(listener);
+ mOnSubscriptionsChangedListeners.remove(listener);
+ }
+
+ public List<OnSubscriptionsChangedListener> getOnSubscriptionChangedListeners() {
+ return mOnSubscriptionsChangedListeners;
+
+ }
+
+ @Implementation
+ protected boolean isActiveSubscriptionId(int subscriptionId) {
+ return mCurrentActiveSubscriptionId == subscriptionId;
+ }
+
+ public void setCurrentActiveSubscriptionId(int subscriptionId) {
+ mCurrentActiveSubscriptionId = subscriptionId;
+ }
+
+ @Resetter
public static void reset() {
- sDefaultDataSubscriptionId = INVALID_SUBSCRIPTION_ID;
- sDefaultVoiceSubscriptionId = INVALID_SUBSCRIPTION_ID;
- sDefaultSmsSubscriptionId = INVALID_SUBSCRIPTION_ID;
- sDefaultSubscriptionId = INVALID_SUBSCRIPTION_ID;
+ org.robolectric.shadows.ShadowSubscriptionManager.reset();
sDefaultDataSubscriptionInfo = null;
}
}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowTelephonyManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowTelephonyManager.java
index 4c96d06..9c464f7 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowTelephonyManager.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowTelephonyManager.java
@@ -31,13 +31,15 @@
import java.util.List;
import java.util.Map;
-@Implements(value = TelephonyManager.class, inheritImplementationMethods = true)
+@Implements(TelephonyManager.class)
public class ShadowTelephonyManager extends org.robolectric.shadows.ShadowTelephonyManager {
public static final String SUBSCRIBER_ID = "test_id";
private static Map<Integer, Integer> sSubIdsWithResetCalledCount = new HashMap<>();
+ private static int sSimCount = 1;
private final Map<PhoneStateListener, Integer> mPhoneStateRegistrations = new HashMap<>();
private boolean mIsDataEnabled = false;
+ private boolean mIsRoamingEnabled = false;
public static boolean verifyFactoryResetCalled(int subId, int numTimes) {
if (!sSubIdsWithResetCalledCount.containsKey(subId)) return false;
@@ -45,7 +47,7 @@
}
@Implementation
- public void listen(PhoneStateListener listener, int flags) {
+ protected void listen(PhoneStateListener listener, int flags) {
super.listen(listener, flags);
if (flags == LISTEN_NONE) {
@@ -66,12 +68,12 @@
}
@Implementation
- public void setDataEnabled(boolean enable) {
+ protected void setDataEnabled(boolean enable) {
mIsDataEnabled = enable;
}
@Implementation
- public boolean isDataEnabled() {
+ protected boolean isDataEnabled() {
return mIsDataEnabled;
}
@@ -86,8 +88,28 @@
return subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID ? null : SUBSCRIBER_ID;
}
+ @Implementation
+ protected int getSimCount() {
+ return sSimCount;
+ }
+
+ public static void setSimCount(int simCount) {
+ sSimCount = simCount;
+ }
+
+ @Implementation
+ protected void setDataRoamingEnabled(boolean isEnabled) {
+ mIsRoamingEnabled = isEnabled;
+ }
+
+ @Implementation
+ protected boolean isDataRoamingEnabled() {
+ return mIsRoamingEnabled;
+ }
+
@Resetter
public static void reset() {
sSubIdsWithResetCalledCount.clear();
+ sSimCount = 1;
}
}
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowUserManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowUserManager.java
index eef412d..d08f2c9 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowUserManager.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowUserManager.java
@@ -54,7 +54,6 @@
}
@Implementation
- @Override
protected List<UserInfo> getProfiles(int userHandle) {
if (mProfiles.containsKey(userHandle)) {
return new ArrayList<>(mProfiles.get(userHandle));
diff --git a/tests/robotests/src/com/android/car/settings/testutils/ShadowWifiManager.java b/tests/robotests/src/com/android/car/settings/testutils/ShadowWifiManager.java
index 77a8703..2b5d46f 100644
--- a/tests/robotests/src/com/android/car/settings/testutils/ShadowWifiManager.java
+++ b/tests/robotests/src/com/android/car/settings/testutils/ShadowWifiManager.java
@@ -27,7 +27,7 @@
import java.util.LinkedHashMap;
import java.util.Map;
-@Implements(value = WifiManager.class, inheritImplementationMethods = true)
+@Implements(WifiManager.class)
public class ShadowWifiManager extends org.robolectric.shadows.ShadowWifiManager {
private static int sResetCalledCount = 0;
@@ -38,7 +38,7 @@
@Implementation
@Override
- public int addNetwork(WifiConfiguration config) {
+ protected int addNetwork(WifiConfiguration config) {
int networkId = mNetworkIdToConfiguredNetworks.size();
config.networkId = -1;
mNetworkIdToConfiguredNetworks.put(networkId, makeCopy(config, networkId));
diff --git a/tests/robotests/src/com/android/car/settings/tts/TtsPlaybackSettingsManagerTest.java b/tests/robotests/src/com/android/car/settings/tts/TtsPlaybackSettingsManagerTest.java
index 4f22600..3df09dd 100644
--- a/tests/robotests/src/com/android/car/settings/tts/TtsPlaybackSettingsManagerTest.java
+++ b/tests/robotests/src/com/android/car/settings/tts/TtsPlaybackSettingsManagerTest.java
@@ -80,8 +80,8 @@
public void tearDown() {
ShadowTextToSpeech.reset();
ShadowTtsEngines.reset();
- ShadowSecureSettings.reset();
ShadowAlertDialog.reset();
+ ShadowSecureSettings.reset();
}
@Test
diff --git a/tests/robotests/src/com/android/car/settings/wifi/ButtonPasswordEditTextPreferenceTest.java b/tests/robotests/src/com/android/car/settings/wifi/ButtonPasswordEditTextPreferenceTest.java
index 4ed3a57..198a4cb 100644
--- a/tests/robotests/src/com/android/car/settings/wifi/ButtonPasswordEditTextPreferenceTest.java
+++ b/tests/robotests/src/com/android/car/settings/wifi/ButtonPasswordEditTextPreferenceTest.java
@@ -20,6 +20,8 @@
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
+import android.content.Context;
+import android.view.ContextThemeWrapper;
import android.view.View;
import androidx.preference.PreferenceViewHolder;
@@ -40,7 +42,9 @@
@Before
public void setUp() {
- View rootView = View.inflate(RuntimeEnvironment.application, R.layout.two_action_preference,
+ Context context = RuntimeEnvironment.application;
+ Context themedContext = new ContextThemeWrapper(context, R.style.CarSettingTheme);
+ View rootView = View.inflate(themedContext, R.layout.two_action_preference, /* root= */
null);
mViewHolder = PreferenceViewHolder.createInstanceForTests(rootView);
mButtonPreference = new ButtonPasswordEditTextPreference(RuntimeEnvironment.application);