Merge "Use bindServiceAsUser() to follow API change."
diff --git a/Android.mk b/Android.mk
index fe8ed2d..738cea0 100644
--- a/Android.mk
+++ b/Android.mk
@@ -2,7 +2,7 @@
include $(CLEAR_VARS)
LOCAL_JAVA_LIBRARIES := bouncycastle telephony-common
-LOCAL_STATIC_JAVA_LIBRARIES := guava android-support-v4 jsr305
+LOCAL_STATIC_JAVA_LIBRARIES := guava android-support-v4 android-support-v13 jsr305
LOCAL_MODULE_TAGS := optional
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 3cbb5a3..bdf8296 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -768,6 +768,24 @@
android:resource="@id/application_settings" />
</activity>
+ <activity android:name="Settings$AppOpsSummaryActivity"
+ android:label="@string/app_ops_settings"
+ android:taskAffinity=""
+ android:excludeFromRecents="true">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <action android:name="android.settings.APP_OPS_SETTINGS" />
+ <category android:name="android.intent.category.DEFAULT" />
+ <category android:name="android.intent.category.VOICE_LAUNCH" />
+ <category android:name="com.android.settings.SHORTCUT" />
+ </intent-filter>
+ <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+ android:value="com.android.settings.applications.AppOpsSummary" />
+ <!--
+ <meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
+ android:resource="@id/application_settings" /> -->
+ </activity>
+
<activity android:name="Settings$LocationSettingsActivity"
android:label="@string/location_settings_title"
android:configChanges="orientation|keyboardHidden|screenSize"
diff --git a/res/layout/app_ops_item.xml b/res/layout/app_ops_item.xml
new file mode 100644
index 0000000..f42a8b9
--- /dev/null
+++ b/res/layout/app_ops_item.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2008, 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.
+*/
+-->
+
+<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:minHeight="?android:attr/listPreferredItemHeight"
+ android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+ android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+ android:paddingTop="8dip"
+ android:paddingBottom="8dip"
+ android:columnCount="3">
+
+ <ImageView
+ android:id="@+id/app_icon"
+ android:layout_width="@android:dimen/app_icon_size"
+ android:layout_height="@android:dimen/app_icon_size"
+ android:layout_rowSpan="2"
+ android:layout_marginEnd="8dip"
+ android:scaleType="centerInside"
+ android:contentDescription="@null" />
+
+ <TextView
+ android:id="@+id/app_name"
+ android:layout_width="0dip"
+ android:layout_columnSpan="2"
+ android:layout_gravity="fill_horizontal"
+ android:layout_marginTop="2dip"
+ android:singleLine="true"
+ android:ellipsize="marquee"
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:textAlignment="viewStart" />
+
+ <TextView
+ android:id="@+id/op_name"
+ android:layout_width="0dip"
+ android:layout_gravity="fill_horizontal"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textAlignment="viewStart" />
+
+ <TextView
+ android:id="@+id/op_time"
+ android:layout_marginStart="8dip"
+ android:textAppearance="?android:attr/textAppearanceSmall" />
+
+</GridLayout>
diff --git a/res/layout/app_ops_summary.xml b/res/layout/app_ops_summary.xml
new file mode 100644
index 0000000..2073a00
--- /dev/null
+++ b/res/layout/app_ops_summary.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2013, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<LinearLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical">
+
+ <android.support.v4.view.ViewPager
+ android:id="@+id/pager"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_weight="1">
+ <android.support.v4.view.PagerTabStrip
+ android:id="@+id/tabs"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="top"
+ android:textAppearance="@style/TextAppearance.PagerTabs"
+ android:paddingLeft="@dimen/pager_tabs_padding"
+ android:paddingRight="@dimen/pager_tabs_padding">
+ </android.support.v4.view.PagerTabStrip>
+ </android.support.v4.view.ViewPager>
+
+</LinearLayout>
diff --git a/res/values-af/arrays.xml b/res/values-af/arrays.xml
index 30ff64f..7c8550a 100644
--- a/res/values-af/arrays.xml
+++ b/res/values-af/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Grafika)"</item>
<item msgid="1340692776955662664">"Belstapel op glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standaardlimiet"</item>
<item msgid="4071574792028999443">"Geen agtergrondprosesse"</item>
diff --git a/res/values-am/arrays.xml b/res/values-am/arrays.xml
index dbadbb8..b9bf71b 100644
--- a/res/values-am/arrays.xml
+++ b/res/values-am/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (ግራፊክስ)"</item>
<item msgid="1340692776955662664">"የጥሪ ቁልል በ glGetError ላይ"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"መደበኛ ወሰኖች"</item>
<item msgid="4071574792028999443">"ምንም የዳራ ሂደቶች የሉም"</item>
diff --git a/res/values-ar/arrays.xml b/res/values-ar/arrays.xml
index 908ed0a..943efa1 100644
--- a/res/values-ar/arrays.xml
+++ b/res/values-ar/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (رسومات)"</item>
<item msgid="1340692776955662664">"تكدس الاستدعاءات في دالة glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"الحد القياسي"</item>
<item msgid="4071574792028999443">"ليست هناك عمليات بالخلفية"</item>
diff --git a/res/values-be/arrays.xml b/res/values-be/arrays.xml
index 8466231..7f5526a 100644
--- a/res/values-be/arrays.xml
+++ b/res/values-be/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Graphics)"</item>
<item msgid="1340692776955662664">"Выклікаць стэк на glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Стандартны ліміт"</item>
<item msgid="4071574792028999443">"Няма фонавых працэсаў"</item>
diff --git a/res/values-bg/arrays.xml b/res/values-bg/arrays.xml
index 6f4ae62..399a87b 100644
--- a/res/values-bg/arrays.xml
+++ b/res/values-bg/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Графика)"</item>
<item msgid="1340692776955662664">"Извикване на стека при glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Стандартно ограничение"</item>
<item msgid="4071574792028999443">"Няма процеси на заден план"</item>
diff --git a/res/values-ca/arrays.xml b/res/values-ca/arrays.xml
index 2d68cb3..ee02102 100644
--- a/res/values-ca/arrays.xml
+++ b/res/values-ca/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (gràfics)"</item>
<item msgid="1340692776955662664">"Pila de trucades de glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Límit estàndard"</item>
<item msgid="4071574792028999443">"Sense processos en segon pla"</item>
diff --git a/res/values-cs/arrays.xml b/res/values-cs/arrays.xml
index 8c04c81..313e25e 100644
--- a/res/values-cs/arrays.xml
+++ b/res/values-cs/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafika)"</item>
<item msgid="1340692776955662664">"Zásobník volání funkce glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standardní limit"</item>
<item msgid="4071574792028999443">"Procesy na pozadí deaktivovány"</item>
diff --git a/res/values-da/arrays.xml b/res/values-da/arrays.xml
index 8ecf208..058bdbd 100644
--- a/res/values-da/arrays.xml
+++ b/res/values-da/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafik)"</item>
<item msgid="1340692776955662664">"Kaldestak på glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standardgrænse"</item>
<item msgid="4071574792028999443">"Ingen baggrundsprocesser"</item>
diff --git a/res/values-de/arrays.xml b/res/values-de/arrays.xml
index 8ed815e..40eab69 100644
--- a/res/values-de/arrays.xml
+++ b/res/values-de/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Grafik)"</item>
<item msgid="1340692776955662664">"Aufrufliste für glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standardlimit"</item>
<item msgid="4071574792028999443">"Keine Hintergrundprozesse"</item>
diff --git a/res/values-el/arrays.xml b/res/values-el/arrays.xml
index e78f247..f2ed440 100644
--- a/res/values-el/arrays.xml
+++ b/res/values-el/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Γραφικά)"</item>
<item msgid="1340692776955662664">"Κλήση στοίβας σε glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Τυπικό όριο"</item>
<item msgid="4071574792028999443">"Δεν υπάρχουν διεργασίες παρασκηνίου"</item>
diff --git a/res/values-en-rGB/arrays.xml b/res/values-en-rGB/arrays.xml
index 1c0b0d1..f262e69 100644
--- a/res/values-en-rGB/arrays.xml
+++ b/res/values-en-rGB/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Graphics)"</item>
<item msgid="1340692776955662664">"Call stack on glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standard limit"</item>
<item msgid="4071574792028999443">"No background processes"</item>
diff --git a/res/values-es-rUS/arrays.xml b/res/values-es-rUS/arrays.xml
index 2adedb5..fb81229 100644
--- a/res/values-es-rUS/arrays.xml
+++ b/res/values-es-rUS/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (gráficos)"</item>
<item msgid="1340692776955662664">"Pila de llamadas en glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Límite estándar"</item>
<item msgid="4071574792028999443">"No hay procesos de fondo."</item>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 15f67ce..52ab35b 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -1076,7 +1076,7 @@
<string name="show_background_processes" msgid="2009840211972293429">"Mostrar procesos almacenados en la memoria caché"</string>
<string name="reset_app_preferences" msgid="1321050641018356925">"Restablecer preferencias"</string>
<string name="reset_app_preferences_title" msgid="6093179367325336662">"¿Restablec. preferencias?"</string>
- <string name="reset_app_preferences_desc" msgid="1118129530999596317">"Se restablecerán las preferencias de:"\n\n" "<li>"aplicaciones desactivadas,"</li>\n" "<li>"notificaciones de aplicaciones desactivadas,"</li>\n" "<li>"aplicaciones predeterminadas para diferentes acciones,"</li>\n" "<li>"restricciones de datos de referencia para las aplicaciones."</li>\n\n" No perderás los datos de ninguna aplicación."</string>
+ <string name="reset_app_preferences_desc" msgid="1118129530999596317">"Se restablecerán las preferencias de:"\n\n" "<li>"aplicaciones desactivadas,"</li>\n" "<li>"notificaciones de aplicaciones desactivadas,"</li>\n" "<li>"aplicaciones predeterminadas para diferentes acciones,"</li>\n" "<li>"restricciones de datos en segundo plano para las aplicaciones."</li>\n\n" No perderás los datos de ninguna aplicación."</string>
<string name="reset_app_preferences_button" msgid="2559089511841281242">"Restablecer aplicaciones"</string>
<string name="manage_space_text" msgid="8852711522447794676">"Administrar el espacio"</string>
<string name="filter" msgid="2018011724373033887">"Filtro"</string>
@@ -1569,8 +1569,8 @@
<string name="add_account_label" msgid="7811707265834013767">"Agregar cuenta"</string>
<string name="background_data" msgid="5779592891375473817">"Datos de fondo"</string>
<string name="background_data_summary" msgid="8328521479872763452">"Las aplicaciones pueden sincronizar, enviar y recibir datos."</string>
- <string name="background_data_dialog_title" msgid="6059217698124786537">"¿Deseas desactivar los datos de referencia?"</string>
- <string name="background_data_dialog_message" msgid="6981661606680941633">"Si inhabilitas los datos de referencia, aumenta la duración de la batería y se reduce el uso de datos. Algunas aplicaciones tal vez sigan usando la conexión de datos de referencia."</string>
+ <string name="background_data_dialog_title" msgid="6059217698124786537">"¿Deseas desactivar los datos en segundo plano?"</string>
+ <string name="background_data_dialog_message" msgid="6981661606680941633">"Si inhabilitas los datos en segundo plano, aumenta la duración de la batería y se reduce el uso de datos. Algunas aplicaciones tal vez sigan usando la conexión de datos en segundo plano."</string>
<string name="sync_automatically" msgid="1682730255435062059">"Autosincronizar datos de aplic."</string>
<string name="sync_enabled" msgid="4551148952179416813">"Sincronización activada"</string>
<string name="sync_disabled" msgid="8511659877596511991">"Sincronización desactivada"</string>
@@ -1603,7 +1603,7 @@
<!-- no translation found for sync_item_title (4782834606909853006) -->
<skip />
<string name="cant_sync_dialog_title" msgid="8923508322291625282">"No se puede sincronizar manualmente"</string>
- <string name="cant_sync_dialog_message" msgid="1938380442159016449">"La sincronización de este elemento actualmente está desactivada. Para cambiar tu configuración, activa momentáneamente los datos de referencia y la sincronización automática."</string>
+ <string name="cant_sync_dialog_message" msgid="1938380442159016449">"La sincronización de este elemento actualmente está desactivada. Para cambiar tu configuración, activa momentáneamente los datos en segundo plano y la sincronización automática."</string>
<string name="wimax_settings" msgid="1574837328738396794">"Configuración de 4G"</string>
<string name="wimax_settings_summary" msgid="3207355006084135453">"Configurar & administrar red 4G y módem"</string>
<string name="status_wimax_mac_address" msgid="8390791848661413416">"Dirección MAC de 4G"</string>
@@ -1671,7 +1671,7 @@
<string name="data_usage_summary_title" msgid="3804110657238092929">"Uso de datos"</string>
<string name="data_usage_cycle" msgid="5652529796195787949">"Ciclo de uso de datos"</string>
<string name="data_usage_menu_roaming" msgid="8042359966835203296">"Roaming de datos"</string>
- <string name="data_usage_menu_restrict_background" msgid="1989394568592253331">"Restringir datos de ref."</string>
+ <string name="data_usage_menu_restrict_background" msgid="1989394568592253331">"Restr. datos 2.° plano"</string>
<string name="data_usage_menu_split_4g" msgid="5322857680792601899">"Uso aparte de datos móviles 4G"</string>
<string name="data_usage_menu_show_wifi" msgid="8266875319417201085">"Mostrar el uso de Wi-Fi"</string>
<string name="data_usage_menu_show_ethernet" msgid="5181361208532314097">"Mostrar uso de Ethernet"</string>
@@ -1699,12 +1699,12 @@
<string name="data_usage_enable_3g" msgid="6304006671869578254">"Datos de 2 GB - 3 GB"</string>
<string name="data_usage_enable_4g" msgid="3635854097335036738">"Datos de 4 GB"</string>
<string name="data_usage_app_settings" msgid="8430240158135453271">"Ver config. de la aplicación"</string>
- <string name="data_usage_app_restrict_background" msgid="9149728936265100841">"Restringir los datos de referencia"</string>
+ <string name="data_usage_app_restrict_background" msgid="9149728936265100841">"Restringir datos en 2.° plano"</string>
<string name="data_usage_app_restrict_background_summary" msgid="518658001418490405">"Desactivar datos ref. en redes móviles (usará redes no móviles)"</string>
- <string name="data_usage_app_restrict_background_summary_disabled" msgid="7401927377070755054">"Para limitar datos de ref. de esta aplic., limita datos móviles."</string>
- <string name="data_usage_app_restrict_dialog_title" msgid="1613108390242737923">"¿Restringir el uso de datos de referencia?"</string>
- <string name="data_usage_app_restrict_dialog" msgid="1466689968707308512">"Esta función puede hacer que deje de funcionar una aplicación que tenga que utilizar datos de referencia cuando solo estén disponibles redes móviles."\n\n"Puedes encontrar controles de uso de datos más adecuados en las opciones de configuración disponibles en la aplicación."</string>
- <string name="data_usage_restrict_denied_dialog" msgid="7086969103661420799">"Solo se pueden restringir los datos de referencia si estableciste un límite de datos móviles."</string>
+ <string name="data_usage_app_restrict_background_summary_disabled" msgid="7401927377070755054">"Para restringir datos en 2.° plano aquí, limita datos móviles."</string>
+ <string name="data_usage_app_restrict_dialog_title" msgid="1613108390242737923">"¿Restringir el uso de datos en segundo plano?"</string>
+ <string name="data_usage_app_restrict_dialog" msgid="1466689968707308512">"Esta función puede hacer que deje de funcionar una aplicación que tenga que utilizar datos en segundo plano cuando solo estén disponibles redes móviles."\n\n"Puedes encontrar controles de uso de datos más adecuados en las opciones de configuración disponibles en la aplicación."</string>
+ <string name="data_usage_restrict_denied_dialog" msgid="7086969103661420799">"Solo se pueden restringir los datos en segundo plano si estableciste un límite de datos móviles."</string>
<string name="data_usage_auto_sync_on_dialog_title" msgid="2438617846762244389">"¿Activar sinc. automática?"</string>
<string name="data_usage_auto_sync_on_dialog" product="tablet" msgid="7312283529426636845">"Cualquier cambio que sufran tus cuentas en la Web se copiará automáticamente en tu tableta."\n\n"Algunas cuentas también pueden copiar automáticamente en la Web los cambios que sufre tu tableta. Una cuenta de Google funciona de esta manera."\n\n"Para elegir qué tipo de información sincronizar dentro de cada cuenta, ve a Configuración > Cuentas."</string>
<string name="data_usage_auto_sync_on_dialog" product="default" msgid="2374996799819303283">"Cualquier cambio que sufran tus cuentas en la Web se copiará automáticamente en tu dispositivo."\n\n"Algunas cuentas también pueden copiar automáticamente en la Web los cambios que sufre tu dispositivo. Una cuenta de Google funciona de esta manera."\n\n"Para elegir qué tipo de información sincronizar dentro de cada cuenta, ve a Configuración > Cuentas."</string>
@@ -1718,10 +1718,10 @@
<string name="data_usage_limit_dialog_title" msgid="3023111643632996097">"Limitar el uso de datos"</string>
<string name="data_usage_limit_dialog_mobile" product="tablet" msgid="3893348029612821262">"Tu conexión de datos móvil se desactivará cuando se alcance el límite especificado."\n\n"Debido a que el uso de datos medido por tu tableta puede diferir del cálculo de uso de tu proveedor, considera usar un límite prudente."</string>
<string name="data_usage_limit_dialog_mobile" product="default" msgid="7962145861903746827">"Tu conexión de datos móvil se desactivará cuando se alcance el límite especificado."\n\n"Debido a que el uso de datos medido por tu teléfono puede diferir del cálculo de uso de tu proveedor, considera usar un límite prudente."</string>
- <string name="data_usage_restrict_background_title" msgid="2201315502223035062">"¿Restringir el uso de datos de referencia?"</string>
- <string name="data_usage_restrict_background" msgid="6387252645350792955">"Si restringes los datos para celulares de referencia, algunas aplicaciones y servicios no funcionarán a menos que te conectes a una red Wi-Fi."</string>
- <string name="data_usage_restrict_background_multiuser" product="tablet" msgid="2609163428726042269">"Si restringes los datos móviles de referencia, algunos servicios y aplicaciones no funcionarán a menos que te conectes a una red Wi-Fi."\n\n"Esta configuración afecta a todos los usuarios de esta tableta."</string>
- <string name="data_usage_restrict_background_multiuser" product="default" msgid="8025473178302056174">"Si restringes los datos móviles de referencia, algunos servicios y aplicaciones no funcionarán a menos que te conectes a una red Wi-Fi."\n\n"Esta configuración afecta a todos los usuarios de este dispositivo."</string>
+ <string name="data_usage_restrict_background_title" msgid="2201315502223035062">"¿Restringir el uso de datos en segundo plano?"</string>
+ <string name="data_usage_restrict_background" msgid="6387252645350792955">"Si restringes los datos que usa tu celular en segundo plano, algunos servicios y aplicaciones no funcionarán a menos que estés conectado a una red Wi-Fi."</string>
+ <string name="data_usage_restrict_background_multiuser" product="tablet" msgid="2609163428726042269">"Si restringes los datos móviles que se usan en segundo plano, algunos servicios y aplicaciones no funcionarán a menos que estés conectado a una red Wi-Fi."\n\n"Esta configuración afecta a todos los usuarios de esta tableta."</string>
+ <string name="data_usage_restrict_background_multiuser" product="default" msgid="8025473178302056174">"Si restringes los datos que usa tu celular en segundo plano, algunos servicios y aplicaciones no funcionarán a menos que estés conectado a una red Wi-Fi."\n\n"Esta configuración afecta a todos los usuarios de este dispositivo."</string>
<string name="data_usage_sweep_warning" msgid="6387081852568846982"><font size="21">"<xliff:g id="NUMBER">^1</xliff:g>"</font><font size="9">"<xliff:g id="UNIT">^2</xliff:g>"</font>\n<font size="12">"advertencia"</font></string>
<string name="data_usage_sweep_limit" msgid="860566507375933039"><font size="21">"<xliff:g id="NUMBER">^1</xliff:g>"</font>" "<font size="9">"<xliff:g id="UNIT">^2</xliff:g>"</font>\n<font size="12">"límite"</font></string>
<string name="data_usage_uninstalled_apps" msgid="614263770923231598">"Aplicaciones eliminadas"</string>
diff --git a/res/values-es/arrays.xml b/res/values-es/arrays.xml
index e238984..7115de9 100644
--- a/res/values-es/arrays.xml
+++ b/res/values-es/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (gráficos)"</item>
<item msgid="1340692776955662664">"Pila de llamadas en glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Límite estándar"</item>
<item msgid="4071574792028999443">"Sin procesos en segundo plano"</item>
diff --git a/res/values-et/arrays.xml b/res/values-et/arrays.xml
index e7572fe..146976d 100644
--- a/res/values-et/arrays.xml
+++ b/res/values-et/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (graafika)"</item>
<item msgid="1340692776955662664">"Helistamise virn glGetErrori kohta"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standardpiir"</item>
<item msgid="4071574792028999443">"Taustaprotsessideta"</item>
diff --git a/res/values-fa/arrays.xml b/res/values-fa/arrays.xml
index eded58f..322ced3 100644
--- a/res/values-fa/arrays.xml
+++ b/res/values-fa/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (تصاویر گرافیکی)"</item>
<item msgid="1340692776955662664">"فراخوانی پشته در glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"حد استاندارد"</item>
<item msgid="4071574792028999443">"بدون پردازش در پسزمینه"</item>
diff --git a/res/values-fi/arrays.xml b/res/values-fi/arrays.xml
index 6f8920a..f06a5de 100644
--- a/res/values-fi/arrays.xml
+++ b/res/values-fi/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafiikka)"</item>
<item msgid="1340692776955662664">"Kutsu pinoa, jos glGetError tapaht."</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Vakioraja"</item>
<item msgid="4071574792028999443">"Ei taustaprosesseja"</item>
diff --git a/res/values-fr/arrays.xml b/res/values-fr/arrays.xml
index d665ac4..ef82e67 100644
--- a/res/values-fr/arrays.xml
+++ b/res/values-fr/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (graphismes)"</item>
<item msgid="1340692776955662664">"Appeler une pile sur glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Limite standard"</item>
<item msgid="4071574792028999443">"Aucun processus en arrière-plan"</item>
diff --git a/res/values-hi/arrays.xml b/res/values-hi/arrays.xml
index 6bb4ae1..65faeed 100644
--- a/res/values-hi/arrays.xml
+++ b/res/values-hi/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (ग्राफ़िक)"</item>
<item msgid="1340692776955662664">"glGetError पर स्टैक कॉल करें"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"मानक सीमा"</item>
<item msgid="4071574792028999443">"कोई पृष्ठभूमि प्रक्रियाएं नहीं"</item>
diff --git a/res/values-hr/arrays.xml b/res/values-hr/arrays.xml
index e47dc27..02f2e3d 100644
--- a/res/values-hr/arrays.xml
+++ b/res/values-hr/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafika)"</item>
<item msgid="1340692776955662664">"Pozivni snop za funkciju glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standardna granica"</item>
<item msgid="4071574792028999443">"Nema pozadinskih procesa"</item>
diff --git a/res/values-hu/arrays.xml b/res/values-hu/arrays.xml
index f359241..dd1691c 100644
--- a/res/values-hu/arrays.xml
+++ b/res/values-hu/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafika)"</item>
<item msgid="1340692776955662664">"Verem meghívása glGetError esetén"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Normál korlátozás"</item>
<item msgid="4071574792028999443">"Nincsenek háttérfolyamatok"</item>
diff --git a/res/values-in/arrays.xml b/res/values-in/arrays.xml
index d4b0fbe..d166e47 100644
--- a/res/values-in/arrays.xml
+++ b/res/values-in/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Grafis)"</item>
<item msgid="1340692776955662664">"Panggil tumpukan di glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Batas standar"</item>
<item msgid="4071574792028999443">"Tanpa proses latar belakang"</item>
diff --git a/res/values-it/arrays.xml b/res/values-it/arrays.xml
index d3e4567..e3aecb8 100644
--- a/res/values-it/arrays.xml
+++ b/res/values-it/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafica)"</item>
<item msgid="1340692776955662664">"Stack di chiamate su glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Limite standard"</item>
<item msgid="4071574792028999443">"Nessun processo in background"</item>
diff --git a/res/values-iw/arrays.xml b/res/values-iw/arrays.xml
index 8702937..2110c4b 100644
--- a/res/values-iw/arrays.xml
+++ b/res/values-iw/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (גרפיקה)"</item>
<item msgid="1340692776955662664">"Call Stack ב-glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"הגבלת תקן"</item>
<item msgid="4071574792028999443">"אין תהליכים ברקע"</item>
diff --git a/res/values-ja/arrays.xml b/res/values-ja/arrays.xml
index df31fa3..ea6d822 100644
--- a/res/values-ja/arrays.xml
+++ b/res/values-ja/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace(画像)"</item>
<item msgid="1340692776955662664">"glGetErrorでのスタック呼び出し"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"標準の上限"</item>
<item msgid="4071574792028999443">"バックグラウンドプロセスを使用しない"</item>
diff --git a/res/values-ko/arrays.xml b/res/values-ko/arrays.xml
index fa5bcce..d25a028 100644
--- a/res/values-ko/arrays.xml
+++ b/res/values-ko/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace(그래픽)"</item>
<item msgid="1340692776955662664">"glGetError의 스택 호출"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"표준 제한"</item>
<item msgid="4071574792028999443">"백그라운드 프로세스 없음"</item>
diff --git a/res/values-lt/arrays.xml b/res/values-lt/arrays.xml
index 600f00c..c1f97ff 100644
--- a/res/values-lt/arrays.xml
+++ b/res/values-lt/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"„Systrace“ (grafika)"</item>
<item msgid="1340692776955662664">"Kreipinių dėklas „glGetError“"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standartinis apribojimas"</item>
<item msgid="4071574792028999443">"Nėra fono procesų"</item>
diff --git a/res/values-lv/arrays.xml b/res/values-lv/arrays.xml
index b266f19..6b7cd52 100644
--- a/res/values-lv/arrays.xml
+++ b/res/values-lv/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafika)"</item>
<item msgid="1340692776955662664">"glGetError: zvanu kaskāde"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standarta ierobežojums"</item>
<item msgid="4071574792028999443">"Nav fona procesu"</item>
diff --git a/res/values-ms/arrays.xml b/res/values-ms/arrays.xml
index ccf6d18..bbd8cfe 100644
--- a/res/values-ms/arrays.xml
+++ b/res/values-ms/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Grafik)"</item>
<item msgid="1340692776955662664">"Tindanan panggilan pada glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Had standard"</item>
<item msgid="4071574792028999443">"Tiada proses latar belakang"</item>
diff --git a/res/values-nb/arrays.xml b/res/values-nb/arrays.xml
index b22db91..af585cd 100644
--- a/res/values-nb/arrays.xml
+++ b/res/values-nb/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafikk)"</item>
<item msgid="1340692776955662664">"Ring stabel på glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standard grense"</item>
<item msgid="4071574792028999443">"Ingen bakgrunnsprosesser"</item>
diff --git a/res/values-nl/arrays.xml b/res/values-nl/arrays.xml
index dfa8473..74ff989 100644
--- a/res/values-nl/arrays.xml
+++ b/res/values-nl/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (graphics)"</item>
<item msgid="1340692776955662664">"Oproepstack op glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standaardlimiet"</item>
<item msgid="4071574792028999443">"Geen achtergrondprocessen"</item>
diff --git a/res/values-pl/arrays.xml b/res/values-pl/arrays.xml
index 103b112..39b4f13 100644
--- a/res/values-pl/arrays.xml
+++ b/res/values-pl/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafika)"</item>
<item msgid="1340692776955662664">"Stos wywołań funkcji glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standardowy limit"</item>
<item msgid="4071574792028999443">"Brak procesów w tle"</item>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index a5be3e9..3d95d97 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -1671,7 +1671,7 @@
<string name="data_usage_summary_title" msgid="3804110657238092929">"Użycie danych"</string>
<string name="data_usage_cycle" msgid="5652529796195787949">"Cykl transmisji danych"</string>
<string name="data_usage_menu_roaming" msgid="8042359966835203296">"Dane w roamingu"</string>
- <string name="data_usage_menu_restrict_background" msgid="1989394568592253331">"Ogranicz przesył danych w tle"</string>
+ <string name="data_usage_menu_restrict_background" msgid="1989394568592253331">"Ogranicz dane w tle"</string>
<string name="data_usage_menu_split_4g" msgid="5322857680792601899">"Oddzielnie transmisja danych 4G"</string>
<string name="data_usage_menu_show_wifi" msgid="8266875319417201085">"Pokaż użycie Wi-Fi"</string>
<string name="data_usage_menu_show_ethernet" msgid="5181361208532314097">"Pokaż użycie sieci Ethernet"</string>
diff --git a/res/values-pt-rPT/arrays.xml b/res/values-pt-rPT/arrays.xml
index 2ac693a..6ebb360 100644
--- a/res/values-pt-rPT/arrays.xml
+++ b/res/values-pt-rPT/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Gráficos)"</item>
<item msgid="1340692776955662664">"Pilha de chamadas em glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Limite padrão"</item>
<item msgid="4071574792028999443">"Sem processos em segundo plano"</item>
diff --git a/res/values-pt/arrays.xml b/res/values-pt/arrays.xml
index 293e630..70e34c6 100644
--- a/res/values-pt/arrays.xml
+++ b/res/values-pt/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (gráficos)"</item>
<item msgid="1340692776955662664">"Pilha de chamadas em glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Limite padrão"</item>
<item msgid="4071574792028999443">"Sem processos em segundo plano"</item>
diff --git a/res/values-rm/arrays.xml b/res/values-rm/arrays.xml
index 4f0f24f..fe16624 100644
--- a/res/values-rm/arrays.xml
+++ b/res/values-rm/arrays.xml
@@ -187,8 +187,9 @@
<!-- no translation found for enable_opengl_traces_entries:2 (5397807424362304288) -->
<!-- no translation found for enable_opengl_traces_entries:3 (1340692776955662664) -->
<!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<!-- no translation found for app_process_limit_entries:0 (3401625457385943795) -->
<!-- no translation found for app_process_limit_entries:1 (4071574792028999443) -->
<!-- no translation found for app_process_limit_entries:2 (4810006996171705398) -->
diff --git a/res/values-ro/arrays.xml b/res/values-ro/arrays.xml
index 377ade0..ca32197 100644
--- a/res/values-ro/arrays.xml
+++ b/res/values-ro/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (imagini)"</item>
<item msgid="1340692776955662664">"Apelaţi stiva pentru glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Limita standard"</item>
<item msgid="4071574792028999443">"Nu există procese de fundal"</item>
diff --git a/res/values-ru/arrays.xml b/res/values-ru/arrays.xml
index 5cf7487..29e4c32 100644
--- a/res/values-ru/arrays.xml
+++ b/res/values-ru/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (графика)"</item>
<item msgid="1340692776955662664">"Список вызовов в glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Стандартное ограничение"</item>
<item msgid="4071574792028999443">"Без фоновых процессов"</item>
diff --git a/res/values-sk/arrays.xml b/res/values-sk/arrays.xml
index 94442b4..50b8715 100644
--- a/res/values-sk/arrays.xml
+++ b/res/values-sk/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafika)"</item>
<item msgid="1340692776955662664">"Volať zásobník pri chybe glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Štandardný limit"</item>
<item msgid="4071574792028999443">"Žiadne procesy na pozadí"</item>
diff --git a/res/values-sl/arrays.xml b/res/values-sl/arrays.xml
index 604effc..21c1a03 100644
--- a/res/values-sl/arrays.xml
+++ b/res/values-sl/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafika)"</item>
<item msgid="1340692776955662664">"Pri napaki glGetError kliči sklad"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standardna omejitev"</item>
<item msgid="4071574792028999443">"Ni postopkov v ozadju"</item>
diff --git a/res/values-sr/arrays.xml b/res/values-sr/arrays.xml
index ed08a71..183262f 100644
--- a/res/values-sr/arrays.xml
+++ b/res/values-sr/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (графика)"</item>
<item msgid="1340692776955662664">"Групно позивање функције glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Стандардно ограничење"</item>
<item msgid="4071574792028999443">"Без позадинских процеса"</item>
diff --git a/res/values-sv/arrays.xml b/res/values-sv/arrays.xml
index e8ebe85..97bd583 100644
--- a/res/values-sv/arrays.xml
+++ b/res/values-sv/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (grafik)"</item>
<item msgid="1340692776955662664">"Anropsstacken på glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standardgräns"</item>
<item msgid="4071574792028999443">"Inga bakgrundsprocesser"</item>
diff --git a/res/values-sw/arrays.xml b/res/values-sw/arrays.xml
index 284dcc2..f3d64b8 100644
--- a/res/values-sw/arrays.xml
+++ b/res/values-sw/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Michoro)"</item>
<item msgid="1340692776955662664">"Simu imekwama kwenye glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Kiwango cha wastani"</item>
<item msgid="4071574792028999443">"Hakuna mchakato wa mandari nyuma"</item>
diff --git a/res/values-th/arrays.xml b/res/values-th/arrays.xml
index 6f388a4..c7a195a 100644
--- a/res/values-th/arrays.xml
+++ b/res/values-th/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (กราฟิก)"</item>
<item msgid="1340692776955662664">"ชุดรายการเรียกใน glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"ขีดจำกัดมาตรฐาน"</item>
<item msgid="4071574792028999443">"ไม่มีกระบวนการพื้นหลัง"</item>
diff --git a/res/values-tl/arrays.xml b/res/values-tl/arrays.xml
index b790d9a..508821a 100644
--- a/res/values-tl/arrays.xml
+++ b/res/values-tl/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Graphics)"</item>
<item msgid="1340692776955662664">"Stack ng tawag sa glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Karaniwang limitasyon"</item>
<item msgid="4071574792028999443">"Walang mga proseso sa background"</item>
diff --git a/res/values-tr/arrays.xml b/res/values-tr/arrays.xml
index 2ef4b80..ef1d2c8 100644
--- a/res/values-tr/arrays.xml
+++ b/res/values-tr/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Grafik)"</item>
<item msgid="1340692776955662664">"glGetError\'da yığın çağır"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Standart sınır"</item>
<item msgid="4071574792028999443">"Arka planda işlem yok"</item>
diff --git a/res/values-uk/arrays.xml b/res/values-uk/arrays.xml
index b97d7a2..11de9f9 100644
--- a/res/values-uk/arrays.xml
+++ b/res/values-uk/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (графіка)"</item>
<item msgid="1340692776955662664">"Стек викликів glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Стандартне обмеження"</item>
<item msgid="4071574792028999443">"Без фонових процесів"</item>
diff --git a/res/values-vi/arrays.xml b/res/values-vi/arrays.xml
index cd9e08c..75566c1 100644
--- a/res/values-vi/arrays.xml
+++ b/res/values-vi/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (Đồ họa)"</item>
<item msgid="1340692776955662664">"Chồng lệnh trên glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Giới hạn tiêu chuẩn"</item>
<item msgid="4071574792028999443">"Không có quá trình nền"</item>
diff --git a/res/values-zh-rCN/arrays.xml b/res/values-zh-rCN/arrays.xml
index a91f3aa..b2e206a 100644
--- a/res/values-zh-rCN/arrays.xml
+++ b/res/values-zh-rCN/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace(图形)"</item>
<item msgid="1340692776955662664">"glGetError 上的调用堆栈"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"标准限制"</item>
<item msgid="4071574792028999443">"不允许后台进程"</item>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index d9ec858..12cdcd2 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -1671,7 +1671,7 @@
<string name="data_usage_summary_title" msgid="3804110657238092929">"流量使用情况"</string>
<string name="data_usage_cycle" msgid="5652529796195787949">"流量使用周期"</string>
<string name="data_usage_menu_roaming" msgid="8042359966835203296">"移动数据网络漫游"</string>
- <string name="data_usage_menu_restrict_background" msgid="1989394568592253331">"限制后台数据"</string>
+ <string name="data_usage_menu_restrict_background" msgid="1989394568592253331">"限制后台流量"</string>
<string name="data_usage_menu_split_4g" msgid="5322857680792601899">"单独显示 4G 流量"</string>
<string name="data_usage_menu_show_wifi" msgid="8266875319417201085">"显示 Wi-Fi 使用情况"</string>
<string name="data_usage_menu_show_ethernet" msgid="5181361208532314097">"显示以太网使用情况"</string>
diff --git a/res/values-zh-rTW/arrays.xml b/res/values-zh-rTW/arrays.xml
index a0e7271..381e3dc 100644
--- a/res/values-zh-rTW/arrays.xml
+++ b/res/values-zh-rTW/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"Systrace (圖片)"</item>
<item msgid="1340692776955662664">"glGetError 的呼叫堆疊"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"標準限制"</item>
<item msgid="4071574792028999443">"不執行背景處理程序"</item>
diff --git a/res/values-zu/arrays.xml b/res/values-zu/arrays.xml
index 733c358..ae6efe6 100644
--- a/res/values-zu/arrays.xml
+++ b/res/values-zu/arrays.xml
@@ -266,9 +266,9 @@
<item msgid="5397807424362304288">"i-Systrace (izithombe)"</item>
<item msgid="1340692776955662664">"Isitaki socingo ku-glGetError"</item>
</string-array>
- <!-- no translation found for track_frame_time_entries:0 (2193584639058893150) -->
- <!-- no translation found for track_frame_time_entries:1 (4252257757804124535) -->
- <!-- no translation found for track_frame_time_entries:2 (1851438178120770973) -->
+ <!-- no translation found for track_frame_time_entries:1 (2751513398307949636) -->
+ <!-- no translation found for track_frame_time_entries:2 (8272260411216018353) -->
+ <!-- no translation found for track_frame_time_entries:3 (120512413928262547) -->
<string-array name="app_process_limit_entries">
<item msgid="3401625457385943795">"Isilanganiso esivamile"</item>
<item msgid="4071574792028999443">"Azikho izinqubo zesizinda"</item>
diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index b0968f0..e5990c5 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -548,6 +548,25 @@
<item>auto</item>
</string-array>
+ <!-- Names of categories of app ops tabs -->
+ <string-array name="app_ops_categories">
+ <item>Location</item>
+ <item>Personal</item>
+ <item>Device</item>
+ </string-array>
+
+ <!-- User display names for app ops codes -->
+ <string-array name="app_ops_names">
+ <item>Coarse Location</item>
+ <item>Fine Location</item>
+ <item>GPS</item>
+ <item>Vibrate</item>
+ <item>Contacts: Read</item>
+ <item>Contacts: Write</item>
+ <item>Call Log: Read</item>
+ <item>Call Log: Write</item>
+ </string-array>
+
<!-- Titles for the list of long press timeout options. -->
<string-array name="long_press_timeout_selector_titles">
<!-- A title for the option for short long-press timeout [CHAR LIMIT=25] -->
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 426162f..28be61d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -2698,6 +2698,12 @@
If you turn off notifications for this app, you may miss important alerts and updates.
</string>
+ <!-- App Ops Settings --> <skip />
+ <!-- [CHAR LIMIT=NONE] App ops settings title, on main settings screen. If clicked, the user is taken to a settings screen for app operations -->
+ <string name="app_ops_settings">App ops</string>
+ <!-- [CHAR LIMIT=NONE] Time label for an operation that is currently running. -->
+ <string name="app_ops_running">Running</string>
+
<!-- [CHAR LIMIT=25] Services settings screen, setting option name for the user to go to the screen to view app storage use -->
<string name="storageuse_settings_title">Storage use</string>
<!-- Services settings screen, setting option summary for the user to go to the screen to app storage use -->
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index f850f39..149561d 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -805,6 +805,7 @@
public static class DeviceInfoSettingsActivity extends Settings { /* empty */ }
public static class ApplicationSettingsActivity extends Settings { /* empty */ }
public static class ManageApplicationsActivity extends Settings { /* empty */ }
+ public static class AppOpsSummaryActivity extends Settings { /* empty */ }
public static class StorageUseActivity extends Settings { /* empty */ }
public static class DevelopmentSettingsActivity extends Settings { /* empty */ }
public static class AccessibilitySettingsActivity extends Settings { /* empty */ }
diff --git a/src/com/android/settings/applications/AppOpsCategory.java b/src/com/android/settings/applications/AppOpsCategory.java
new file mode 100644
index 0000000..e9254f9
--- /dev/null
+++ b/src/com/android/settings/applications/AppOpsCategory.java
@@ -0,0 +1,487 @@
+package com.android.settings.applications;
+
+import android.app.AppOpsManager;
+import android.app.ListFragment;
+import android.app.LoaderManager;
+import android.content.AsyncTaskLoader;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.Loader;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.text.format.DateUtils;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import java.io.File;
+import java.text.Collator;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+
+import com.android.settings.R;
+
+public class AppOpsCategory extends ListFragment implements
+ LoaderManager.LoaderCallbacks<List<AppOpsCategory.AppOpEntry>> {
+
+ // This is the Adapter being used to display the list's data.
+ AppListAdapter mAdapter;
+
+ /**
+ * This class holds the per-item data in our Loader.
+ */
+ public static class AppEntry {
+ private final AppListLoader mLoader;
+ private final ApplicationInfo mInfo;
+ private final File mApkFile;
+ private String mLabel;
+ private Drawable mIcon;
+ private boolean mMounted;
+
+ public AppEntry(AppListLoader loader, ApplicationInfo info) {
+ mLoader = loader;
+ mInfo = info;
+ mApkFile = new File(info.sourceDir);
+ }
+
+ public ApplicationInfo getApplicationInfo() {
+ return mInfo;
+ }
+
+ public String getLabel() {
+ return mLabel;
+ }
+
+ public Drawable getIcon() {
+ if (mIcon == null) {
+ if (mApkFile.exists()) {
+ mIcon = mInfo.loadIcon(mLoader.mPm);
+ return mIcon;
+ } else {
+ mMounted = false;
+ }
+ } else if (!mMounted) {
+ // If the app wasn't mounted but is now mounted, reload
+ // its icon.
+ if (mApkFile.exists()) {
+ mMounted = true;
+ mIcon = mInfo.loadIcon(mLoader.mPm);
+ return mIcon;
+ }
+ } else {
+ return mIcon;
+ }
+
+ return mLoader.getContext().getResources().getDrawable(
+ android.R.drawable.sym_def_app_icon);
+ }
+
+ @Override public String toString() {
+ return mLabel;
+ }
+
+ void loadLabel(Context context) {
+ if (mLabel == null || !mMounted) {
+ if (!mApkFile.exists()) {
+ mMounted = false;
+ mLabel = mInfo.packageName;
+ } else {
+ mMounted = true;
+ CharSequence label = mInfo.loadLabel(context.getPackageManager());
+ mLabel = label != null ? label.toString() : mInfo.packageName;
+ }
+ }
+ }
+ }
+
+ public AppOpsCategory() {
+ }
+
+ public AppOpsCategory(int[] ops) {
+ Bundle args = new Bundle();
+ args.putIntArray("ops", ops);
+ setArguments(args);
+ }
+
+ /**
+ * This class holds the per-item data in our Loader.
+ */
+ public static class AppOpEntry {
+ private final AppOpsManager.PackageOps mPkgOps;
+ private final AppOpsManager.OpEntry mOp;
+ private final AppEntry mApp;
+
+ public AppOpEntry(AppOpsManager.PackageOps pkg, AppOpsManager.OpEntry op, AppEntry app) {
+ mPkgOps = pkg;
+ mOp = op;
+ mApp = app;
+ }
+
+ public AppEntry getAppEntry() {
+ return mApp;
+ }
+
+ public AppOpsManager.PackageOps getPackageOps() {
+ return mPkgOps;
+ }
+
+ public AppOpsManager.OpEntry getOpEntry() {
+ return mOp;
+ }
+
+ public long getTime() {
+ return mOp.getTime();
+ }
+
+ @Override public String toString() {
+ return mApp.getLabel();
+ }
+ }
+
+ /**
+ * Perform alphabetical comparison of application entry objects.
+ */
+ public static final Comparator<AppOpEntry> APP_OP_COMPARATOR = new Comparator<AppOpEntry>() {
+ private final Collator sCollator = Collator.getInstance();
+ @Override
+ public int compare(AppOpEntry object1, AppOpEntry object2) {
+ if (object1.getOpEntry().isRunning() != object2.getOpEntry().isRunning()) {
+ // Currently running ops go first.
+ return object1.getOpEntry().isRunning() ? -1 : 1;
+ }
+ if (object1.getTime() != object2.getTime()) {
+ // More recent times go first.
+ return object1.getTime() > object2.getTime() ? -1 : 1;
+ }
+ return sCollator.compare(object1.getAppEntry().getLabel(),
+ object2.getAppEntry().getLabel());
+ }
+ };
+
+ /**
+ * Helper for determining if the configuration has changed in an interesting
+ * way so we need to rebuild the app list.
+ */
+ public static class InterestingConfigChanges {
+ final Configuration mLastConfiguration = new Configuration();
+ int mLastDensity;
+
+ boolean applyNewConfig(Resources res) {
+ int configChanges = mLastConfiguration.updateFrom(res.getConfiguration());
+ boolean densityChanged = mLastDensity != res.getDisplayMetrics().densityDpi;
+ if (densityChanged || (configChanges&(ActivityInfo.CONFIG_LOCALE
+ |ActivityInfo.CONFIG_UI_MODE|ActivityInfo.CONFIG_SCREEN_LAYOUT)) != 0) {
+ mLastDensity = res.getDisplayMetrics().densityDpi;
+ return true;
+ }
+ return false;
+ }
+ }
+
+ /**
+ * Helper class to look for interesting changes to the installed apps
+ * so that the loader can be updated.
+ */
+ public static class PackageIntentReceiver extends BroadcastReceiver {
+ final AppListLoader mLoader;
+
+ public PackageIntentReceiver(AppListLoader loader) {
+ mLoader = loader;
+ IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
+ filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
+ filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
+ filter.addDataScheme("package");
+ mLoader.getContext().registerReceiver(this, filter);
+ // Register for events related to sdcard installation.
+ IntentFilter sdFilter = new IntentFilter();
+ sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE);
+ sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE);
+ mLoader.getContext().registerReceiver(this, sdFilter);
+ }
+
+ @Override public void onReceive(Context context, Intent intent) {
+ // Tell the loader about the change.
+ mLoader.onContentChanged();
+ }
+ }
+
+ /**
+ * A custom Loader that loads all of the installed applications.
+ */
+ public static class AppListLoader extends AsyncTaskLoader<List<AppOpEntry>> {
+ final InterestingConfigChanges mLastConfig = new InterestingConfigChanges();
+ final AppOpsManager mAppOps;
+ final PackageManager mPm;
+ final int[] mOps;
+
+ final HashMap<String, AppEntry> mAppEntries = new HashMap<String, AppEntry>();
+
+ List<AppOpEntry> mApps;
+ PackageIntentReceiver mPackageObserver;
+
+ public AppListLoader(Context context, int[] ops) {
+ super(context);
+ mAppOps = (AppOpsManager)context.getSystemService(Context.APP_OPS_SERVICE);
+ mPm = context.getPackageManager();
+ mOps = ops;
+ }
+
+ @Override public List<AppOpEntry> loadInBackground() {
+ final Context context = getContext();
+
+ List<AppOpsManager.PackageOps> pkgs = mAppOps.getPackagesForOps(mOps);
+ List<AppOpEntry> entries = new ArrayList<AppOpEntry>(pkgs.size());
+ for (int i=0; i<pkgs.size(); i++) {
+ AppOpsManager.PackageOps pkgOps = pkgs.get(i);
+ AppEntry appEntry = mAppEntries.get(pkgOps.getPackageName());
+ if (appEntry == null) {
+ ApplicationInfo appInfo = null;
+ try {
+ appInfo = mPm.getApplicationInfo(pkgOps.getPackageName(),
+ PackageManager.GET_DISABLED_COMPONENTS
+ | PackageManager.GET_UNINSTALLED_PACKAGES);
+ } catch (PackageManager.NameNotFoundException e) {
+ }
+ appEntry = new AppEntry(this, appInfo);
+ appEntry.loadLabel(context);
+ mAppEntries.put(pkgOps.getPackageName(), appEntry);
+ }
+ for (int j=0; j<pkgOps.getOps().size(); j++) {
+ AppOpsManager.OpEntry opEntry = pkgOps.getOps().get(j);
+ AppOpEntry entry = new AppOpEntry(pkgOps, opEntry, appEntry);
+ entries.add(entry);
+ }
+ }
+
+ // Sort the list.
+ Collections.sort(entries, APP_OP_COMPARATOR);
+
+ // Done!
+ return entries;
+ }
+
+ /**
+ * Called when there is new data to deliver to the client. The
+ * super class will take care of delivering it; the implementation
+ * here just adds a little more logic.
+ */
+ @Override public void deliverResult(List<AppOpEntry> apps) {
+ if (isReset()) {
+ // An async query came in while the loader is stopped. We
+ // don't need the result.
+ if (apps != null) {
+ onReleaseResources(apps);
+ }
+ }
+ List<AppOpEntry> oldApps = apps;
+ mApps = apps;
+
+ if (isStarted()) {
+ // If the Loader is currently started, we can immediately
+ // deliver its results.
+ super.deliverResult(apps);
+ }
+
+ // At this point we can release the resources associated with
+ // 'oldApps' if needed; now that the new result is delivered we
+ // know that it is no longer in use.
+ if (oldApps != null) {
+ onReleaseResources(oldApps);
+ }
+ }
+
+ /**
+ * Handles a request to start the Loader.
+ */
+ @Override protected void onStartLoading() {
+ if (mApps != null) {
+ // If we currently have a result available, deliver it
+ // immediately.
+ deliverResult(mApps);
+ }
+
+ // Start watching for changes in the app data.
+ if (mPackageObserver == null) {
+ mPackageObserver = new PackageIntentReceiver(this);
+ }
+
+ // Has something interesting in the configuration changed since we
+ // last built the app list?
+ boolean configChange = mLastConfig.applyNewConfig(getContext().getResources());
+
+ if (takeContentChanged() || mApps == null || configChange) {
+ // If the data has changed since the last time it was loaded
+ // or is not currently available, start a load.
+ forceLoad();
+ }
+ }
+
+ /**
+ * Handles a request to stop the Loader.
+ */
+ @Override protected void onStopLoading() {
+ // Attempt to cancel the current load task if possible.
+ cancelLoad();
+ }
+
+ /**
+ * Handles a request to cancel a load.
+ */
+ @Override public void onCanceled(List<AppOpEntry> apps) {
+ super.onCanceled(apps);
+
+ // At this point we can release the resources associated with 'apps'
+ // if needed.
+ onReleaseResources(apps);
+ }
+
+ /**
+ * Handles a request to completely reset the Loader.
+ */
+ @Override protected void onReset() {
+ super.onReset();
+
+ // Ensure the loader is stopped
+ onStopLoading();
+
+ // At this point we can release the resources associated with 'apps'
+ // if needed.
+ if (mApps != null) {
+ onReleaseResources(mApps);
+ mApps = null;
+ }
+
+ // Stop monitoring for changes.
+ if (mPackageObserver != null) {
+ getContext().unregisterReceiver(mPackageObserver);
+ mPackageObserver = null;
+ }
+ }
+
+ /**
+ * Helper function to take care of releasing resources associated
+ * with an actively loaded data set.
+ */
+ protected void onReleaseResources(List<AppOpEntry> apps) {
+ // For a simple List<> there is nothing to do. For something
+ // like a Cursor, we would close it here.
+ }
+ }
+
+ public static class AppListAdapter extends ArrayAdapter<AppOpEntry> {
+ private final LayoutInflater mInflater;
+ private final CharSequence[] mOpNames;
+ private final CharSequence mRunningStr;
+
+ public AppListAdapter(Context context) {
+ super(context, android.R.layout.simple_list_item_2);
+ mInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ mOpNames = context.getResources().getTextArray(R.array.app_ops_names);
+ mRunningStr = context.getResources().getText(R.string.app_ops_running);
+ }
+
+ public void setData(List<AppOpEntry> data) {
+ clear();
+ if (data != null) {
+ addAll(data);
+ }
+ }
+
+ CharSequence opTimeToString(AppOpsManager.OpEntry op) {
+ if (op.isRunning()) {
+ return "Running";
+ }
+ return DateUtils.getRelativeTimeSpanString(op.getTime(),
+ System.currentTimeMillis(),
+ DateUtils.MINUTE_IN_MILLIS,
+ DateUtils.FORMAT_ABBREV_RELATIVE);
+ }
+
+ /**
+ * Populate new items in the list.
+ */
+ @Override public View getView(int position, View convertView, ViewGroup parent) {
+ View view;
+
+ if (convertView == null) {
+ view = mInflater.inflate(R.layout.app_ops_item, parent, false);
+ } else {
+ view = convertView;
+ }
+
+ AppOpEntry item = getItem(position);
+ ((ImageView)view.findViewById(R.id.app_icon)).setImageDrawable(
+ item.getAppEntry().getIcon());
+ ((TextView)view.findViewById(R.id.app_name)).setText(item.getAppEntry().getLabel());
+ ((TextView)view.findViewById(R.id.op_name)).setText(
+ mOpNames[item.getOpEntry().getOp()]);
+ ((TextView)view.findViewById(R.id.op_time)).setText(opTimeToString(item.getOpEntry()));
+
+ return view;
+ }
+ }
+
+ @Override public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ // Give some text to display if there is no data. In a real
+ // application this would come from a resource.
+ setEmptyText("No applications");
+
+ // We have a menu item to show in action bar.
+ setHasOptionsMenu(true);
+
+ // Create an empty adapter we will use to display the loaded data.
+ mAdapter = new AppListAdapter(getActivity());
+ setListAdapter(mAdapter);
+
+ // Start out with a progress indicator.
+ setListShown(false);
+
+ // Prepare the loader. Either re-connect with an existing one,
+ // or start a new one.
+ getLoaderManager().initLoader(0, null, this);
+ }
+
+ @Override public void onListItemClick(ListView l, View v, int position, long id) {
+ // Insert desired behavior here.
+ Log.i("LoaderCustom", "Item clicked: " + id);
+ }
+
+ @Override public Loader<List<AppOpEntry>> onCreateLoader(int id, Bundle args) {
+ Bundle fargs = getArguments();
+ return new AppListLoader(getActivity(), fargs != null ? fargs.getIntArray("ops") : null);
+ }
+
+ @Override public void onLoadFinished(Loader<List<AppOpEntry>> loader, List<AppOpEntry> data) {
+ // Set the new data in the adapter.
+ mAdapter.setData(data);
+
+ // The list should now be shown.
+ if (isResumed()) {
+ setListShown(true);
+ } else {
+ setListShownNoAnimation(true);
+ }
+ }
+
+ @Override public void onLoaderReset(Loader<List<AppOpEntry>> loader) {
+ // Clear the data in the adapter.
+ mAdapter.setData(null);
+ }
+}
diff --git a/src/com/android/settings/applications/AppOpsSummary.java b/src/com/android/settings/applications/AppOpsSummary.java
new file mode 100644
index 0000000..dd34679
--- /dev/null
+++ b/src/com/android/settings/applications/AppOpsSummary.java
@@ -0,0 +1,106 @@
+package com.android.settings.applications;
+
+import android.app.AppOpsManager;
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.os.Bundle;
+import android.preference.PreferenceFrameLayout;
+import android.support.v13.app.FragmentPagerAdapter;
+import android.support.v4.view.PagerTabStrip;
+import android.support.v4.view.ViewPager;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.settings.R;
+
+public class AppOpsSummary extends Fragment {
+ // layout inflater object used to inflate views
+ private LayoutInflater mInflater;
+
+ private ViewGroup mContentContainer;
+ private View mRootView;
+ private ViewPager mViewPager;
+
+ CharSequence[] mPageNames;
+ static int[][] sPageOps = new int[][] {
+ // "Location" page.
+ new int[] { AppOpsManager.OP_COARSE_LOCATION, AppOpsManager.OP_FINE_LOCATION,
+ AppOpsManager.OP_GPS},
+
+ // "Personal" page.
+ new int[] { AppOpsManager.OP_READ_CONTACTS, AppOpsManager.OP_WRITE_CONTACTS,
+ AppOpsManager.OP_READ_CALL_LOG, AppOpsManager.OP_WRITE_CALL_LOG },
+
+ // "Device" page.
+ new int[] { AppOpsManager.OP_VIBRATE },
+ };
+
+ int mCurPos;
+
+ class MyPagerAdapter extends FragmentPagerAdapter implements ViewPager.OnPageChangeListener {
+
+ public MyPagerAdapter(FragmentManager fm) {
+ super(fm);
+ }
+
+ @Override
+ public Fragment getItem(int position) {
+ return new AppOpsCategory(sPageOps[position]);
+ }
+
+ @Override
+ public int getCount() {
+ return sPageOps.length;
+ }
+
+ @Override
+ public CharSequence getPageTitle(int position) {
+ return mPageNames[position];
+ }
+
+ @Override
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ mCurPos = position;
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+ if (state == ViewPager.SCROLL_STATE_IDLE) {
+ //updateCurrentTab(mCurPos);
+ }
+ }
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ // initialize the inflater
+ mInflater = inflater;
+
+ View rootView = mInflater.inflate(R.layout.app_ops_summary,
+ container, false);
+ mContentContainer = container;
+ mRootView = rootView;
+
+ mPageNames = getResources().getTextArray(R.array.app_ops_categories);
+
+ mViewPager = (ViewPager) rootView.findViewById(R.id.pager);
+ MyPagerAdapter adapter = new MyPagerAdapter(getChildFragmentManager());
+ mViewPager.setAdapter(adapter);
+ mViewPager.setOnPageChangeListener(adapter);
+ PagerTabStrip tabs = (PagerTabStrip) rootView.findViewById(R.id.tabs);
+ tabs.setTabIndicatorColorResource(android.R.color.holo_blue_light);
+
+ // We have to do this now because PreferenceFrameLayout looks at it
+ // only when the view is added.
+ if (container instanceof PreferenceFrameLayout) {
+ ((PreferenceFrameLayout.LayoutParams) rootView.getLayoutParams()).removeBorders = true;
+ }
+
+ return rootView;
+ }
+}
diff --git a/src/com/android/settings/wifi/WifiConfigController.java b/src/com/android/settings/wifi/WifiConfigController.java
index 2598a0e..bf5f642 100644
--- a/src/com/android/settings/wifi/WifiConfigController.java
+++ b/src/com/android/settings/wifi/WifiConfigController.java
@@ -63,10 +63,6 @@
*/
public class WifiConfigController implements TextWatcher,
View.OnClickListener, AdapterView.OnItemSelectedListener {
- private static final String KEYSTORE_SPACE = WifiConfiguration.KEYSTORE_URI;
-
- private static final String PHASE2_PREFIX = "auth=";
-
private final WifiConfigUiBase mConfigUi;
private final View mView;
private final AccessPoint mAccessPoint;
@@ -79,6 +75,8 @@
private int mAccessPointSecurity;
private TextView mPasswordView;
+ private String unspecifiedCert = "unspecified";
+
private Spinner mSecuritySpinner;
private Spinner mEapMethodSpinner;
private Spinner mEapCaCertSpinner;
@@ -124,22 +122,6 @@
private final Handler mTextViewChangedHandler;
- static boolean requireKeyStore(WifiConfiguration config) {
- if (config == null) {
- return false;
- }
- if (!TextUtils.isEmpty(config.key_id.value())) {
- return true;
- }
- String values[] = { config.ca_cert.value(), config.client_cert.value() };
- for (String value : values) {
- if (value != null && value.startsWith(KEYSTORE_SPACE)) {
- return true;
- }
- }
- return false;
- }
-
public WifiConfigController(
WifiConfigUiBase parent, View view, AccessPoint accessPoint, boolean edit) {
mConfigUi = parent;
@@ -155,6 +137,7 @@
final Context context = mConfigUi.getContext();
final Resources resources = context.getResources();
+ unspecifiedCert = context.getString(R.string.wifi_unspecified);
mIpSettingsSpinner = (Spinner) mView.findViewById(R.id.ip_settings);
mIpSettingsSpinner.setOnItemSelectedListener(this);
mProxySettingsSpinner = (Spinner) mView.findViewById(R.id.proxy_settings);
@@ -356,29 +339,18 @@
case AccessPoint.SECURITY_EAP:
config.allowedKeyManagement.set(KeyMgmt.WPA_EAP);
config.allowedKeyManagement.set(KeyMgmt.IEEE8021X);
- config.eap.setValue((String) mEapMethodSpinner.getSelectedItem());
-
- config.phase2.setValue((mPhase2Spinner.getSelectedItemPosition() == 0) ? "" :
- PHASE2_PREFIX + mPhase2Spinner.getSelectedItem());
- config.ca_cert.setValue((mEapCaCertSpinner.getSelectedItemPosition() == 0) ? "" :
- KEYSTORE_SPACE + Credentials.CA_CERTIFICATE +
- (String) mEapCaCertSpinner.getSelectedItem());
- config.client_cert.setValue((mEapUserCertSpinner.getSelectedItemPosition() == 0) ?
- "" : KEYSTORE_SPACE + Credentials.USER_CERTIFICATE +
- (String) mEapUserCertSpinner.getSelectedItem());
- final boolean isEmptyKeyId = (mEapUserCertSpinner.getSelectedItemPosition() == 0);
- config.key_id.setValue(isEmptyKeyId ? "" : Credentials.USER_PRIVATE_KEY +
- (String) mEapUserCertSpinner.getSelectedItem());
- config.engine.setValue(isEmptyKeyId ? WifiConfiguration.ENGINE_DISABLE :
- WifiConfiguration.ENGINE_ENABLE);
- config.engine_id.setValue(isEmptyKeyId ? "" : WifiConfiguration.KEYSTORE_ENGINE_ID);
- config.identity.setValue((mEapIdentityView.length() == 0) ? "" :
- mEapIdentityView.getText().toString());
- config.anonymous_identity.setValue((mEapAnonymousView.length() == 0) ? "" :
+ config.enterpriseConfig.setEapMethod(mEapMethodSpinner.getSelectedItemPosition());
+ config.enterpriseConfig.setPhase2Method(mPhase2Spinner.getSelectedItemPosition());
+ String caCert = (String) mEapCaCertSpinner.getSelectedItem();
+ if (caCert.equals(unspecifiedCert)) caCert = "";
+ String clientCert = (String) mEapUserCertSpinner.getSelectedItem();
+ if (clientCert.equals(unspecifiedCert)) clientCert = "";
+ config.enterpriseConfig.setCaCertificate(caCert);
+ config.enterpriseConfig.setClientCertificate(clientCert);
+ config.enterpriseConfig.setIdentity(mEapIdentityView.getText().toString());
+ config.enterpriseConfig.setAnonymousIdentity(
mEapAnonymousView.getText().toString());
- if (mPasswordView.length() != 0) {
- config.password.setValue(mPasswordView.getText().toString());
- }
+ config.enterpriseConfig.setPassword(mPasswordView.getText().toString());
break;
default:
@@ -549,21 +521,13 @@
if (mAccessPoint != null && mAccessPoint.networkId != INVALID_NETWORK_ID) {
WifiConfiguration config = mAccessPoint.getConfig();
- setSelection(mEapMethodSpinner, config.eap.value());
+ mEapMethodSpinner.setSelection(config.enterpriseConfig.getEapMethod());
+ mPhase2Spinner.setSelection(config.enterpriseConfig.getPhase2Method());
- final String phase2Method = config.phase2.value();
- if (phase2Method != null && phase2Method.startsWith(PHASE2_PREFIX)) {
- setSelection(mPhase2Spinner, phase2Method.substring(PHASE2_PREFIX.length()));
- } else {
- setSelection(mPhase2Spinner, phase2Method);
- }
-
- setCertificate(mEapCaCertSpinner, KEYSTORE_SPACE + Credentials.CA_CERTIFICATE,
- config.ca_cert.value());
- setCertificate(mEapUserCertSpinner, Credentials.USER_PRIVATE_KEY,
- config.key_id.value());
- mEapIdentityView.setText(config.identity.value());
- mEapAnonymousView.setText(config.anonymous_identity.value());
+ setSelection(mEapCaCertSpinner, config.enterpriseConfig.getCaCertificate());
+ setSelection(mEapUserCertSpinner, config.enterpriseConfig.getClientCertificate());
+ mEapIdentityView.setText(config.enterpriseConfig.getIdentity());
+ mEapAnonymousView.setText(config.enterpriseConfig.getAnonymousIdentity());
}
}
@@ -675,14 +639,13 @@
private void loadCertificates(Spinner spinner, String prefix) {
final Context context = mConfigUi.getContext();
- final String unspecified = context.getString(R.string.wifi_unspecified);
String[] certs = KeyStore.getInstance().saw(prefix);
if (certs == null || certs.length == 0) {
- certs = new String[] {unspecified};
+ certs = new String[] {unspecifiedCert};
} else {
final String[] array = new String[certs.length + 1];
- array[0] = unspecified;
+ array[0] = unspecifiedCert;
System.arraycopy(certs, 0, array, 1, certs.length);
certs = array;
}
@@ -693,12 +656,6 @@
spinner.setAdapter(adapter);
}
- private void setCertificate(Spinner spinner, String prefix, String cert) {
- if (cert != null && cert.startsWith(prefix)) {
- setSelection(spinner, cert.substring(prefix.length()));
- }
- }
-
private void setSelection(Spinner spinner, String value) {
if (value != null) {
@SuppressWarnings("unchecked")
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index aedb79e..8007866 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -46,7 +46,6 @@
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
import android.security.Credentials;
-import android.security.KeyStore;
import android.telephony.TelephonyManager;
import android.util.AttributeSet;
import android.util.Log;
@@ -135,8 +134,6 @@
private AtomicBoolean mConnected = new AtomicBoolean(false);
- private int mKeyStoreNetworkId = INVALID_NETWORK_ID;
-
private WifiDialog mDialog;
private TextView mEmptyView;
@@ -412,12 +409,6 @@
}
getActivity().registerReceiver(mReceiver, mFilter);
- if (mKeyStoreNetworkId != INVALID_NETWORK_ID &&
- KeyStore.getInstance().state() == KeyStore.State.UNLOCKED) {
- mWifiManager.connect(mKeyStoreNetworkId, mConnectListener);
- }
- mKeyStoreNetworkId = INVALID_NETWORK_ID;
-
updateAccessPoints();
}
@@ -560,10 +551,8 @@
switch (item.getItemId()) {
case MENU_ID_CONNECT: {
if (mSelectedAccessPoint.networkId != INVALID_NETWORK_ID) {
- if (!requireKeyStore(mSelectedAccessPoint.getConfig())) {
- mWifiManager.connect(mSelectedAccessPoint.networkId,
- mConnectListener);
- }
+ mWifiManager.connect(mSelectedAccessPoint.networkId,
+ mConnectListener);
} else if (mSelectedAccessPoint.security == AccessPoint.SECURITY_NONE) {
/** Bypass dialog for unsecured networks */
mSelectedAccessPoint.generateOpenNetworkConfig();
@@ -700,16 +689,6 @@
&& telephonyManager.getSimState() != TelephonyManager.SIM_STATE_UNKNOWN;
}
- private boolean requireKeyStore(WifiConfiguration config) {
- if (WifiConfigController.requireKeyStore(config) &&
- KeyStore.getInstance().state() != KeyStore.State.UNLOCKED) {
- mKeyStoreNetworkId = config.networkId;
- Credentials.getInstance().unlock(getActivity());
- return true;
- }
- return false;
- }
-
/**
* Shows the latest access points available with supplimental information like
* the strength of network and the security for it.
@@ -971,7 +950,6 @@
if (config == null) {
if (mSelectedAccessPoint != null
- && !requireKeyStore(mSelectedAccessPoint.getConfig())
&& mSelectedAccessPoint.networkId != INVALID_NETWORK_ID) {
mWifiManager.connect(mSelectedAccessPoint.networkId,
mConnectListener);
@@ -981,7 +959,7 @@
mWifiManager.save(config, mSaveListener);
}
} else {
- if (configController.isEdit() || requireKeyStore(config)) {
+ if (configController.isEdit()) {
mWifiManager.save(config, mSaveListener);
} else {
mWifiManager.connect(config, mConnectListener);