summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2017-09-08 18:43:24 +0200
committerWolfgang Wiedmeyer <wolfgit@wiedmeyer.de>2017-09-08 18:43:24 +0200
commitbf8633348ba7ff5b191812b1bbb7e4edf94869a0 (patch)
tree175c10b57e9787916f22ff87e6f4cfffb3d4f506
parent9971175ea84fdbaf2d4671e30460792385b28859 (diff)
parent032b20262e5982251ec6d7391bd7ef7e72eac8e3 (diff)
downloadframeworks_base-bf8633348ba7ff5b191812b1bbb7e4edf94869a0.tar.gz
frameworks_base-bf8633348ba7ff5b191812b1bbb7e4edf94869a0.tar.bz2
frameworks_base-bf8633348ba7ff5b191812b1bbb7e4edf94869a0.zip
Merge remote-tracking branch 'lineageos/cm-13.0' into replicant-6.0replicant-6.0-0002
-rw-r--r--core/java/android/view/accessibility/AccessibilityNodeInfo.java23
-rw-r--r--core/jni/android_database_CursorWindow.cpp8
-rw-r--r--core/res/res/values-ast-rES/strings.xml7
-rw-r--r--core/res/res/values-eo/strings.xml40
-rw-r--r--core/res/res/values-es-rUS/cm_strings.xml4
-rw-r--r--core/res/res/values-ru/cm_strings.xml2
-rw-r--r--core/res/res/values-sr/cm_strings.xml202
-rw-r--r--core/res/res/values-tr/cm_strings.xml28
-rw-r--r--core/res/res/values-zh-rTW/cm_strings.xml2
-rw-r--r--include/androidfw/CursorWindow.h17
-rw-r--r--libs/androidfw/CursorWindow.cpp5
-rw-r--r--media/java/android/media/MediaHTTPConnection.java11
-rw-r--r--packages/Keyguard/res/values-ast-rES/strings.xml2
-rw-r--r--packages/Keyguard/res/values-es-rUS/cm_strings.xml6
-rw-r--r--packages/SettingsLib/res/values-ast-rES/strings.xml1
-rw-r--r--packages/SettingsLib/res/values-eo/strings.xml13
-rw-r--r--packages/SettingsLib/res/values-sr/cm_strings.xml4
-rw-r--r--packages/SystemUI/res/values-ast-rES/strings.xml11
-rw-r--r--packages/SystemUI/res/values-es-rUS/cm_strings.xml14
-rw-r--r--packages/SystemUI/res/values-ja/cm_strings.xml10
-rw-r--r--packages/SystemUI/res/values-nb/cm_strings.xml8
-rw-r--r--packages/SystemUI/res/values-nl/cm_strings.xml2
-rw-r--r--packages/SystemUI/res/values-sr/cm_strings.xml4
-rw-r--r--packages/SystemUI/res/values-tr/cm_strings.xml24
-rw-r--r--packages/SystemUI/res/values-zh-rCN/cm_strings.xml2
-rw-r--r--services/core/java/com/android/server/AppOpsService.java11
-rwxr-xr-xservices/core/java/com/android/server/am/ActivityManagerService.java2
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java16
28 files changed, 301 insertions, 178 deletions
diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
index 86ed499cabc..b7094912569 100644
--- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java
+++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
@@ -2670,16 +2670,19 @@ public class AccessibilityNodeInfo implements Parcelable {
if (mActions != null && !mActions.isEmpty()) {
final int actionCount = mActions.size();
- parcel.writeInt(actionCount);
+ int nonLegacyActionCount = 0;
int defaultLegacyStandardActions = 0;
for (int i = 0; i < actionCount; i++) {
AccessibilityAction action = mActions.get(i);
if (isDefaultLegacyStandardAction(action)) {
defaultLegacyStandardActions |= action.getId();
+ } else {
+ nonLegacyActionCount++;
}
}
parcel.writeInt(defaultLegacyStandardActions);
+ parcel.writeInt(nonLegacyActionCount);
for (int i = 0; i < actionCount; i++) {
AccessibilityAction action = mActions.get(i);
@@ -2690,6 +2693,7 @@ public class AccessibilityNodeInfo implements Parcelable {
}
} else {
parcel.writeInt(0);
+ parcel.writeInt(0);
}
parcel.writeInt(mMaxTextLength);
@@ -2853,16 +2857,13 @@ public class AccessibilityNodeInfo implements Parcelable {
mBoundsInScreen.left = parcel.readInt();
mBoundsInScreen.right = parcel.readInt();
- final int actionCount = parcel.readInt();
- if (actionCount > 0) {
- final int legacyStandardActions = parcel.readInt();
- addLegacyStandardActions(legacyStandardActions);
- final int nonLegacyActionCount = actionCount - Integer.bitCount(legacyStandardActions);
- for (int i = 0; i < nonLegacyActionCount; i++) {
- final AccessibilityAction action = new AccessibilityAction(
- parcel.readInt(), parcel.readCharSequence());
- addActionUnchecked(action);
- }
+ final int legacyStandardActions = parcel.readInt();
+ addLegacyStandardActions(legacyStandardActions);
+ final int nonLegacyActionCount = parcel.readInt();
+ for (int i = 0; i < nonLegacyActionCount; i++) {
+ final AccessibilityAction action = new AccessibilityAction(
+ parcel.readInt(), parcel.readCharSequence());
+ addActionUnchecked(action);
}
mMaxTextLength = parcel.readInt();
diff --git a/core/jni/android_database_CursorWindow.cpp b/core/jni/android_database_CursorWindow.cpp
index 580ac02789c..a86e57dc024 100644
--- a/core/jni/android_database_CursorWindow.cpp
+++ b/core/jni/android_database_CursorWindow.cpp
@@ -182,6 +182,10 @@ static jbyteArray nativeGetBlob(JNIEnv* env, jclass clazz, jlong windowPtr,
if (type == CursorWindow::FIELD_TYPE_BLOB || type == CursorWindow::FIELD_TYPE_STRING) {
size_t size;
const void* value = window->getFieldSlotValueBlob(fieldSlot, &size);
+ if (!value) {
+ throw_sqlite3_exception(env, "Native could not read blob slot");
+ return NULL;
+ }
jbyteArray byteArray = env->NewByteArray(size);
if (!byteArray) {
env->ExceptionClear();
@@ -217,6 +221,10 @@ static jstring nativeGetString(JNIEnv* env, jclass clazz, jlong windowPtr,
if (type == CursorWindow::FIELD_TYPE_STRING) {
size_t sizeIncludingNull;
const char* value = window->getFieldSlotValueString(fieldSlot, &sizeIncludingNull);
+ if (!value) {
+ throw_sqlite3_exception(env, "Native could not read string slot");
+ return NULL;
+ }
if (sizeIncludingNull <= 1) {
return gEmptyString;
}
diff --git a/core/res/res/values-ast-rES/strings.xml b/core/res/res/values-ast-rES/strings.xml
index 0ef8300ca00..a558b1c31ca 100644
--- a/core/res/res/values-ast-rES/strings.xml
+++ b/core/res/res/values-ast-rES/strings.xml
@@ -310,6 +310,7 @@
for most appropriate textual indicator of "more than X".
[CHAR LIMIT=4] -->
<!-- Displayed to the user to tell them that they have started up the phone in "safe mode" -->
+ <string name="safeMode">Mou seguru</string>
<!-- Label for the Android system components when they are shown to the user. -->
<!-- Label for the user owner in the intent forwarding app. [CHAR LIMIT=15] -->
<!-- Label for a corporate profile in the intent forwarding app. [CHAR LIMIT=15] -->
@@ -512,6 +513,7 @@
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<!-- Message shown during fingerprint acquisision when the fingerprint cannot be recognized -->
<!-- Message shown during fingerprint acquisision when the fingerprint cannot be recognized -->
+ <string name="fingerprint_acquired_insufficient">Nun pudo procesase la buelga. Volvi tentalo.</string>
<!-- Message shown during fingerprint acquisision when the fingerprint sensor needs cleaning -->
<!-- Message shown during fingerprint acquisision when the user removes their finger from the sensor too quickly -->
<!-- Message shown during fingerprint acquisision when the user moves their finger too slowly -->
@@ -794,8 +796,10 @@
locked -->
<!-- When the user enters a wrong sim pin too many times, it becomes
PUK locked (Pin Unlock Kode) -->
+ <string name="lockscreen_sim_puk_locked_message">Tarxeta SIM bloquiada col PUK.</string>
<!-- Shown in the lock screen when the SIM has become PUK locked and the user must call customer care to unlock it. -->
<!-- Shown in the lock screen to tell the user that their SIM is locked and they must unlock it. -->
+ <string name="lockscreen_sim_locked_message">Tarxeta SIM bloquiada.</string>
<!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
whether it is valid, and to unlock the sim if it is valid. we display a
progress dialog in the meantime. this is the emssage. -->
@@ -1503,6 +1507,7 @@
<!-- This string array should be overridden by the manufacture to present a list of carrier-id,locale. The wifi regulatory domain is extracted from the locale information. This is used at startup to set system defaults by checking the system property ro.carrier for the carrier-id and searching through this array -->
<!-- An Array of [[Carrier-ID] -->
<!-- [default-locale]] -->
+ <string name="grant_credentials_permission_message_header">Una o más aplicaciones de darréu soliciten permisu p\'acceder a la to cuenta, agora y nel futuru.</string>
<string name="grant_credentials_permission_message_footer">¿Quies permitir esta solicitú?</string>
<string name="grant_permissions_header_text">Solicitú d\'accesu</string>
<string name="allow">Permitir</string>
@@ -1572,8 +1577,10 @@
<!-- ActionBar action to find the previous match in the page [CHAR LIMIT=24] -->
<!-- Network positioning notification ticker. The name of the user (e.g. John Doe) who sent
the request is shown as a dynamic string. -->
+ <string name="gpsNotifTicker">Solicitú d\'allugamientu de <xliff:g id="name">%s</xliff:g></string>
<!-- Network positioning notification and verification title to inform the user about
an incoming location request. -->
+ <string name="gpsNotifTitle">Solicitú d\'allugamientu</string>
<!-- Network positioning notification message. The name of the user (e.g. John Doe) and
service (SUPL-service) who sent the request is shown as dynamic strings.
Translation should not be longer than master text. -->
diff --git a/core/res/res/values-eo/strings.xml b/core/res/res/values-eo/strings.xml
index e4a6a8c5035..5b0d7b404e8 100644
--- a/core/res/res/values-eo/strings.xml
+++ b/core/res/res/values-eo/strings.xml
@@ -853,48 +853,87 @@
<!-- Format string for displaying a name and address summary. $1 is the Full Name, $2 is autofill_address_summary_separator, $3 is the Address
e.g. (John Smith)(, )(123 Main Street) -->
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_attention_ignored_re">attention|attn</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_region_ignored_re">province|region|other<!-- es -->|provincia<!-- pt-BR, pt-PT -->|bairro|suburb</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_company_re">company|business|organization|organisation|department<!-- de-DE -->|firma|firmenname<!-- es -->|empresa<!-- fr-FR -->|societe|société<!-- it-IT -->|ragione.?sociale<!-- ja-JP -->|会社<!-- ru -->|название.?компании<!-- zh-CN -->|单位|公司</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_address_line_1_re">address.?line|address1|addr1|street<!-- de-DE -->|strasse|straße|hausnummer|housenumber<!-- en-GB -->|house.?name<!-- es -->|direccion|dirección<!-- fr-FR -->|adresse<!-- it-IT -->|indirizzo<!-- ja-JP -->|住所1<!-- pt-BR, pt-PT -->|morada|endereço<!-- ru -->|Адрес<!-- zh-CN -->|地址</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_address_line_1_label_re">address<!-- fr-FR -->|adresse<!-- it-IT -->|indirizzo<!-- ja-JP -->|住所<!-- zh-CN -->|地址</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_address_line_2_re">address.?line2|address2|addr2|street|suite|unit<!-- de-DE -->|adresszusatz|ergänzende.?angaben<!-- es -->|direccion2|colonia|adicional<!-- fr-FR -->|addresssuppl|complementnom|appartement<!-- it-IT -->|indirizzo2<!-- ja-JP -->|住所2</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_address_line_3_re">address.?line3|address3|addr3|street|line3<!-- es -->|municipio<!-- fr-FR -->|batiment|residence<!-- it-IT -->|indirizzo3</string>
<!-- Do not translate. Regex used by AutoFill. -->
<string name="autofill_country_re">country|location<!-- ja-JP -->|国<!-- zh-CN -->|国家</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_zip_code_re">zip|postal|post code|pcode|^1z$<!-- de-DE -->|postleitzahl<!-- es -->|cp<!-- fr-FR -->|cdp<!-- it-IT -->|cap<!-- ja-JP -->|郵便番号<!-- pt-BR, pt-PT -->|codigo|codpos|cep<!-- ru -->|Почтовый.?Индекс<!--zh-CN -->|邮政编码|邮编<!-- zh-TW -->|郵遞區號</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_zip_4_re">zip|^-$|post2<!-- pt-BR, pt-PT -->|codpos2</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_city_re">city|town<!-- de-DE -->|ort|stadt<!-- en-AU -->|suburb<!-- es -->|ciudad|provincia|localidad|poblacion<!-- fr-FR -->|ville|commune<!-- it-IT -->|localita<!-- ja-JP -->|市区町村<!-- pt-BR, pt-PT -->|cidade<!-- ru -->|Город<!-- zh-CN -->|市<!-- zh-TW -->|分區</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_state_re">state|county|region|province<!-- de-DE -->|land<!-- en-UK -->|county|principality<!-- ja-JP -->|都道府県<!-- pt-BR, pt-PT -->|estado|provincia<!-- ru -->|область<!-- zh-CN -->|省<!-- zh-TW -->|地區</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_address_type_same_as_re">same as</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_address_type_use_my_re">use my</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_billing_designator_re">bill</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_shipping_designator_re">ship</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_email_re">e.?mail<!-- ja-JP -->|メールアドレス<!-- ru -->|Электронной.?Почты<!-- zh-CN -->|邮件|邮箱<!-- zh-TW -->|電郵地址</string>
<!-- Do not translate. Regex used by AutoFill. -->
<string name="autofill_username_re">user.?name|user.?id<!-- de-DE -->|vollständiger.?name<!-- zh-CN -->|用户名</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_name_re">^name|full.?name|your.?name|customer.?name|firstandlastname<!-- es -->|nombre.*y.*apellidos<!-- fr-FR -->|^nom<!-- ja-JP -->|お名前|氏名<!-- pt-BR, pt-PT -->|^nome<!-- zh-CN -->|姓名</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_name_specific_re">^name<!-- fr-FR -->|^nom<!-- pt-BR, pt-PT -->|^nome</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_first_name_re">irst.*name|initials|fname|first$<!-- de-DE -->|vorname<!-- es -->|nombre<!-- fr-FR -->|forename|prénom|prenom<!-- ja-JP -->|名<!-- pt-BR, pt-PT -->|nome<!-- ru -->|Имя</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_middle_initial_re">middle.*initial|m\\.i\\.|mi$</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_middle_name_re">middle.*name|mname|middle$<!-- es -->|apellido.?materno|lastlastname</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_last_name_re">last.*name|lname|surname|last$<!-- de-DE -->|nachname<!-- es -->|apellidos<!-- fr-FR -->|famille|^nom<!-- it-IT -->|cognome<!-- ja-JP -->|姓<!-- pt-BR, pt-PT -->|morada|apelidos|surename|sobrenome<!-- ru -->|Фамилия</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_phone_re">phone<!-- de-DE -->|telefonnummer<!-- es -->|telefono|teléfono<!-- fr-FR -->|telfixe<!-- ja-JP -->|電話<!-- pt-BR, pt-PT -->|telefone|telemovel<!-- ru -->|телефон<!-- zh-CN -->|电话</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_area_code_re">area.*code|acode|area</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_phone_prefix_re">prefix<!-- fr-FR -->|preselection<!-- pt-BR, pt-PT -->|ddd</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_phone_suffix_re">suffix</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_phone_extension_re">ext<!-- pt-BR, pt-PT -->|ramal</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_name_on_card_re">card.?holder|name.?on.?card|ccname|owner<!-- de-DE -->|karteninhaber<!-- es -->|nombre.*tarjeta<!-- fr-FR -->|nom.*carte<!-- it-IT -->|nome.*cart<!-- ja-JP -->|名前<!-- ru -->|Имя.*карты<!-- zh-CN -->|信用卡开户名|开户名|持卡人姓名<!-- zh-TW -->|持卡人姓名</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_name_on_card_contextual_re">name</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_card_cvc_re">verification|card identification|cvn|security code|cvv code|cvc</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_card_number_re">number|card.?#|card.?no|ccnum<!-- de-DE -->|nummer<!-- es -->|credito|numero|número<!-- fr-FR -->|numéro<!-- ja-JP -->|カード番号<!-- ru -->|Номер.*карты<!-- zh-CN -->|信用卡号|信用卡号码<!-- zh-TW -->|信用卡卡號</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_expiration_month_re">expir|exp.*month|exp.*date|ccmonth<!-- de-DE -->|gueltig|gültig|monat<!-- es -->|fecha<!-- fr-FR -->|date.*exp<!-- it-IT -->|scadenza<!-- ja-JP -->|有効期限<!-- pt-BR, pt-PT -->|validade<!-- ru -->|Срок действия карты<!-- zh-CN -->|月</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_expiration_date_re">exp|^/|year<!-- de-DE -->|ablaufdatum|gueltig|gültig|yahr<!-- es -->|fecha<!-- it-IT -->|scadenza<!-- ja-JP -->|有効期限<!-- pt-BR, pt-PT -->|validade<!-- ru -->|Срок действия карты<!-- zh-CN -->|年|有效期</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_card_ignored_re">^card</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_fax_re">fax<!-- fr-FR -->|télécopie|telecopie<!-- ja-JP -->|ファックス<!-- ru -->|факс<!-- zh-CN -->|传真<!-- zh-TW -->|傳真</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_country_code_re">country.*code|ccode|_cc</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_area_code_notext_re">^\\($</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_phone_prefix_separator_re">^-$|^\\)$</string>
<!-- Do not translate. Regex used by AutoFill. -->
+ <string name="autofill_phone_suffix_separator_re">^-$</string>
<!-- Label in a web form for "Province" [CHAR-LIMIT=NONE] -->
<!-- Label in a web form for "Postal code" [CHAR-LIMIT=NONE] -->
<!-- Label in a web form for "State" [CHAR-LIMIT=NONE] -->
@@ -1310,6 +1349,7 @@
the user's notifications. -->
<!-- Label to show for a service that is running because it is providing conditions. -->
<!-- Do Not Translate: Alternate eri.xml -->
+ <string name="alternate_eri_file">/data/eri.xml</string>
<!-- The title of the notification when VPN is active. -->
<!-- The title of the notification when VPN is active with an application name. -->
<!-- The text of the notification when VPN is active. -->
diff --git a/core/res/res/values-es-rUS/cm_strings.xml b/core/res/res/values-es-rUS/cm_strings.xml
index 4c0897e18be..2eada358885 100644
--- a/core/res/res/values-es-rUS/cm_strings.xml
+++ b/core/res/res/values-es-rUS/cm_strings.xml
@@ -109,7 +109,7 @@
<string name="app_ops_delete_contacts">borrar contactos</string>
<string name="app_ops_delete_mms">borrar mensajes MMS</string>
<string name="app_ops_delete_sms">borrar mensajes SMS</string>
- <string name="app_ops_draw_on_top">dibujar ventanas encima</string>
+ <string name="app_ops_draw_on_top">mostrar ventanas encima</string>
<string name="app_ops_get_usage_stats">obtener estadísticas de uso de aplicaciones</string>
<string name="app_ops_keep_device_awake">mantener el dispositivo encendido</string>
<string name="app_ops_make_phone_call">realizar una llamada</string>
@@ -165,7 +165,7 @@
<string name="app_ops_turn_on_screen">encender pantalla</string>
<string name="app_ops_get_accounts">obtener cuentas del dispositivo</string>
<string name="app_ops_wifi_change">cambiar estado del Wi-Fi</string>
- <string name="app_ops_su">obtener acceso administrativo</string>
+ <string name="app_ops_su">obtener acceso de superusuario</string>
<!-- Notify user that they are in Lock-to-app (for devices without navbar) -->
<string name="lock_to_app_toast_no_navbar">Para desanclar esta pantalla, mantén pulsado el botón Atrás.</string>
<!-- Template for showing cellular network operator name while LTE calling is enabled -->
diff --git a/core/res/res/values-ru/cm_strings.xml b/core/res/res/values-ru/cm_strings.xml
index 38f6a599239..83c4be7214c 100644
--- a/core/res/res/values-ru/cm_strings.xml
+++ b/core/res/res/values-ru/cm_strings.xml
@@ -57,7 +57,7 @@
<!-- Button to reboot the phone into download, within the Reboot Options dialog -->
<string name="reboot_download">Режим обновления ПО</string>
<!-- Button to soft reboot the device, within the Reboot Options dialog -->
- <string name="reboot_soft">Перезапуск интерфейса</string>
+ <string name="reboot_soft">Перезапуск оболочки</string>
<!-- Title of dialog to confirm rebooting. -->
<string name="reboot_title">Перезагрузка</string>
<!-- Reboot Confirmation Dialog. When the user chooses to reboot the device, there will
diff --git a/core/res/res/values-sr/cm_strings.xml b/core/res/res/values-sr/cm_strings.xml
index b15b557dba4..e019e0225d0 100644
--- a/core/res/res/values-sr/cm_strings.xml
+++ b/core/res/res/values-sr/cm_strings.xml
@@ -20,158 +20,158 @@
<!-- label for item that screenshots in phone options dialog -->
<string name="global_action_screenshot">Снимак екрана</string>
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permlab_receiveProtectedSms">прими заштићени SMS</string>
+ <string name="permlab_receiveProtectedSms">пријем заштићених SMS порука</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permdesc_receiveProtectedSms">Дозволи да апликације приме долазећи заштићени SMS.</string>
+ <string name="permdesc_receiveProtectedSms">Апликација може да прима долазне заштићене SMS поруке.</string>
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permlab_modifyProtectedSmsList">измените заштићену SMS листу</string>
+ <string name="permlab_modifyProtectedSmsList">мењање списка заштићених SMS порука</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permdesc_modifyProtectedSmsList">Дозвољава апликацији да мења заштићену SMS листу адреса.</string>
+ <string name="permdesc_modifyProtectedSmsList">Апликација може да мења списак адреса заштићених SMS порука.</string>
<!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgrouplab_security">Безбедност</string>
<!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permgroupdesc_security">Дозволе које се односе на безбедносне информације уређаја.</string>
+ <string name="permgroupdesc_security">Дозволе које се односе на информације о безбедности уређаја.</string>
<!-- [CHAR LIMIT=NONE] Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permlab_readPhoneBlacklist">читај црну листу телефона</string>
+ <string name="permlab_readPhoneBlacklist">читање списка блокираних бројева</string>
<!-- [CHAR LIMIT=NONE] Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permdesc_readPhoneBlacklist">Омогућава апликацији да чита информације о телефонским бројевима који су блокирани за долазне позиве или поруке.</string>
+ <string name="permdesc_readPhoneBlacklist">Дозвољава апликацији да чита информације о телефонским бројевима чији су долазни позиви или поруке блокирани.</string>
<!-- [CHAR LIMIT=NONE] Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permlab_changePhoneBlacklist">мењај црну листу телефона</string>
+ <string name="permlab_changePhoneBlacklist">мењање списка блокираних бројева</string>
<!-- [CHAR LIMIT=NONE] Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permdesc_changePhoneBlacklist">Омогућава апликацији да промени бројеве телефона које су блокирани за долазне позиве или поруке.</string>
+ <string name="permdesc_changePhoneBlacklist">Дозвољава апликацији да мења телефонске бројеве чији су долазни позиви или поруке блокирани.</string>
<!-- Title of an application permission, listed so the user can choose whether they want the application to do this. -->
- <string name="permlab_setKeyguardWallpaper">постави позадину закључаног екрана</string>
+ <string name="permlab_setKeyguardWallpaper">постављање позадине закључаног екрана</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permdesc_setKeyguardWallpaper">Омогућава апликацији да промени позадину на закључаном екрану.</string>
+ <string name="permdesc_setKeyguardWallpaper">Дозвољава апликацији да мења позадину закључаног екрана.</string>
<!-- label for item that reboots the phone in phone options dialog -->
- <string name="global_action_reboot">Рестартуј</string>
+ <string name="global_action_reboot">Поново покрени</string>
<!-- label for current user in phone options dialog -->
- <string name="global_action_current_user">Тренутно</string>
+ <string name="global_action_current_user">Тренутни</string>
<!-- Reboot menu -->
<!-- Button to reboot the phone, within the Reboot Options dialog -->
- <string name="reboot_reboot">Рестартуј</string>
+ <string name="reboot_reboot">Поново покрени</string>
<!-- Button to reboot the phone into recovery, within the Reboot Options dialog -->
- <string name="reboot_recovery">Опоравак</string>
+ <string name="reboot_recovery">Режим опоравка</string>
<!-- Button to reboot the phone into bootloader, within the Reboot Options dialog -->
- <string name="reboot_bootloader">Bootloader</string>
+ <string name="reboot_bootloader">Покретач система</string>
<!-- Button to reboot the phone into download, within the Reboot Options dialog -->
- <string name="reboot_download">Преузимање</string>
+ <string name="reboot_download">Режим ажурирања система</string>
<!-- Button to soft reboot the device, within the Reboot Options dialog -->
- <string name="reboot_soft">Рестартуј интерфејс</string>
+ <string name="reboot_soft">Поново покрени интерфејс</string>
<!-- Title of dialog to confirm rebooting. -->
- <string name="reboot_title">Рестартуј</string>
+ <string name="reboot_title">Поново покрени</string>
<!-- Reboot Confirmation Dialog. When the user chooses to reboot the device, there will
be a confirmation dialog. This is the message. -->
- <string name="reboot_confirm" product="tablet">Tаблет ће се рестартовати.</string>
- <string name="reboot_confirm" product="default">Tелефон ће се рестартовати.</string>
+ <string name="reboot_confirm" product="tablet">Таблет ће се поново покренути.</string>
+ <string name="reboot_confirm" product="default">Телефон ће се поново покренути.</string>
<!-- Reboot Progress Dialog. This is shown if the user chooses to reboot the phone. -->
- <string name="reboot_progress">Рестартовање\u2026</string>
+ <string name="reboot_progress">Поново покрећем\u2026</string>
<!-- Long-press back kill application -->
- <string name="app_killed_message">Апликација је затворена</string>
+ <string name="app_killed_message">Апликација је окончана.</string>
<!-- ADB over network notification -->
- <string name="adb_net_active_notification_title">ADB преко мреже омогућен</string>
+ <string name="adb_net_active_notification_title">ADB преко мреже је омогућен</string>
<!-- ADB over USB and network notification -->
- <string name="adb_both_active_notification_title">ADB преко USB &amp; мреже омогућен</string>
+ <string name="adb_both_active_notification_title">ADB преко USB-а и мреже је омогућен</string>
<!-- ADB notification message-->
- <string name="adb_active_generic_notification_message">Додирни да онемогућиш отклањање грешака.</string>
+ <string name="adb_active_generic_notification_message">Додирните да бисте онемогућили отклањање грешака.</string>
<!-- ADB custom tile -->
- <string name="adb_active_custom_tile">ADB - <xliff:g id="adb_type" example="USB">%1$s</xliff:g></string>
- <string name="adb_active_custom_tile_both">USB &amp; мрежа</string>
+ <string name="adb_active_custom_tile">ADB – <xliff:g id="adb_type" example="USB">%1$s</xliff:g></string>
+ <string name="adb_active_custom_tile_both">USB и мрежа</string>
<string name="adb_active_custom_tile_usb">USB</string>
<string name="adb_active_custom_tile_net">Мрежа</string>
<!-- Title of an application permission, listed so the user can choose whether they want the application to do this. -->
<string name="permlab_interceptPackageLaunch">пресретни подизање апликације</string>
<!-- stylus gestures support -->
- <string name="stylus_app_not_installed">%s није инсталирано</string>
+ <string name="stylus_app_not_installed">Апликација %s није инсталирана</string>
<!-- Zen mode buttons -->
<string name="silent_mode_priority">Приоритет</string>
<string name="silent_mode_none">Ниједан</string>
<!-- Wifi Hotspot disabled due to subscription change -->
- <string name="subscription_change_disabled_wifi_ap">Онемогућен Wi-Fi hotspot због промене SIM претплате</string>
+ <string name="subscription_change_disabled_wifi_ap">Wi-Fi хотспот је онемогућен због промене SIM претплате</string>
<!-- WiFi turn off notification action text -->
<string name="notify_turn_wifi_off_title">Искључи Wi-Fi</string>
<!-- Privacy Guard -->
- <string name="permlab_changePrivacyGuardState">омогући или онемогући заштиту приватности</string>
- <string name="permdesc_changePrivacyGuardState">Дозвољава апликацији да промени да ли се друга апликација покреће са заштитом приватности. Када је апликација покренута са заштитом приватности, она неће имати приступ личним подацима, као што су контакти, евиденција позива или поруке.</string>
+ <string name="permlab_changePrivacyGuardState">омогућавање или онемогућавање заштите приватности</string>
+ <string name="permdesc_changePrivacyGuardState">Апликација може да промени стање заштите приватности за друге апликације. Када је апликација покренута под заштитом приватности, она неће имати приступ личним подацима као што су контакти, евиденције позива или поруке.</string>
<string name="privacy_guard_notification">Заштита приватности је активна</string>
- <string name="privacy_guard_notification_detail"><xliff:g id="app">%1$s</xliff:g> неће бити у могућности да приступи личним подацима</string>
+ <string name="privacy_guard_notification_detail"><xliff:g id="app">%1$s</xliff:g> неће моћи да приступи личним подацима</string>
<string name="privacy_guard_dialog_title">Заштита приватности</string>
<string name="privacy_guard_dialog_summary"><xliff:g id="app">%1$s</xliff:g> жели да <xliff:g id="op">%2$s</xliff:g>.</string>
<!-- Text of the checkbox for the permission confirmation dialog to remember the user's choice. [CHAR LIMIT=40] -->
<string name="permission_remember_choice">Запамти мој избор</string>
<!-- App ops requests -->
<string name="app_ops_access_camera">приступ камери</string>
- <string name="app_ops_access_location">приступ твојој локацији</string>
- <string name="app_ops_access_notifications">прочитај твоја обавештења</string>
- <string name="app_ops_activate_vpn">aктивирај VPN</string>
- <string name="app_ops_auto_start">покрени при укључивању</string>
- <string name="app_ops_delete_call_log">избриши свој дневник позива</string>
- <string name="app_ops_delete_contacts">избриши своје контакте</string>
- <string name="app_ops_delete_mms">избриши своје MMS поруке</string>
- <string name="app_ops_delete_sms">избриши своје SMS поруке</string>
- <string name="app_ops_draw_on_top">исцртај windows на врху</string>
- <string name="app_ops_get_usage_stats">добиј статистику коришћења апликација</string>
- <string name="app_ops_keep_device_awake">држи уређај будним</string>
- <string name="app_ops_make_phone_call">обави телефонски позив</string>
- <string name="app_ops_modify_calendar">ажурирај твој календар</string>
- <string name="app_ops_modify_call_log">ажурирај евиденцију позива</string>
- <string name="app_ops_modify_clipboard">модификуј привремену меморију</string>
- <string name="app_ops_modify_contacts">ажурирај твоје контакте</string>
- <string name="app_ops_modify_settings">ажурирај подешавања система</string>
- <string name="app_ops_mute_unmute_microphone">искључи/укључи микрофон</string>
- <string name="app_ops_play_audio">пусти аудио</string>
- <string name="app_ops_post_notification">постави обавештење</string>
- <string name="app_ops_project_media">пројектовање медија</string>
- <string name="app_ops_read_calendar">прочитај твој календар</string>
- <string name="app_ops_read_call_log">прочитај евиденцију позива</string>
- <string name="app_ops_read_clipboard">прочитај привремену меморију</string>
- <string name="app_ops_read_contacts">прочитај твоје контакте</string>
- <string name="app_ops_read_mms">прочитај твоје MMS поруке</string>
- <string name="app_ops_read_sms">прочитај твоје SMS поруке</string>
- <string name="app_ops_receive_sms">прими SMS поруку</string>
- <string name="app_ops_record_audio">сними звук</string>
- <string name="app_ops_send_mms">пошаљи MMS поруку</string>
- <string name="app_ops_send_sms">пошаљи SMS поруку</string>
- <string name="app_ops_start_at_bootup">покрени при укључивању</string>
- <string name="app_ops_toast_window">прикажи искачуће поруке</string>
- <string name="app_ops_toggle_bluetooth">пребаци Bluetooth</string>
- <string name="app_ops_toggle_mobile_data">Укључи/искључи мобилне податке</string>
- <string name="app_ops_toggle_nfc">пребацуј NFC</string>
- <string name="app_ops_toggle_wifi">Wi-FI прекидач</string>
- <string name="app_ops_use_alarm_volume">контрола јачине аларма</string>
- <string name="app_ops_use_audio_focus">контрола аудио фокуса</string>
- <string name="app_ops_use_bluetooth_volume">контрола Bluetooth јачине</string>
- <string name="app_ops_use_master_volume">контрола главне јачине</string>
- <string name="app_ops_use_media_buttons">користи дугмиће за медије</string>
- <string name="app_ops_use_media_volume">контрола јачине за медије</string>
- <string name="app_ops_use_notification_volume">контрола јачине обавештења</string>
- <string name="app_ops_use_ring_volume">контрола јачине звона</string>
- <string name="app_ops_use_vibrate">користи повратне информације</string>
- <string name="app_ops_use_voice_volume">контрола јачине гласовног позива</string>
- <string name="app_ops_write_mms">напиши MMS поруку</string>
- <string name="app_ops_write_sms">напиши SMS поруку</string>
- <string name="app_ops_use_fingerprint">користи отисак прста</string>
- <string name="app_ops_add_voicemail">додај говорну поруку</string>
+ <string name="app_ops_access_location">приступ локацији</string>
+ <string name="app_ops_access_notifications">читање обавештења</string>
+ <string name="app_ops_activate_vpn">активирање VPN-а</string>
+ <string name="app_ops_auto_start">покретање са системом</string>
+ <string name="app_ops_delete_call_log">брисање евиденције позива</string>
+ <string name="app_ops_delete_contacts">брисање контаката</string>
+ <string name="app_ops_delete_mms">брисање MMS порука</string>
+ <string name="app_ops_delete_sms">брисање SMS порука</string>
+ <string name="app_ops_draw_on_top">повлачење прозора на врх</string>
+ <string name="app_ops_get_usage_stats">преузимање статистике о коришћењу апликација</string>
+ <string name="app_ops_keep_device_awake">задржавање ван стања спавања</string>
+ <string name="app_ops_make_phone_call">позивање телефона</string>
+ <string name="app_ops_modify_calendar">мењање календара</string>
+ <string name="app_ops_modify_call_log">мењање евиденције позива</string>
+ <string name="app_ops_modify_clipboard">мењање меморије</string>
+ <string name="app_ops_modify_contacts">мењање контаката</string>
+ <string name="app_ops_modify_settings">мењање подешавања система</string>
+ <string name="app_ops_mute_unmute_microphone">искључивање/укључивање звука микрофона</string>
+ <string name="app_ops_play_audio">пуштање аудио-записа</string>
+ <string name="app_ops_post_notification">постављање обавештења</string>
+ <string name="app_ops_project_media">медије за пројекат</string>
+ <string name="app_ops_read_calendar">читање календара</string>
+ <string name="app_ops_read_call_log">читање евиденције позива</string>
+ <string name="app_ops_read_clipboard">читање меморије</string>
+ <string name="app_ops_read_contacts">читање контаката</string>
+ <string name="app_ops_read_mms">читање MMS порука</string>
+ <string name="app_ops_read_sms">читање SMS порука</string>
+ <string name="app_ops_receive_sms">пријем SMS порука</string>
+ <string name="app_ops_record_audio">снимање аудио-записа</string>
+ <string name="app_ops_send_mms">слање MMS порука</string>
+ <string name="app_ops_send_sms">слање SMS порука</string>
+ <string name="app_ops_start_at_bootup">покретање са системом</string>
+ <string name="app_ops_toast_window">приказивање искачућих порука</string>
+ <string name="app_ops_toggle_bluetooth">укључивање/искључивање Bluetooth-а</string>
+ <string name="app_ops_toggle_mobile_data">укључивање/искључивање мобилних података</string>
+ <string name="app_ops_toggle_nfc">укључивање/искључивање NFC-а</string>
+ <string name="app_ops_toggle_wifi">укључивање/искључивање Wi-Fi-а</string>
+ <string name="app_ops_use_alarm_volume">управљање јачином звука аларма</string>
+ <string name="app_ops_use_audio_focus">управљање аудио-фокусом</string>
+ <string name="app_ops_use_bluetooth_volume">управљање јачином звука Bluetooth-а</string>
+ <string name="app_ops_use_master_volume">управљање главном јачином звука</string>
+ <string name="app_ops_use_media_buttons">коришћење дугмади за медије</string>
+ <string name="app_ops_use_media_volume">управљање јачином звука медија</string>
+ <string name="app_ops_use_notification_volume">управљање јачином звука обавештења</string>
+ <string name="app_ops_use_ring_volume">управљање јачином звука звона</string>
+ <string name="app_ops_use_vibrate">коришћење вибрације</string>
+ <string name="app_ops_use_voice_volume">управљање јачином звука позива</string>
+ <string name="app_ops_write_mms">писање MMS порука</string>
+ <string name="app_ops_write_sms">писање SMS порука</string>
+ <string name="app_ops_use_fingerprint">коришћење отиска прста</string>
+ <string name="app_ops_add_voicemail">додавање говорне поште</string>
<string name="app_ops_read_phone_state">приступ стању телефона</string>
- <string name="app_ops_scan_wifi">Скенирај Wi-Fi мреже</string>
- <string name="app_ops_change_wallpaper">промени тапет</string>
- <string name="app_ops_assist_structure">користи помоћну структуру</string>
- <string name="app_ops_assist_screenshot">направи снимак екрана</string>
- <string name="app_ops_use_body_sensors">користи сензоре уређаја</string>
- <string name="app_ops_read_cell_broadcasts">читај ћелију емитовања</string>
- <string name="app_ops_mock_location">лажирај своју локацију</string>
- <string name="app_ops_read_external_storage">читај спољно складиште</string>
- <string name="app_ops_write_external_storage">пиши на спољно складиште</string>
- <string name="app_ops_turn_on_screen">укључи екран</string>
- <string name="app_ops_get_accounts">добави налог уређаја</string>
- <string name="app_ops_wifi_change">промени Wi-Fi стање</string>
- <string name="app_ops_su">дај root приступ</string>
+ <string name="app_ops_scan_wifi">скенирање Wi-Fi мрежа</string>
+ <string name="app_ops_change_wallpaper">мењање позадине</string>
+ <string name="app_ops_assist_structure">коришћење структуре помоћи</string>
+ <string name="app_ops_assist_screenshot">прављење снимка екрана</string>
+ <string name="app_ops_use_body_sensors">коришћење сензора за тело</string>
+ <string name="app_ops_read_cell_broadcasts">читање порука за мобилне уређаје на локалитету</string>
+ <string name="app_ops_mock_location">лажирање локације</string>
+ <string name="app_ops_read_external_storage">читање екстерног меморијског простора</string>
+ <string name="app_ops_write_external_storage">упис података у екстерни меморијски простор</string>
+ <string name="app_ops_turn_on_screen">укључивање екрана</string>
+ <string name="app_ops_get_accounts">приступ налозима на уређају</string>
+ <string name="app_ops_wifi_change">мењање стања Wi-Fi-а</string>
+ <string name="app_ops_su">приступ правима суперкорисника</string>
<!-- Notify user that they are in Lock-to-app (for devices without navbar) -->
- <string name="lock_to_app_toast_no_navbar">Да искључиш овај екран додирни и држи дугме за назад.</string>
+ <string name="lock_to_app_toast_no_navbar">Да бисте откачили екран, додирните и држите дугме „Назад“.</string>
<!-- Template for showing cellular network operator name while LTE calling is enabled -->
- <string name="tethered_notification_no_device_message">Нема повезаног уређаја</string>
- <string name="tethered_notification_one_device_message"><xliff:g id="count">%1$s</xliff:g> конектован уређај</string>
- <string name="tethered_notification_multi_device_message"><xliff:g id="count">%1$s</xliff:g> конектовани уређаји</string>
+ <string name="tethered_notification_no_device_message">Нема повезаних уређаја</string>
+ <string name="tethered_notification_one_device_message"><xliff:g id="count">%1$s</xliff:g> повезани уређај</string>
+ <string name="tethered_notification_multi_device_message"><xliff:g id="count">%1$s</xliff:g> повезани уређаји</string>
<!-- Keyguard strings -->
<!-- Sequence of characters used to separate carrier message strings in keyguard. Typically just vertical line
with spaces on either side. [CHAR LIMIT=3] -->
diff --git a/core/res/res/values-tr/cm_strings.xml b/core/res/res/values-tr/cm_strings.xml
index 7e315851dda..11ded495f94 100644
--- a/core/res/res/values-tr/cm_strings.xml
+++ b/core/res/res/values-tr/cm_strings.xml
@@ -20,25 +20,25 @@
<!-- label for item that screenshots in phone options dialog -->
<string name="global_action_screenshot">Ekran görüntüsü</string>
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permlab_receiveProtectedSms">korumalı SMS al</string>
+ <string name="permlab_receiveProtectedSms">korunan SMS al</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permdesc_receiveProtectedSms">Uygulamaya korumalı bir SMS alma izni verir.</string>
+ <string name="permdesc_receiveProtectedSms">Uygulamaya korunan bir SMS\'i alma izni verir.</string>
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permlab_modifyProtectedSmsList">korumalı SMS listesini değiştir</string>
+ <string name="permlab_modifyProtectedSmsList">korunan SMS listesini değiştir</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permdesc_modifyProtectedSmsList">Uygulamaya korumalı SMS adres listesini değiştirme izni verir.</string>
+ <string name="permdesc_modifyProtectedSmsList">Uygulamaya korunan SMS adres listesini değiştirme izin verir.</string>
<!-- Title of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permgrouplab_security">Güvenlik</string>
<!-- Description of a category of application permissions, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permgroupdesc_security">Cihaz güvenlik bilgisi ile ilgili izinler.</string>
+ <string name="permgroupdesc_security">Cihaz güvenlik bilgileri ile ilgili izinler.</string>
<!-- [CHAR LIMIT=NONE] Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permlab_readPhoneBlacklist">telefon kara listesini oku</string>
<!-- [CHAR LIMIT=NONE] Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permdesc_readPhoneBlacklist">Bir uygulamanın gelen çağrıları ya da mesajları engellenmiş telefon numaralarını okumasına izin verir.</string>
+ <string name="permdesc_readPhoneBlacklist">Bir uygulamanın gelen aramaları ya da mesajları engellenmiş telefon numaralarını okumasına izin verir.</string>
<!-- [CHAR LIMIT=NONE] Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permlab_changePhoneBlacklist">telefon kara listesini değiştir</string>
<!-- [CHAR LIMIT=NONE] Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permdesc_changePhoneBlacklist">Bir uygulamanın gelen çağrıları ya da mesajları engellenmiş telefon numaralarını değiştirmesine izin verir.</string>
+ <string name="permdesc_changePhoneBlacklist">Bir uygulamanın gelen aramaları ya da mesajları engellenmiş telefon numaralarını değiştirmesine izin verir.</string>
<!-- Title of an application permission, listed so the user can choose whether they want the application to do this. -->
<string name="permlab_setKeyguardWallpaper">tuş kilidi duvar kağıdını ayarla</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
@@ -46,7 +46,7 @@
<!-- label for item that reboots the phone in phone options dialog -->
<string name="global_action_reboot">Yeniden başlat</string>
<!-- label for current user in phone options dialog -->
- <string name="global_action_current_user">Şimdiki</string>
+ <string name="global_action_current_user">Mevcut</string>
<!-- Reboot menu -->
<!-- Button to reboot the phone, within the Reboot Options dialog -->
<string name="reboot_reboot">Yeniden başlat</string>
@@ -59,7 +59,7 @@
<!-- Button to soft reboot the device, within the Reboot Options dialog -->
<string name="reboot_soft">Yazılımsal yeniden başlatma</string>
<!-- Title of dialog to confirm rebooting. -->
- <string name="reboot_title">Yeniden Başlat</string>
+ <string name="reboot_title">Yeniden başlat</string>
<!-- Reboot Confirmation Dialog. When the user chooses to reboot the device, there will
be a confirmation dialog. This is the message. -->
<string name="reboot_confirm" product="tablet">Tabletiniz yeniden başlatılacak.</string>
@@ -103,7 +103,7 @@
<string name="app_ops_access_camera">kameraya eriş</string>
<string name="app_ops_access_location">konuma erişim</string>
<string name="app_ops_access_notifications">bildirimleri oku</string>
- <string name="app_ops_activate_vpn">VPN\'yi etkinleştir</string>
+ <string name="app_ops_activate_vpn">VPN\'i etkinleştir</string>
<string name="app_ops_auto_start">açılışta başla</string>
<string name="app_ops_delete_call_log">arama kaydını sil</string>
<string name="app_ops_delete_contacts">kişileri sil</string>
@@ -165,9 +165,9 @@
<string name="app_ops_turn_on_screen">ekranı aç</string>
<string name="app_ops_get_accounts">cihaz hesaplarını al</string>
<string name="app_ops_wifi_change">Wi-Fi durumunu değiştir</string>
- <string name="app_ops_su">root erişimi al</string>
+ <string name="app_ops_su">kök erişimi al</string>
<!-- Notify user that they are in Lock-to-app (for devices without navbar) -->
- <string name="lock_to_app_toast_no_navbar">Bu ekranı kaldırmak için Geri tuşuna dokunun ve tutun.</string>
+ <string name="lock_to_app_toast_no_navbar">Bu ekranı silmek için Geri tuşuna dokunup basılı tutun.</string>
<!-- Template for showing cellular network operator name while LTE calling is enabled -->
<string name="tethered_notification_no_device_message">Bağlı cihaz yok</string>
<string name="tethered_notification_one_device_message"><xliff:g id="count">%1$s </xliff:g> cihaz bağlı</string>
@@ -179,8 +179,8 @@
<string name="notify_package_component_protected_title">Etkinlik başlatma engellendi</string>
<string name="notify_package_component_protected_text"><xliff:g id="app_name">%1$s</xliff:g> başlatılmadan önce sistem korumaya alındı. Uygulamayı doğrulamak ve başlatmak için dokunun.</string>
<!-- Battery fully charged notification -->
- <string name="notify_battery_fully_charged_title">Batarya tam olarak şarj edildi</string>
- <string name="notify_battery_fully_charged_text">Aygıtınızın pil ömrünü artırmak için şarjdan çıkarın.</string>
+ <string name="notify_battery_fully_charged_title">Pil tamamen şarj edildi</string>
+ <string name="notify_battery_fully_charged_text">Cihazınızın pil ömrünü artırmak için şarjdan çıkarın.</string>
<!-- [CHAR LIMIT=NONE] Title of an application permission, listed so the user can choose
whether they want to allow the application to do this. -->
<string name="permlab_resetBatteryStats">pil istatistiklerini sıfırla</string>
diff --git a/core/res/res/values-zh-rTW/cm_strings.xml b/core/res/res/values-zh-rTW/cm_strings.xml
index b3ab2aabd02..947db8549ad 100644
--- a/core/res/res/values-zh-rTW/cm_strings.xml
+++ b/core/res/res/values-zh-rTW/cm_strings.xml
@@ -146,7 +146,7 @@
<string name="app_ops_use_media_volume">控制媒體音量</string>
<string name="app_ops_use_notification_volume">控制通知音量</string>
<string name="app_ops_use_ring_volume">控制鈴聲音量</string>
- <string name="app_ops_use_vibrate">使用觸覺回饋</string>
+ <string name="app_ops_use_vibrate">使用觸控震動</string>
<string name="app_ops_use_voice_volume">控制語音通話音量</string>
<string name="app_ops_write_mms">撰寫多媒體訊息</string>
<string name="app_ops_write_sms">撰寫簡訊訊息</string>
diff --git a/include/androidfw/CursorWindow.h b/include/androidfw/CursorWindow.h
index 8a2979a3756..2eb349f5716 100644
--- a/include/androidfw/CursorWindow.h
+++ b/include/androidfw/CursorWindow.h
@@ -18,6 +18,7 @@
#define _ANDROID__DATABASE_WINDOW_H
#include <cutils/log.h>
+#include <inttypes.h>
#include <stddef.h>
#include <stdint.h>
@@ -128,12 +129,13 @@ public:
inline const char* getFieldSlotValueString(FieldSlot* fieldSlot,
size_t* outSizeIncludingNull) {
*outSizeIncludingNull = fieldSlot->data.buffer.size;
- return static_cast<char*>(offsetToPtr(fieldSlot->data.buffer.offset));
+ return static_cast<char*>(offsetToPtr(
+ fieldSlot->data.buffer.offset, fieldSlot->data.buffer.size));
}
inline const void* getFieldSlotValueBlob(FieldSlot* fieldSlot, size_t* outSize) {
*outSize = fieldSlot->data.buffer.size;
- return offsetToPtr(fieldSlot->data.buffer.offset);
+ return offsetToPtr(fieldSlot->data.buffer.offset, fieldSlot->data.buffer.size);
}
private:
@@ -166,7 +168,16 @@ private:
bool mReadOnly;
Header* mHeader;
- inline void* offsetToPtr(uint32_t offset) {
+ inline void* offsetToPtr(uint32_t offset, uint32_t bufferSize = 0) {
+ if (offset >= mSize) {
+ ALOGE("Offset %" PRIu32 " out of bounds, max value %zu", offset, mSize);
+ return NULL;
+ }
+ if (offset + bufferSize > mSize) {
+ ALOGE("End offset %" PRIu32 " out of bounds, max value %zu",
+ offset + bufferSize, mSize);
+ return NULL;
+ }
return static_cast<uint8_t*>(mData) + offset;
}
diff --git a/libs/androidfw/CursorWindow.cpp b/libs/androidfw/CursorWindow.cpp
index 166863c0d91..5694115f61a 100644
--- a/libs/androidfw/CursorWindow.cpp
+++ b/libs/androidfw/CursorWindow.cpp
@@ -98,9 +98,14 @@ status_t CursorWindow::createFromParcel(Parcel* parcel, CursorWindow** outCursor
if (dupAshmemFd < 0) {
result = -errno;
} else {
+ // the size of the ashmem descriptor can be modified between ashmem_get_size_region
+ // call and mmap, so we'll check again immediately after memory is mapped
void* data = ::mmap(NULL, size, PROT_READ, MAP_SHARED, dupAshmemFd, 0);
if (data == MAP_FAILED) {
result = -errno;
+ } else if (ashmem_get_size_region(dupAshmemFd) != size) {
+ ::munmap(data, size);
+ result = BAD_VALUE;
} else {
CursorWindow* window = new CursorWindow(name, dupAshmemFd,
data, size, true /*readOnly*/);
diff --git a/media/java/android/media/MediaHTTPConnection.java b/media/java/android/media/MediaHTTPConnection.java
index 59eaeef1e29..dbd5b41ae0e 100644
--- a/media/java/android/media/MediaHTTPConnection.java
+++ b/media/java/android/media/MediaHTTPConnection.java
@@ -157,7 +157,13 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
private void teardownConnection() {
if (mConnection != null) {
- mInputStream = null;
+ if (mInputStream != null) {
+ try {
+ mInputStream.close();
+ } catch (IOException e) {
+ }
+ mInputStream = null;
+ }
mConnection.disconnect();
mConnection = null;
@@ -346,8 +352,7 @@ public class MediaHTTPConnection extends IMediaHTTPConnection.Stub {
mCurrentOffset = offset;
} catch (IOException e) {
mTotalSize = -1;
- mInputStream = null;
- mConnection = null;
+ teardownConnection();
mCurrentOffset = -1;
throw e;
diff --git a/packages/Keyguard/res/values-ast-rES/strings.xml b/packages/Keyguard/res/values-ast-rES/strings.xml
index d76eedf03b7..d93722ff6ad 100644
--- a/packages/Keyguard/res/values-ast-rES/strings.xml
+++ b/packages/Keyguard/res/values-ast-rES/strings.xml
@@ -54,7 +54,9 @@
<!-- Shown when SIM card is permanently disabled. -->
<!-- Shown to inform the user to SIM card is permanently disabled. -->
<!-- Shown to tell the user that their SIM is locked and they must unlock it. -->
+ <string name="keyguard_sim_locked_message">Tarxeta SIM bloquiada.</string>
<!-- When the user enters a wrong sim pin too many times, it becomes PUK locked (Pin Unlock Kode) -->
+ <string name="keyguard_sim_puk_locked_message">Tarxeta SIM bloquiada col PUK.</string>
<!-- For the unlock screen, When the user enters a sim unlock code, it takes a little while to check
whether it is valid, and to unlock the sim if it is valid. we display a
progress dialog in the meantime. this is the emssage. -->
diff --git a/packages/Keyguard/res/values-es-rUS/cm_strings.xml b/packages/Keyguard/res/values-es-rUS/cm_strings.xml
index 078fc604a0d..1f11c8ff3cd 100644
--- a/packages/Keyguard/res/values-es-rUS/cm_strings.xml
+++ b/packages/Keyguard/res/values-es-rUS/cm_strings.xml
@@ -19,11 +19,11 @@
<!-- When the user inserts a sim card with some personalization enabled -->
<string name="keyguard_perso_locked_message">La tarjeta SIM tiene un bloqueo personalizado</string>
<!-- Shown in the lock screen when there is SIM card IO error. -->
- <string name="lockscreen_sim_error_message_short">Tarjeta no válida.</string>
+ <string name="lockscreen_sim_error_message_short">Tarjeta inválida.</string>
<!-- Instructions telling the user remaining times when enter SIM PIN view. -->
<plurals name="kg_password_default_pin_message">
- <item quantity="one">Introduce el código PIN. Tienes <xliff:g id="number">%d</xliff:g> intento restante antes de tener que contactar a tu operador para desbloquear el dispositivo.</item>
- <item quantity="other">Introduce el código PIN. Tienes <xliff:g id="number">%d</xliff:g> intentos restantes antes de tener que contactar a tu operador para desbloquear el dispositivo.</item>
+ <item quantity="one">Ingresa el código PIN. Tienes <xliff:g id="number">%d</xliff:g> intento restante antes de tener que contactar a tu operador para desbloquear el dispositivo.</item>
+ <item quantity="other">Ingresa el código PIN. Tienes <xliff:g id="number">%d</xliff:g> intentos restantes antes de tener que contactar a tu operador para desbloquear el dispositivo.</item>
</plurals>
<!-- Shown in the KeyguardSimPinView when entry length is too short. -->
<string name="kg_invalid_sim_length">Error: La entrada es más corta que la longitud mínima</string>
diff --git a/packages/SettingsLib/res/values-ast-rES/strings.xml b/packages/SettingsLib/res/values-ast-rES/strings.xml
index 08667604899..2aa779cf965 100644
--- a/packages/SettingsLib/res/values-ast-rES/strings.xml
+++ b/packages/SettingsLib/res/values-ast-rES/strings.xml
@@ -47,6 +47,7 @@
<!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
<string name="wifi_security_eap">802.1x EAP</string>
<!-- Do not translate. Concise terminology for Passpoint network -->
+ <string name="wifi_security_passpoint">Passpoint</string>
<!-- Summary for the remembered network. -->
<!-- Status for networks disabled for unknown reason -->
<!-- Status for networked disabled from a DNS or DHCP failure -->
diff --git a/packages/SettingsLib/res/values-eo/strings.xml b/packages/SettingsLib/res/values-eo/strings.xml
index 8af20e31648..714d8b02a54 100644
--- a/packages/SettingsLib/res/values-eo/strings.xml
+++ b/packages/SettingsLib/res/values-eo/strings.xml
@@ -21,19 +21,32 @@
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Toast message when Wi-Fi cannot scan for networks -->
<!-- Do not translate. Concise terminology for wifi with WEP security -->
+ <string name="wifi_security_short_wep">WEP</string>
<!-- Do not translate. Concise terminology for wifi with WPA security -->
+ <string name="wifi_security_short_wpa">WPA</string>
<!-- Do not translate. Concise terminology for wifi with WPA2 security -->
+ <string name="wifi_security_short_wpa2">WPA2</string>
<!-- Do not translate. Concise terminology for wifi with both WPA/WPA2 security -->
+ <string name="wifi_security_short_wpa_wpa2">WPA/WPA2</string>
<!-- Do not translate. Concise terminology for wifi with unknown PSK type -->
+ <string name="wifi_security_short_psk_generic">@string/wifi_security_short_wpa_wpa2</string>
<!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <string name="wifi_security_short_eap">802.1x</string>
<!-- Used in Wi-Fi settings dialogs when Wi-Fi does not have any security. -->
<!-- Do not translate. Terminology for wifi with WEP security -->
+ <string name="wifi_security_wep">WEP</string>
<!-- Do not translate. Terminology for wifi with WPA security -->
+ <string name="wifi_security_wpa">WPA PSK</string>
<!-- Do not translate. Terminology for wifi with WPA2 security -->
+ <string name="wifi_security_wpa2">WPA2 PSK</string>
<!-- Do not translate. Terminology for wifi with both WPA/WPA2 security, or unknown -->
+ <string name="wifi_security_wpa_wpa2">WPA/WPA2 PSK</string>
<!-- Do not translate. Terminology for wifi with unknown PSK type -->
+ <string name="wifi_security_psk_generic">@string/wifi_security_wpa_wpa2</string>
<!-- Do not translate. Concise terminology for wifi with 802.1x EAP security -->
+ <string name="wifi_security_eap">802.1x EAP</string>
<!-- Do not translate. Concise terminology for Passpoint network -->
+ <string name="wifi_security_passpoint">Passpoint</string>
<!-- Summary for the remembered network. -->
<string name="wifi_remembered">Konservita</string>
<!-- Status for networks disabled for unknown reason -->
diff --git a/packages/SettingsLib/res/values-sr/cm_strings.xml b/packages/SettingsLib/res/values-sr/cm_strings.xml
index 8078426880b..7c0f361bc58 100644
--- a/packages/SettingsLib/res/values-sr/cm_strings.xml
+++ b/packages/SettingsLib/res/values-sr/cm_strings.xml
@@ -22,6 +22,6 @@
<string name="profile_applist_title">Апликације</string>
<string name="picker_activities">Активности</string>
<string name="select_custom_app_title">Изабери прилагођену апликацију</string>
- <string name="select_custom_activity_title">Изабери прилагођену активност</string>
- <string name="lockscreen_targets_message">Пречица закључаног екрана</string>
+ <string name="select_custom_activity_title">Избор прилагођене активности</string>
+ <string name="lockscreen_targets_message">Пречице закључаног екрана</string>
</resources>
diff --git a/packages/SystemUI/res/values-ast-rES/strings.xml b/packages/SystemUI/res/values-ast-rES/strings.xml
index f9bf2c7192f..ae352e81095 100644
--- a/packages/SystemUI/res/values-ast-rES/strings.xml
+++ b/packages/SystemUI/res/values-ast-rES/strings.xml
@@ -299,6 +299,7 @@
[CHAR LIMIT=20] -->
<!-- Notification text: when GPS is getting a fix [CHAR LIMIT=50] -->
<!-- Notification text: when GPS has found a fix [CHAR LIMIT=50] -->
+ <string name="gps_notification_found_text">Allugamientu afitáu pol GPS</string>
<!-- Accessibility text describing the presence of active location requests by one or more apps -->
<!-- Content description of the clear button in the notification panel for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_clear_all">Llimpiar tolos avisos.</string>
@@ -309,8 +310,11 @@
for its own notifications [CHAR LIMIT=NONE] -->
<string name="status_bar_notification_app_settings_title">Axustes de <xliff:g id="app_name" example="Calendar">%s</xliff:g></string>
<!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is on. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_off">La pantalla voltiará automáticamente.</string>
<!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_on_landscape">La pantalla ta bloquiada en mou horizontal.</string>
<!-- Description of the button in the phone-style notification panel that controls auto-rotation, when auto-rotation is off. [CHAR LIMIT=NONE] -->
+ <string name="accessibility_rotation_lock_on_portrait">La pantalla ta bloquiada en mou vertical.</string>
<!-- Announcement made when the screen is rotating automatically again (not shown on the screen). [CHAR LIMIT=NONE] -->
<!-- Announcement made when the rotation lock state changes to landscape only (not shown on the screen). [CHAR LIMIT=NONE] -->
<!-- Announcement made when the rotation lock state changes to portrait only (not shown on the screen). [CHAR LIMIT=NONE] -->
@@ -378,6 +382,7 @@
<!-- QuickSettings: Brightness dialog auto brightness button [CHAR LIMIT=NONE] -->
<string name="quick_settings_brightness_dialog_auto_brightness_label">AUTO</string>
<!-- QuickSettings: Label for the toggle that controls whether display inversion is enabled. [CHAR LIMIT=NONE] -->
+ <string name="quick_settings_inversion_label">Invertir colores</string>
<!-- QuickSettings: Label for the toggle that controls whether display color correction is enabled. [CHAR LIMIT=NONE] -->
<string name="quick_settings_color_space_label">Mou de correición de color</string>
<!-- QuickSettings: Control panel: Label for button that navigates to settings. [CHAR LIMIT=NONE] -->
@@ -454,8 +459,11 @@
<!-- Interruption level: Priority. [CHAR LIMIT=40] -->
<!-- Interruption level: Alarms only. [CHAR LIMIT=40] -->
<!-- Interruption level: None. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <string name="interruption_level_none_twoline">Silenciu\ntotal</string>
<!-- Interruption level: Priority. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <string name="interruption_level_priority_twoline">Namái\nprioridá</string>
<!-- Interruption level: Alarms only. Optimized for narrow two-line display. [CHAR LIMIT=40] -->
+ <string name="interruption_level_alarms_twoline">Namái\nalarmes</string>
<!-- Indication on the keyguard that is shown when the device is charging. [CHAR LIMIT=40]-->
<!-- Indication on the keyguard that is shown when the device is charging rapidly. Should match keyguard_plugged_in_charging_fast [CHAR LIMIT=40]-->
<!-- Indication on the keyguard that is shown when the device is charging slowly. Should match keyguard_plugged_in_charging_slowly [CHAR LIMIT=40]-->
@@ -597,6 +605,9 @@
<!-- Name of a quick settings tile controlled by broadcast -->
<string name="broadcast_tile">Caxella de tresmisión</string>
<!-- For preview release. DO NOT TRANSLATE -->
+ <string name="regrettable_lack_of_easter_egg">
+ ¯\\_(ツ)_/¯
+ </string>
<!-- Warning text when an alarm might be silenced by Do Not Disturb [CHAR LIMIT=NONE] -->
<!-- Warning text when an alarm might be silenced by Do Not Disturb due to a time-based condition [CHAR LIMIT=NONE] -->
<!-- Alarm template for near alarms [CHAR LIMIT=25] -->
diff --git a/packages/SystemUI/res/values-es-rUS/cm_strings.xml b/packages/SystemUI/res/values-es-rUS/cm_strings.xml
index a3adbbe9a61..d482343d975 100644
--- a/packages/SystemUI/res/values-es-rUS/cm_strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/cm_strings.xml
@@ -65,8 +65,8 @@
<string name="accessibility_quick_settings_profiles_changed">Perfil cambiado a <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
<string name="quick_settings_compass_init">Inicializando\u2026</string>
<!-- Lights settings, LED notification -->
- <string name="led_notification_title">Ajustes de luz de notificación</string>
- <string name="led_notification_text">Luz LED activada por ajustes</string>
+ <string name="led_notification_title">Configuración de la luz de notificación</string>
+ <string name="led_notification_text">Luz LED activada por los ajustes</string>
<string name="qs_tile_edit_header_instruction">Mantén pulsado los mosaicos para reorganizarlos</string>
<string name="quick_settings_edit_label">Editar mosaicos</string>
<string name="quick_settings_cannot_delete_edit_tile">No se puede borrar el mosaico Editar</string>
@@ -173,13 +173,13 @@
<string name="quick_settings_dynamic_tile_detail_title">Control dinámico</string>
<string name="dynamic_qs_tile_next_alarm_label">Próxima alarma</string>
<string name="dynamic_qs_tile_ime_selector_label">Selector IME</string>
- <string name="dynamic_qs_tile_su_label">Acceso administrativo</string>
+ <string name="dynamic_qs_tile_su_label">Acceso de superusuario</string>
<string name="dynamic_qs_tile_themes_label">Temas</string>
<string name="quick_settings_title_advanced_location">Ubicación por triangulación</string>
<!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_quick_settings_location_battery_saving">Informes de ubicación: modo de ahorro de batería.</string>
<!-- Content description of the location tile in quick settings when on, sensors only mode (not shown on the screen). [CHAR LIMIT=NONE] -->
- <string name="accessibility_quick_settings_location_gps_only">Informes de ubicación: modo de solo sensores.</string>
+ <string name="accessibility_quick_settings_location_gps_only">Informes de ubicación: modo sólo dispositivo.</string>
<!-- Content description of the location tile in quick settings when on, high accuracy mode (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_quick_settings_location_high_accuracy">Informes de ubicación: modo de alta precisión.</string>
<!-- QuickSettings: Location detail panel title [CHAR LIMIT=NONE] -->
@@ -187,13 +187,13 @@
<!-- QuickSettings: Location (On, low-power) [CHAR LIMIT=NONE] -->
<string name="quick_settings_location_battery_saving_label">Ahorro de batería</string>
<!-- QuickSettings: Location (On, gps-only) [CHAR LIMIT=NONE] -->
- <string name="quick_settings_location_gps_only_label">Solo dispositivo</string>
+ <string name="quick_settings_location_gps_only_label">Sólo dispositivo</string>
<!-- QuickSettings: Location (On, high-accuracy) [CHAR LIMIT=NONE] -->
<string name="quick_settings_location_high_accuracy_label">Alta precisión</string>
<!-- Announcement made when the location tile changes to battery saving (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_quick_settings_location_changed_battery_saving">Informes de ubicación cambiados a modo de ahorro de batería.</string>
<!-- Announcement made when the location tile changes to sensors only (not shown on the screen). [CHAR LIMIT=NONE] -->
- <string name="accessibility_quick_settings_location_changed_gps_only">Informes de ubicación cambiados a modo solo dispositivo.</string>
+ <string name="accessibility_quick_settings_location_changed_gps_only">Informes de ubicación cambiados a modo sólo dispositivo.</string>
<!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_quick_settings_location_changed_high_accuracy">Informes de ubicación cambiados a modo de gran precisión.</string>
<string name="quick_settings_tiles_category_system">Mosaicos del sistema</string>
@@ -212,7 +212,7 @@
<!-- CellularTile data sim not configured state string -->
<string name="data_sim_not_configured">Sin datos SIM</string>
<!-- Content description of the dock battery level icon for accessibility (not shown on the screen). [CHAR LIMIT=NONE] -->
- <string name="accessibility_dock_battery_level">Batería del dock al <xliff:g id="number">%d</xliff:g> %.</string>
+ <string name="accessibility_dock_battery_level">Batería de la base al <xliff:g id="number">%d</xliff:g> por ciento.</string>
<!-- Play queue -->
<string name="play_queue_extention">Mostrar la cola de reproducción</string>
<!-- Path data for portrait battery -->
diff --git a/packages/SystemUI/res/values-ja/cm_strings.xml b/packages/SystemUI/res/values-ja/cm_strings.xml
index 8f28f9380f1..61f834589a7 100644
--- a/packages/SystemUI/res/values-ja/cm_strings.xml
+++ b/packages/SystemUI/res/values-ja/cm_strings.xml
@@ -104,7 +104,7 @@
<string name="quick_settings_usb_tether_label">USBテザリング</string>
<string name="quick_settings_screen_timeout_detail_title">画面のタイムアウト</string>
<string name="quick_settings_lockscreen_label">ロック画面</string>
- <string name="quick_settings_ambient_display_label">常に画面表示ディスプレイ</string>
+ <string name="quick_settings_ambient_display_label">アンビエント表示</string>
<string name="quick_settings_lockscreen_label_enforced">ロック画面強制</string>
<string name="quick_settings_lockscreen_label_locked_by_profile">プロファイルによって無効になっています</string>
<!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
@@ -142,13 +142,13 @@
<!-- Announcement made when lock screen changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_quick_settings_lock_screen_changed_on">ロック画面がONになりました。</string>
<!-- Content description of the ambient display tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
- <string name="accessibility_quick_settings_ambient_display_off">常に画面表示ディスプレイはOFFです。</string>
+ <string name="accessibility_quick_settings_ambient_display_off">アンビエント表示は OFF です。</string>
<!-- Content description of the ambient display tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
- <string name="accessibility_quick_settings_ambient_display_on">常に画面表示ディスプレイはONです。</string>
+ <string name="accessibility_quick_settings_ambient_display_on">アンビエント表示は ON です。</string>
<!-- Announcement made when ambient display changes to off (not shown on the screen). [CHAR LIMIT=NONE] -->
- <string name="accessibility_quick_settings_ambient_display_changed_off">常に画面表示ディスプレイがOFFになりました。</string>
+ <string name="accessibility_quick_settings_ambient_display_changed_off">アンビエント表示が OFF になりました。</string>
<!-- Announcement made when ambient display changes to on (not shown on the screen). [CHAR LIMIT=NONE] -->
- <string name="accessibility_quick_settings_ambient_display_changed_on">常に画面表示ディスプレイがONになりました。</string>
+ <string name="accessibility_quick_settings_ambient_display_changed_on">アンビエント表示が ON になりました。</string>
<!-- Content description of the heads up tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_quick_settings_heads_up_off">ヘッドアップはOFFです。</string>
<!-- Content description of the heads up tile in quick settings when on (not shown on the screen). [CHAR LIMIT=NONE] -->
diff --git a/packages/SystemUI/res/values-nb/cm_strings.xml b/packages/SystemUI/res/values-nb/cm_strings.xml
index 151785bf005..7097ab3d7bc 100644
--- a/packages/SystemUI/res/values-nb/cm_strings.xml
+++ b/packages/SystemUI/res/values-nb/cm_strings.xml
@@ -31,7 +31,7 @@
<string name="right_shortcut_hint">Sveip til venstre for %1$s</string>
<string name="lockscreen_message">Trykk på ikonet til venstre eller høyre for å tilordne en låseskjermsnarvei.</string>
<string name="lockscreen_default_target">Standard</string>
- <string name="select_application">Velg applikasjon</string>
+ <string name="select_application">Velg app</string>
<string name="lockscreen_choose_action_title">Velg handling</string>
<string name="lockscreen_none_target">Ingen</string>
<!-- Dialog title for navigation bar button selection -->
@@ -65,8 +65,8 @@
<string name="accessibility_quick_settings_profiles_changed">Profil endret til <xliff:g id="profile" example="Default">%s</xliff:g>.</string>
<string name="quick_settings_compass_init">Initialiserer\u2026</string>
<!-- Lights settings, LED notification -->
- <string name="led_notification_title">Lys innstillinger</string>
- <string name="led_notification_text">LED lyset aktiveres av innstillingene</string>
+ <string name="led_notification_title">Lysinnstillinger</string>
+ <string name="led_notification_text">LED-lys aktivert av innstillingene</string>
<string name="qs_tile_edit_header_instruction">Trykk og hold fliser for å omorganisere</string>
<string name="quick_settings_edit_label">Rediger fliser</string>
<string name="quick_settings_cannot_delete_edit_tile">Kan ikke slette Rediger-flisen</string>
@@ -75,7 +75,7 @@
<string name="quick_settings_title_header">Topptekst</string>
<string name="quick_settings_title_tiles">Fliser</string>
<string name="quick_settings_title_show_weather">Vis været</string>
- <string name="quick_settings_title_show_brightness_slider">Vis lysstyrkeendrer</string>
+ <string name="quick_settings_title_show_brightness_slider">Vis lysstyrke-dimmer</string>
<string name="quick_settings_title_enlarge_first_row">Forstørr første rad</string>
<!-- Screen pinning dialog description (for devices without navbar) -->
<string name="screen_pinning_description_no_navbar">Dette holder den i syne inntill du løsner den. Trykk og hold på tilbake knappen for å løsne.</string>
diff --git a/packages/SystemUI/res/values-nl/cm_strings.xml b/packages/SystemUI/res/values-nl/cm_strings.xml
index eb58814872f..8c0e4ba4a3b 100644
--- a/packages/SystemUI/res/values-nl/cm_strings.xml
+++ b/packages/SystemUI/res/values-nl/cm_strings.xml
@@ -52,7 +52,7 @@
<!-- Title shown in recents popup for force stopping the application -->
<string name="advanced_dev_option_force_stop">Nu stoppen</string>
<!-- Title shown in recents popup for uninstalling the application -->
- <string name="advanced_dev_option_uninstall">Verwijderen</string>
+ <string name="advanced_dev_option_uninstall">Deïnstalleren</string>
<!-- Content description of the light brightness slider (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_notification_brightness">Verlichtingshelderheid</string>
<!-- Content description of the profiles tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
diff --git a/packages/SystemUI/res/values-sr/cm_strings.xml b/packages/SystemUI/res/values-sr/cm_strings.xml
index 8bf4c5e6e99..17d835ce9e6 100644
--- a/packages/SystemUI/res/values-sr/cm_strings.xml
+++ b/packages/SystemUI/res/values-sr/cm_strings.xml
@@ -31,7 +31,7 @@
<string name="right_shortcut_hint">Превуци лево за %1$s</string>
<string name="lockscreen_message">Додирни икону лево или десно да доделиш пречицу за закључани екран.</string>
<string name="lockscreen_default_target">Подразумевано</string>
- <string name="select_application">Изабери апликацију</string>
+ <string name="select_application">Избор апликације</string>
<string name="lockscreen_choose_action_title">Изабери акцију</string>
<string name="lockscreen_none_target">Ниједан</string>
<!-- Dialog title for navigation bar button selection -->
@@ -173,7 +173,7 @@
<string name="quick_settings_dynamic_tile_detail_title">Динамичне плочице</string>
<string name="dynamic_qs_tile_next_alarm_label">Следећи аларм</string>
<string name="dynamic_qs_tile_ime_selector_label">IME бирач</string>
- <string name="dynamic_qs_tile_su_label">Root приступ</string>
+ <string name="dynamic_qs_tile_su_label">Приступ правима суперкорисника</string>
<string name="dynamic_qs_tile_themes_label">Теме</string>
<string name="quick_settings_title_advanced_location">Локација три-државе</string>
<!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
diff --git a/packages/SystemUI/res/values-tr/cm_strings.xml b/packages/SystemUI/res/values-tr/cm_strings.xml
index ae49a53572e..84274e43fc1 100644
--- a/packages/SystemUI/res/values-tr/cm_strings.xml
+++ b/packages/SystemUI/res/values-tr/cm_strings.xml
@@ -29,11 +29,11 @@
<!-- Strings for lockscreen shortcut hints -->
<string name="left_shortcut_hint">%1$s için sağa kaydırın</string>
<string name="right_shortcut_hint">%1$s için sola kaydırın</string>
- <string name="lockscreen_message">Kilit ekranı kısayollarını ayarlamak için sağ ya da soldaki simgeye dokunun.</string>
+ <string name="lockscreen_message">Kilit ekranı kısayolunu atamak için sol veya sağdaki bir simgeye dokunun.</string>
<string name="lockscreen_default_target">Varsayılan</string>
<string name="select_application">Uygulama seçin</string>
<string name="lockscreen_choose_action_title">Eylem seçin</string>
- <string name="lockscreen_none_target">Yok</string>
+ <string name="lockscreen_none_target">Hiçbiri</string>
<!-- Dialog title for navigation bar button selection -->
<string name="navbar_dialog_title">Atamak için işlev seçin</string>
<string name="navbar_home_button">Ana ekran tuşu</string>
@@ -41,8 +41,8 @@
<string name="navbar_search_button">Arama tuşu</string>
<string name="navbar_back_button">Geri tuşu</string>
<string name="navbar_empty_button">Boş tuş</string>
- <string name="navbar_menu_conditional_button">Menü (otoGizle) tuşu</string>
- <string name="navbar_menu_always_button">Menü (hepGöster) tuşu</string>
+ <string name="navbar_menu_conditional_button">Menü (otomatik gizle) tuşu</string>
+ <string name="navbar_menu_always_button">Menü (herzaman göster) tuşu</string>
<string name="navbar_menu_big_button">Menü tuşu</string>
<string name="accessibility_dpad_left">Sol imleç</string>
<string name="accessibility_dpad_right">Sağ imleç</string>
@@ -78,7 +78,7 @@
<string name="quick_settings_title_show_brightness_slider">Parlaklık kaydırıcısını göster</string>
<string name="quick_settings_title_enlarge_first_row">İlk satırı büyüt</string>
<!-- Screen pinning dialog description (for devices without navbar) -->
- <string name="screen_pinning_description_no_navbar">Ekrandan kaldırana kadar görünümde tutar. Kaldırmak için Geri tuşuna dokunun ve tutun.</string>
+ <string name="screen_pinning_description_no_navbar">Bu, siz sabitleyene kadar onu korur. Sabitlemek için Geri düğmesine dokunun ve basılı tutun.</string>
<string name="quick_settings_custom_tile_detail_title">Özel kare</string>
<string name="quick_settings_remove">Kareyi kaldır</string>
<string name="quick_settings_network_adb_label">Ağ üzerinden ADB</string>
@@ -89,7 +89,7 @@
<string name="quick_settings_heads_up_label">Bildirim pencereleri</string>
<string name="quick_settings_battery_saver_label">Pil tasarrufu</string>
<!-- quick settings battery saver label to show when device is charging and tile is disabled -->
- <string name="quick_settings_battery_saver_label_charging">Batarya kurtarıcı (şarj ediliyor)</string>
+ <string name="quick_settings_battery_saver_label_charging">Pil koruyucu (şarj ediliyor)</string>
<string name="quick_settings_caffeine_label">Kafein</string>
<!-- Content description of the sync tile in quick settings when off (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_quick_settings_sync_off">Eşitleme kapalı.</string>
@@ -108,7 +108,7 @@
<string name="quick_settings_lockscreen_label_enforced">Kilit ekranı zorunlu</string>
<string name="quick_settings_lockscreen_label_locked_by_profile">Profil tarafından devre dışı</string>
<!-- Content description of the screen timeout tile in quick settings (not shown on the screen). [CHAR LIMIT=NONE] -->
- <string name="accessibility_quick_settings_screen_timeout">Ekran zaman aşımı : <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
+ <string name="accessibility_quick_settings_screen_timeout">Ekran zaman aşımı: <xliff:g id="timeout" example="30 seconds">%s</xliff:g>.</string>
<!-- Announcement made when the screen timeout tile changes (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_quick_settings_screen_timeout_changed">Ekran zaman aşımı <xliff:g id="timeout" example="30 seconds">%s</xliff:g> olarak ayarlandı.</string>
<string name="qs_tile_performance">Pil modu</string>
@@ -172,8 +172,8 @@
<!-- Dynamic tiles -->
<string name="quick_settings_dynamic_tile_detail_title">Dinamik kare</string>
<string name="dynamic_qs_tile_next_alarm_label">Sonraki alarm</string>
- <string name="dynamic_qs_tile_ime_selector_label">IME seçici</string>
- <string name="dynamic_qs_tile_su_label">Root erişimi</string>
+ <string name="dynamic_qs_tile_ime_selector_label">Klavye seçici</string>
+ <string name="dynamic_qs_tile_su_label">Kök erişimi</string>
<string name="dynamic_qs_tile_themes_label">Temalar</string>
<string name="quick_settings_title_advanced_location">3-durumlu konum</string>
<!-- Content description of the location tile in quick settings when on, battery saving mode (not shown on the screen). [CHAR LIMIT=NONE] -->
@@ -202,12 +202,12 @@
<!-- Hotspot dialog message -->
<string name="hotspot_apm_message">Uçak modu etkinken hücresel ağlarla bağlantı kurulamıyor. Uçak modunu devre dışı bırakın ve tekrar deneyin.</string>
<!-- Notification which notifies user flashlight is enabled -->
- <string name="quick_settings_tile_flashlight_not_title">Flaş ışığı açık</string>
+ <string name="quick_settings_tile_flashlight_not_title">El feneri açık</string>
<string name="quick_settings_tile_flashlight_not_summary">Kapatmak için dokunun</string>
<!-- Wi-Fi hotspot label when enabled -->
<plurals name="wifi_hotspot_connected_clients_label">
- <item quantity="one">%1$d istemci</item>
- <item quantity="other">%1$d istemci</item>
+ <item quantity="one">%1$d cihaz</item>
+ <item quantity="other">%1$d cihaz</item>
</plurals>
<!-- CellularTile data sim not configured state string -->
<string name="data_sim_not_configured">SIM verisi yok</string>
diff --git a/packages/SystemUI/res/values-zh-rCN/cm_strings.xml b/packages/SystemUI/res/values-zh-rCN/cm_strings.xml
index 5fe55094ff2..0f4ced06843 100644
--- a/packages/SystemUI/res/values-zh-rCN/cm_strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/cm_strings.xml
@@ -196,7 +196,7 @@
<string name="accessibility_quick_settings_location_changed_gps_only">位置报告已修改为仅使用传感器模式。</string>
<!-- Announcement made when the location tile changes to high accuracy (not shown on the screen). [CHAR LIMIT=NONE] -->
<string name="accessibility_quick_settings_location_changed_high_accuracy">位置报告已修改为准确度高模式。</string>
- <string name="quick_settings_tiles_category_system">系统磁块</string>
+ <string name="quick_settings_tiles_category_system">系统瓷块</string>
<!-- detail header when adding a tile -->
<string name="quick_settings_tiles_add_tiles">添加瓷块</string>
<!-- Hotspot dialog message -->
diff --git a/services/core/java/com/android/server/AppOpsService.java b/services/core/java/com/android/server/AppOpsService.java
index b205d24fb90..9412213de32 100644
--- a/services/core/java/com/android/server/AppOpsService.java
+++ b/services/core/java/com/android/server/AppOpsService.java
@@ -76,6 +76,7 @@ import com.android.internal.os.Zygote;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.FastXmlSerializer;
import com.android.internal.util.XmlUtils;
+import com.android.server.am.ActivityManagerService;
import com.android.server.PermissionDialogReqQueue.PermissionDialogReq;
import libcore.util.EmptyArray;
@@ -100,6 +101,7 @@ public class AppOpsService extends IAppOpsService.Stub {
final boolean mStrictEnable;
AppOpsPolicy mPolicy;
private PowerManager mPowerManager;
+ private final ActivityManagerService mActivityManagerService;
private static final int[] PRIVACY_GUARD_OP_STATES = new int[] {
AppOpsManager.OP_COARSE_LOCATION,
@@ -278,11 +280,12 @@ public class AppOpsService extends IAppOpsService.Stub {
}
}
- public AppOpsService(File storagePath, Handler handler) {
+ public AppOpsService(File storagePath, Handler handler, ActivityManagerService service) {
mFile = new AtomicFile(storagePath);
mHandler = handler;
mLooper = Looper.myLooper();
mStrictEnable = AppOpsManager.isStrictEnable();
+ mActivityManagerService = service;
readState();
}
@@ -1046,6 +1049,7 @@ public class AppOpsService extends IAppOpsService.Stub {
private int noteOperationUnchecked(int code, int uid, String packageName,
int proxyUid, String proxyPackageName) {
final PermissionDialogReq req;
+ final boolean isInteractive = mPowerManager != null ? mPowerManager.isInteractive() : false;
synchronized (this) {
Ops ops = getOpsLocked(uid, packageName, true);
if (ops == null) {
@@ -1097,7 +1101,7 @@ public class AppOpsService extends IAppOpsService.Stub {
return AppOpsManager.MODE_ALLOWED;
} else {
- if (Looper.myLooper() == mLooper) {
+ if (Looper.myLooper() == mLooper || Thread.holdsLock(mActivityManagerService)) {
Log.e(TAG,
"noteOperation: This method will deadlock if called from the main thread. (Code: "
+ code
@@ -1130,7 +1134,6 @@ public class AppOpsService extends IAppOpsService.Stub {
// we move them to the back of the line. NOTE: these values are magic, and may need
// tuning. Ideally we'd want a ringbuffer or token bucket here to do proper rate
// limiting.
- final boolean isInteractive = mPowerManager.isInteractive();
if (isInteractive &&
(ops.uidState.pkgOps.size() < AppOpsPolicy.RATE_LIMIT_OPS_TOTAL_PKG_COUNT
&& op.noteOpCount < AppOpsPolicy.RATE_LIMIT_OP_COUNT
@@ -1217,7 +1220,7 @@ public class AppOpsService extends IAppOpsService.Stub {
broadcastOpIfNeeded(code);
return AppOpsManager.MODE_ALLOWED;
} else {
- if (Looper.myLooper() == mLooper) {
+ if (Looper.myLooper() == mLooper || Thread.holdsLock(mActivityManagerService)) {
Log.e(TAG,
"startOperation: This method will deadlock if called from the main thread. (Code: "
+ code
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 37156204e30..6c076d06f21 100755
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -2561,7 +2561,7 @@ public final class ActivityManagerService extends ActivityManagerNative
mProcessStats = new ProcessStatsService(this, new File(systemDir, "procstats"));
- mAppOpsService = new AppOpsService(new File(systemDir, "appops.xml"), mHandler);
+ mAppOpsService = new AppOpsService(new File(systemDir, "appops.xml"), mHandler, this);
mGrantFile = new AtomicFile(new File(systemDir, "urigrants.xml"));
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 920a8500bea..21d3b4be1f5 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -415,6 +415,8 @@ public class PackageManagerService extends IPackageManager.Stub {
*/
private static final int DEFAULT_VERIFICATION_RESPONSE = PackageManager.VERIFICATION_ALLOW;
+ static final String PLATFORM_PACKAGE_NAME = "android";
+
static final String DEFAULT_CONTAINER_PACKAGE = "com.android.defcontainer";
static final ComponentName DEFAULT_CONTAINER_COMPONENT = new ComponentName(
@@ -13467,6 +13469,20 @@ public class PackageManagerService extends IPackageManager.Stub {
+ perm.info.name + "; ignoring new declaration");
pkg.permissions.remove(i);
}
+ } else if (!PLATFORM_PACKAGE_NAME.equals(pkg.packageName)) {
+ // Prevent apps to change protection level to dangerous from any other
+ // type as this would allow a privilege escalation where an app adds a
+ // normal/signature permission in other app's group and later redefines
+ // it as dangerous leading to the group auto-grant.
+ if ((perm.info.protectionLevel & PermissionInfo.PROTECTION_MASK_BASE)
+ == PermissionInfo.PROTECTION_DANGEROUS) {
+ if (bp != null && !bp.isRuntime()) {
+ Slog.w(TAG, "Package " + pkg.packageName + " trying to change a "
+ + "non-runtime permission " + perm.info.name
+ + " to runtime; keeping old protection level");
+ perm.info.protectionLevel = bp.protectionLevel;
+ }
+ }
}
}
}