Merge "Add new android.permission.CAMERA_DISABLE_TRANSMIT_LED" into jb-mr2-dev
diff --git a/api/current.txt b/api/current.txt
index 9125fa5..dcdf0ba 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -6473,7 +6473,6 @@
field public static final android.os.Parcelable.Creator CREATOR;
field public static final int TYPE_BOOLEAN = 1; // 0x1
field public static final int TYPE_CHOICE = 2; // 0x2
- field public static final int TYPE_CHOICE_LEVEL = 3; // 0x3
field public static final int TYPE_MULTI_SELECT = 4; // 0x4
field public static final int TYPE_NULL = 0; // 0x0
}
@@ -21229,8 +21228,9 @@
public abstract class NotificationListenerService extends android.app.Service {
ctor public NotificationListenerService();
- method public final void clearAllNotifications();
- method public final void clearNotification(java.lang.String, java.lang.String, int);
+ method public final void cancelAllNotifications();
+ method public final void cancelNotification(java.lang.String, java.lang.String, int);
+ method public android.service.notification.StatusBarNotification[] getActiveNotifications();
method public android.os.IBinder onBind(android.content.Intent);
method public abstract void onNotificationPosted(android.service.notification.StatusBarNotification);
method public abstract void onNotificationRemoved(android.service.notification.StatusBarNotification);
@@ -21242,17 +21242,16 @@
ctor public StatusBarNotification(android.os.Parcel);
method public android.service.notification.StatusBarNotification clone();
method public int describeContents();
+ method public int getId();
+ method public android.app.Notification getNotification();
+ method public java.lang.String getPackageName();
+ method public long getPostTime();
+ method public java.lang.String getTag();
method public int getUserId();
method public boolean isClearable();
method public boolean isOngoing();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator CREATOR;
- field public final int id;
- field public final android.app.Notification notification;
- field public final java.lang.String pkg;
- field public final long postTime;
- field public final java.lang.String tag;
- field public final android.os.UserHandle user;
}
}
diff --git a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
index 40f45b7..de58a33 100644
--- a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
+++ b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
@@ -444,8 +444,8 @@
mCapabilities |= CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION;
}
if (asAttributes.getBoolean(com.android.internal.R.styleable
- .AccessibilityService_canRequestEnhancedWebAccessibility, false)) {
- mCapabilities |= CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY;
+ .AccessibilityService_canRequestEnhancedWebAccessibility, false)) {
+ mCapabilities |= CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY;
}
if (asAttributes.getBoolean(com.android.internal.R.styleable
.AccessibilityService_canRequestFilterKeyEvents, false)) {
@@ -557,6 +557,23 @@
}
/**
+ * Sets the bit mask of capabilities this accessibility service has such as
+ * being able to retrieve the active window content, etc.
+ *
+ * @param capabilities The capability bit mask.
+ *
+ * @see #CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT
+ * @see #CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION
+ * @see #CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY
+ * @see #CAPABILITY_FILTER_KEY_EVENTS
+ *
+ * @hide
+ */
+ public void setCapabilities(int capabilities) {
+ mCapabilities = capabilities;
+ }
+
+ /**
* Gets the non-localized description of the accessibility service.
* <p>
* <strong>Statically set from
diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl
index 92ec3ad..9f933ca 100644
--- a/core/java/android/app/INotificationManager.aidl
+++ b/core/java/android/app/INotificationManager.aidl
@@ -44,6 +44,8 @@
void registerListener(in INotificationListener listener, in ComponentName component, int userid);
void unregisterListener(in INotificationListener listener, int userid);
- void clearNotificationFromListener(in INotificationListener token, String pkg, String tag, int id);
- void clearAllNotificationsFromListener(in INotificationListener token);
+ void cancelNotificationFromListener(in INotificationListener token, String pkg, String tag, int id);
+ void cancelAllNotificationsFromListener(in INotificationListener token);
+
+ StatusBarNotification[] getActiveNotificationsFromListener(in INotificationListener token);
}
\ No newline at end of file
diff --git a/core/java/android/app/UiAutomation.java b/core/java/android/app/UiAutomation.java
index 05b79c1..498fa42 100644
--- a/core/java/android/app/UiAutomation.java
+++ b/core/java/android/app/UiAutomation.java
@@ -443,18 +443,25 @@
*/
public AccessibilityEvent executeAndWaitForEvent(Runnable command,
AccessibilityEventFilter filter, long timeoutMillis) throws TimeoutException {
+ // Acquire the lock and prepare for receiving events.
synchronized (mLock) {
throwIfNotConnectedLocked();
-
mEventQueue.clear();
// Prepare to wait for an event.
mWaitingForEventDelivery = true;
+ }
- // We will ignore events from previous interactions.
- final long executionStartTimeMillis = SystemClock.uptimeMillis();
+ // Note: We have to release the lock since calling out with this lock held
+ // can bite. We will correctly filter out events from other interactions,
+ // so starting to collect events before running the action is just fine.
- // Execute the command.
- command.run();
+ // We will ignore events from previous interactions.
+ final long executionStartTimeMillis = SystemClock.uptimeMillis();
+ // Execute the command *without* the lock being held.
+ command.run();
+
+ // Acquire the lock and wait for the event.
+ synchronized (mLock) {
try {
// Wait for the event.
final long startTimeMillis = SystemClock.uptimeMillis();
@@ -463,7 +470,7 @@
while (!mEventQueue.isEmpty()) {
AccessibilityEvent event = mEventQueue.remove(0);
// Ignore events from previous interactions.
- if (event.getEventTime() <= executionStartTimeMillis) {
+ if (event.getEventTime() < executionStartTimeMillis) {
continue;
}
if (filter.accept(event)) {
diff --git a/core/java/android/app/UiAutomationConnection.java b/core/java/android/app/UiAutomationConnection.java
index 97c7ff3e..607930c 100644
--- a/core/java/android/app/UiAutomationConnection.java
+++ b/core/java/android/app/UiAutomationConnection.java
@@ -163,6 +163,10 @@
info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
info.flags |= AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS
| AccessibilityServiceInfo.FLAG_REPORT_VIEW_IDS;
+ info.setCapabilities(AccessibilityServiceInfo.CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT
+ | AccessibilityServiceInfo.CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION
+ | AccessibilityServiceInfo.CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY
+ | AccessibilityServiceInfo.CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS);
try {
// Calling out with a lock held is fine since if the system
// process is gone the client calling in will be killed.
diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java
index 3498bb8..cfbfb48 100644
--- a/core/java/android/bluetooth/BluetoothAdapter.java
+++ b/core/java/android/bluetooth/BluetoothAdapter.java
@@ -1434,7 +1434,7 @@
* <p>Results of the scan are reported using the
* {@link LeScanCallback#onLeScan} callback.
*
- * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission.
+ * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN} permission.
*
* @param callback the callback LE scan results are delivered
* @return true, if the scan was started successfully
@@ -1450,7 +1450,7 @@
* <p>Devices which advertise all specified services are reported using the
* {@link LeScanCallback#onLeScan} callback.
*
- * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission.
+ * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN} permission.
*
* @param serviceUuids Array of services to look for
* @param callback the callback LE scan results are delivered
@@ -1490,7 +1490,7 @@
/**
* Stops an ongoing Bluetooth LE device scan.
*
- * <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission.
+ * <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN} permission.
*
* @param callback used to identify which scan to stop
* must be the same handle used to start the scan
diff --git a/core/java/android/content/RestrictionEntry.java b/core/java/android/content/RestrictionEntry.java
index af90385..217cf76 100644
--- a/core/java/android/content/RestrictionEntry.java
+++ b/core/java/android/content/RestrictionEntry.java
@@ -60,6 +60,7 @@
* and the corresponding values, respectively.
* The presentation could imply that values in lower array indices are included when a
* particular value is chosen.
+ * @hide
*/
public static final int TYPE_CHOICE_LEVEL = 3;
@@ -102,7 +103,7 @@
private String[] currentValues;
/**
- * Constructor for {@link #TYPE_CHOICE} and {@link #TYPE_CHOICE_LEVEL} types.
+ * Constructor for {@link #TYPE_CHOICE} type.
* @param key the unique key for this restriction
* @param selectedString the current value
*/
@@ -206,7 +207,7 @@
* shown to the user. Values will be chosen from this list as the user's selection and the
* selected values can be retrieved by a call to {@link #getAllSelectedStrings()}, or
* {@link #getSelectedString()}, depending on whether it is a multi-select type or choice type.
- * This method is not relevant for types other than {@link #TYPE_CHOICE_LEVEL},
+ * This method is not relevant for types other than
* {@link #TYPE_CHOICE}, and {@link #TYPE_MULTI_SELECT}.
* @param choiceValues an array of Strings which will be the selected values for the user's
* selections.
@@ -241,7 +242,7 @@
* user selects one or more of these choices, the corresponding value from the possible values
* are stored as the selected strings. The size of this array must match the size of the array
* set in {@link #setChoiceValues(String[])}. This method is not relevant for types other
- * than {@link #TYPE_CHOICE_LEVEL}, {@link #TYPE_CHOICE}, and {@link #TYPE_MULTI_SELECT}.
+ * than {@link #TYPE_CHOICE}, and {@link #TYPE_MULTI_SELECT}.
* @param choiceEntries the list of user-visible choices.
* @see #setChoiceValues(String[])
*/
diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java
index 8b72ca9..5031d3c 100644
--- a/core/java/android/service/notification/NotificationListenerService.java
+++ b/core/java/android/service/notification/NotificationListenerService.java
@@ -97,9 +97,9 @@
* @param id ID of the notification as specified by the notifying app in
* {@link android.app.NotificationManager#notify(String, int, android.app.Notification)}.
*/
- public final void clearNotification(String pkg, String tag, int id) {
+ public final void cancelNotification(String pkg, String tag, int id) {
try {
- getNotificationInterface().clearNotificationFromListener(mWrapper, pkg, tag, id);
+ getNotificationInterface().cancelNotificationFromListener(mWrapper, pkg, tag, id);
} catch (android.os.RemoteException ex) {
Log.v(TAG, "Unable to contact notification manager", ex);
}
@@ -114,16 +114,31 @@
* upon being informed, the notification manager will actually remove all active notifications
* and you will get multiple {@link #onNotificationRemoved(StatusBarNotification)} callbacks.
*
- * {@see #clearNotification(String, String, int)}
+ * {@see #cancelNotification(String, String, int)}
*/
- public final void clearAllNotifications() {
+ public final void cancelAllNotifications() {
try {
- getNotificationInterface().clearAllNotificationsFromListener(mWrapper);
+ getNotificationInterface().cancelAllNotificationsFromListener(mWrapper);
} catch (android.os.RemoteException ex) {
Log.v(TAG, "Unable to contact notification manager", ex);
}
}
+ /**
+ * Request the list of outstanding notifications (that is, those that are visible to the
+ * current user). Useful when starting up and you don't know what's already been posted.
+ *
+ * @return An array of active notifications.
+ */
+ public StatusBarNotification[] getActiveNotifications() {
+ try {
+ return getNotificationInterface().getActiveNotificationsFromListener(mWrapper);
+ } catch (android.os.RemoteException ex) {
+ Log.v(TAG, "Unable to contact notification manager", ex);
+ }
+ return null;
+ }
+
@Override
public IBinder onBind(Intent intent) {
if (mWrapper == null) {
diff --git a/core/java/android/service/notification/StatusBarNotification.java b/core/java/android/service/notification/StatusBarNotification.java
index 006518c..e8cc24b9 100644
--- a/core/java/android/service/notification/StatusBarNotification.java
+++ b/core/java/android/service/notification/StatusBarNotification.java
@@ -26,35 +26,21 @@
* the status bar and any {@link android.service.notification.NotificationListenerService}s.
*/
public class StatusBarNotification implements Parcelable {
- /** The package of the app that posted the notification. */
- public final String pkg;
- /** The id supplied to {@link android.app.NotificationManager#notify}. */
- public final int id;
- /** The tag supplied to {@link android.app.NotificationManager#notify}, or null if no tag
- * was specified. */
- public final String tag;
+ private final String pkg;
+ private final int id;
+ private final String tag;
- /** The notifying app's calling uid. @hide */
- public final int uid;
- /** The notifying app's base package. @hide */
- public final String basePkg;
- /** @hide */
- public final int initialPid;
+ private final int uid;
+ private final String basePkg;
+ private final int initialPid;
// TODO: make this field private and move callers to an accessor that
// ensures sourceUser is applied.
- /** The {@link android.app.Notification} supplied to
- * {@link android.app.NotificationManager#notify}. */
- public final Notification notification;
- /** The {@link android.os.UserHandle} for whom this notification is intended. */
- public final UserHandle user;
- /** The time (in {@link System#currentTimeMillis} time) the notification was posted,
- * which may be different than {@link android.app.Notification#when}.
- */
- public final long postTime;
+ private final Notification notification;
+ private final UserHandle user;
+ private final long postTime;
- /** @hide */
- public final int score;
+ private final int score;
/** This is temporarily needed for the JB MR1 PDK.
* @hide */
@@ -198,4 +184,61 @@
public int getUserId() {
return this.user.getIdentifier();
}
+
+ /** The package of the app that posted the notification. */
+ public String getPackageName() {
+ return pkg;
+ }
+
+ /** The id supplied to {@link android.app.NotificationManager#notify}. */
+ public int getId() {
+ return id;
+ }
+
+ /** The tag supplied to {@link android.app.NotificationManager#notify}, or null if no tag
+ * was specified. */
+ public String getTag() {
+ return tag;
+ }
+
+ /** The notifying app's calling uid. @hide */
+ public int getUid() {
+ return uid;
+ }
+
+ /** The notifying app's base package. @hide */
+ public String getBasePkg() {
+ return basePkg;
+ }
+
+ /** @hide */
+ public int getInitialPid() {
+ return initialPid;
+ }
+
+ /** The {@link android.app.Notification} supplied to
+ * {@link android.app.NotificationManager#notify}. */
+ public Notification getNotification() {
+ return notification;
+ }
+
+ /**
+ * The {@link android.os.UserHandle} for whom this notification is intended.
+ * @hide
+ */
+ public UserHandle getUser() {
+ return user;
+ }
+
+ /** The time (in {@link System#currentTimeMillis} time) the notification was posted,
+ * which may be different than {@link android.app.Notification#when}.
+ */
+ public long getPostTime() {
+ return postTime;
+ }
+
+ /** @hide */
+ public int getScore() {
+ return score;
+ }
}
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 11e392d..7259060 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -8696,7 +8696,12 @@
/**
* Change the view's z order in the tree, so it's on top of other sibling
- * views
+ * views. This ordering change may affect layout, if the parent container
+ * uses an order-dependent layout scheme (e.g., LinearLayout). This
+ * method should be followed by calls to {@link #requestLayout()} and
+ * {@link View#invalidate()} on the parent.
+ *
+ * @see ViewGroup#bringChildToFront(View)
*/
public void bringToFront() {
if (mParent != null) {
diff --git a/core/java/android/view/ViewParent.java b/core/java/android/view/ViewParent.java
index 4b70bc0..d79aa7e 100644
--- a/core/java/android/view/ViewParent.java
+++ b/core/java/android/view/ViewParent.java
@@ -146,9 +146,13 @@
public View focusSearch(View v, int direction);
/**
- * Change the z order of the child so it's on top of all other children
+ * Change the z order of the child so it's on top of all other children.
+ * This ordering change may affect layout, if this container
+ * uses an order-dependent layout scheme (e.g., LinearLayout). This
+ * method should be followed by calls to {@link #requestLayout()} and
+ * {@link View#invalidate()} on this parent.
*
- * @param child
+ * @param child The child to bring to the top of the z order
*/
public void bringChildToFront(View child);
diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfoCache.java b/core/java/android/view/accessibility/AccessibilityNodeInfoCache.java
index 14954be..28518aa 100644
--- a/core/java/android/view/accessibility/AccessibilityNodeInfoCache.java
+++ b/core/java/android/view/accessibility/AccessibilityNodeInfoCache.java
@@ -83,6 +83,7 @@
} break;
case AccessibilityEvent.TYPE_VIEW_FOCUSED:
case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED:
+ case AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED:
case AccessibilityEvent.TYPE_VIEW_SELECTED:
case AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED:
case AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED: {
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 1246051..9e3f87f 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -8042,7 +8042,7 @@
info.setEditable(true);
}
- if (TextUtils.isEmpty(getContentDescription()) && !TextUtils.isEmpty(mText)) {
+ if (!TextUtils.isEmpty(mText)) {
info.addAction(AccessibilityNodeInfo.ACTION_NEXT_AT_MOVEMENT_GRANULARITY);
info.addAction(AccessibilityNodeInfo.ACTION_PREVIOUS_AT_MOVEMENT_GRANULARITY);
info.setMovementGranularities(AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER
@@ -8051,6 +8051,7 @@
| AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PARAGRAPH
| AccessibilityNodeInfo.MOVEMENT_GRANULARITY_PAGE);
}
+
if (isFocused()) {
if (canSelectText()) {
info.addAction(AccessibilityNodeInfo.ACTION_SET_SELECTION);
@@ -8655,13 +8656,10 @@
*/
@Override
public CharSequence getIterableTextForAccessibility() {
- if (!TextUtils.isEmpty(mText)) {
- if (!(mText instanceof Spannable)) {
- setText(mText, BufferType.SPANNABLE);
- }
- return mText;
+ if (!(mText instanceof Spannable)) {
+ setText(mText, BufferType.SPANNABLE);
}
- return super.getIterableTextForAccessibility();
+ return mText;
}
/**
@@ -8697,13 +8695,7 @@
*/
@Override
public int getAccessibilitySelectionStart() {
- if (TextUtils.isEmpty(getContentDescription())) {
- final int selectionStart = getSelectionStart();
- if (selectionStart >= 0) {
- return selectionStart;
- }
- }
- return ACCESSIBILITY_CURSOR_POSITION_UNDEFINED;
+ return getSelectionStart();
}
/**
@@ -8718,13 +8710,7 @@
*/
@Override
public int getAccessibilitySelectionEnd() {
- if (TextUtils.isEmpty(getContentDescription())) {
- final int selectionEnd = getSelectionEnd();
- if (selectionEnd >= 0) {
- return selectionEnd;
- }
- }
- return ACCESSIBILITY_CURSOR_POSITION_UNDEFINED;
+ return getSelectionEnd();
}
/**
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 8229bb9..614353d 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -232,7 +232,7 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar el contingut de les finestres"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona el contingut d\'una finestra amb la qual estàs interaccionant."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar Exploració tàctil"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Els elements que es toquen es diran en veu alta i la pantalla es podrà explorar mitjançant gestos."</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Els elements que toquis es diran en veu alta i la pantalla es podrà explorar mitjançant gestos."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activar l\'accessibilitat web millorada"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"És possible que s\'instal·lin scripts per fer que el contingut de l\'aplicació sigui més accessible."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observar el text que escrius"</string>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 8fa8390..ea82e2b 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -870,7 +870,7 @@
<string name="js_dialog_title_default" msgid="6961903213729667573">"Javascript"</string>
<string name="js_dialog_before_unload_title" msgid="2619376555525116593">"Bekræft navigation"</string>
<string name="js_dialog_before_unload_positive_button" msgid="3112752010600484130">"Forlad denne side"</string>
- <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"Forbliv på denne side"</string>
+ <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"Bliv på denne side"</string>
<string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Er du sikker på, at du vil navigere væk fra denne side?"</string>
<string name="save_password_label" msgid="6860261758665825069">"Bekræft"</string>
<string name="double_tap_toast" msgid="4595046515400268881">"Tip! Dobbeltklik for at zoome ind eller ud."</string>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 54db2ae..c4e31d4 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Zugriff auf SD-Karte"</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Funktionen der Bedienungshilfen"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funktionen, die für Bedienungshilfentechnologie beantragt werden können"</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Fensterinhalte abrufen"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Die Inhalte eines Fensters mit dem Sie interagieren werden abgerufen."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"\"Tippen & Entdecken\" aktivieren"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Berührte Elemente werden laut vorgelesen und der Bildschirm kann über Gesten erkundet werden."</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Verbesserte Web-Bedienung aktivieren"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Skripts können installiert werden, um den Zugriff auf App-Inhalte zu erleichtern."</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Text bei der Eingabe beobachten"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Einschließlich persönlicher Daten wie Kreditkartennummern und Passwörter."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"Statusleiste deaktivieren oder ändern"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"Ermöglicht der App, die Statusleiste zu deaktivieren oder Systemsymbole hinzuzufügen oder zu entfernen"</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"Statusleiste"</string>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index bcd7a00..0a83033 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -231,7 +231,7 @@
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Λειτουργίες που μπορεί να ζητήσει η τεχνολογία υποβοήθησης."</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Ανάκτηση του περιεχομένου του παραθύρου"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Έλεγχος του περιεχομένου ενός παραθύρου με το οποίο αλληλεπιδράτε."</string>
- <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ενεργοποίηση της λειτουργίας \"Εξερεύνηση με άγγιγμα\""</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Ενεργοποίηση της \"Εξερεύνησης με άγγιγμα\""</string>
<string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Τα στοιχεία που αγγίζετε θα εκφωνούνται και η εξερεύνηση της οθόνης μπορεί να γίνει με κινήσεις."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Ενεργοποίηση της βελτιωμένης προσβασιμότητας ιστού"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Ενδέχεται να εγκατασταθούν σενάρια για τη βελτίωση της πρόσβασης στο περιεχόμενο της εφαρμογής."</string>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index e3ed5d3..ba6f4af6 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -229,8 +229,8 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Acceder a la tarjeta SD."</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Funciones de accesibilidad"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funciones que la tecnología de asistencia puede solicitar."</string>
- <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar el contenido de la ventana"</string>
- <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona el contenido de una ventana que estés usando."</string>
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperar el contenido de las ventanas"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecciona el contenido de la ventana con la que estés interactuando."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activar la Exploración táctil"</string>
<string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Los elementos que toques se dirán en voz alta, y podrás explorar la pantalla mediante gestos."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activar la accesibilidad web mejorada"</string>
@@ -870,8 +870,8 @@
<string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
<string name="js_dialog_before_unload_title" msgid="2619376555525116593">"Confirmar navegación"</string>
<string name="js_dialog_before_unload_positive_button" msgid="3112752010600484130">"Abandonar esta página"</string>
- <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"Permanecer en esta página"</string>
- <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"¿Realmente deseas navegar fuera de esta página?"</string>
+ <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"Quedarme en la página"</string>
+ <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"¿Confirmas que quieres salir de esta página?"</string>
<string name="save_password_label" msgid="6860261758665825069">"Confirmar"</string>
<string name="double_tap_toast" msgid="4595046515400268881">"Consejo: Toca dos veces para acercar y alejar la imagen."</string>
<string name="autofill_this_form" msgid="4616758841157816676">"Autocompletar"</string>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 882e58f..dc69ed5 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -352,8 +352,8 @@
<string name="permdesc_injectEvents" product="default" msgid="653128057572326253">"Permite que la aplicación proporcione sus propios eventos de entrada (pulsación de teclas, etc.) a otras aplicaciones. Las aplicaciones malintencionadas pueden usar este permiso para controlar el teléfono."</string>
<string name="permlab_readInputState" msgid="469428900041249234">"registrar lo que se escribe y las acciones que se realizan"</string>
<string name="permdesc_readInputState" msgid="8387754901688728043">"Permite que la aplicación sepa las teclas que pulsas incluso cuando interactúas con otra aplicación (como, por ejemplo, al introducir una contraseña). Nunca debería ser necesario para las aplicaciones normales."</string>
- <string name="permlab_bindInputMethod" msgid="3360064620230515776">"enlazar con un método de entrada de texto"</string>
- <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Permite que se enlace con la interfaz de nivel superior de un método de entrada de texto. Las aplicaciones normales no deberían necesitar este permiso."</string>
+ <string name="permlab_bindInputMethod" msgid="3360064620230515776">"enlazar con un método de introducción de texto"</string>
+ <string name="permdesc_bindInputMethod" msgid="3250440322807286331">"Permite que se enlace con la interfaz de nivel superior de un método de introducción de texto. Las aplicaciones normales no deberían necesitar este permiso."</string>
<string name="permlab_bindAccessibilityService" msgid="5357733942556031593">"enlazar con un servicio de accesibilidad"</string>
<string name="permdesc_bindAccessibilityService" msgid="7034615928609331368">"Permite enlazar con la interfaz de nivel superior de un servicio de accesibilidad. Las aplicaciones normales no deberían necesitar este permiso."</string>
<string name="permlab_bindTextService" msgid="7358378401915287938">"enlazar con un servicio de texto"</string>
@@ -1053,7 +1053,7 @@
<string name="textSelectionCABTitle" msgid="5236850394370820357">"Selección de texto"</string>
<string name="addToDictionary" msgid="4352161534510057874">"Añadir al diccionario"</string>
<string name="deleteText" msgid="6979668428458199034">"Eliminar"</string>
- <string name="inputMethod" msgid="1653630062304567879">"Método de entrada de texto"</string>
+ <string name="inputMethod" msgid="1653630062304567879">"Método de introducción de texto"</string>
<string name="editTextMenuTitle" msgid="4909135564941815494">"Acciones de texto"</string>
<string name="low_internal_storage_view_title" msgid="5576272496365684834">"Queda poco espacio"</string>
<string name="low_internal_storage_view_text" msgid="6640505817617414371">"Es posible que algunas funciones del sistema no funcionen."</string>
@@ -1271,7 +1271,7 @@
<string name="deny" msgid="2081879885755434506">"Denegar"</string>
<string name="permission_request_notification_title" msgid="6486759795926237907">"Permiso solicitado"</string>
<string name="permission_request_notification_with_subtitle" msgid="8530393139639560189">"Permiso solicitado"\n"para la cuenta <xliff:g id="ACCOUNT">%s</xliff:g>"</string>
- <string name="input_method_binding_label" msgid="1283557179944992649">"Método de entrada de texto"</string>
+ <string name="input_method_binding_label" msgid="1283557179944992649">"Método de introducción de texto"</string>
<string name="sync_binding_label" msgid="3687969138375092423">"Sincronización"</string>
<string name="accessibility_binding_label" msgid="4148120742096474641">"Accesibilidad"</string>
<string name="wallpaper_binding_label" msgid="1240087844304687662">"Fondo de pantalla"</string>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 2967b64..62ad546 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Juurdepääs SD-kaardile."</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Pääsufunktsioonid"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funktsioonid, mida saab taotleda abistav tehnoloogia."</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Akna sisu toomine"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Tutvuge kasutatava akna sisuga."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Puudutusega sirvimise sisselülitamine"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Puudutatud üksuste nimesid esitatakse häälega ning ekraani saab sirvida puudutustega."</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Veebi täiustatud juurdepääsu sisselülitamine"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Rakenduse sisu kättesaadavamaks muutmiseks võidakse installida skripte."</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Sisestatud teksti jälgimine"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Sisaldab isiklikke andmeid, nt krediitkaardi numbreid ja paroole."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"keela või muuda olekuriba"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"Võimaldab rakendusel keelata olekuriba või lisada ja eemaldada süsteemiikoone."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"olekuriba"</string>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index e0d7a02..0adbc5f 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -230,11 +230,11 @@
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"ویژگیهای قابلیت دسترسی"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"ویژگیهایی که فناوری مفید میتواند درخواست کند."</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"بازیابی محتوای پنجره"</string>
- <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"محتوای پنجرهای را که درحال تعامل با آن هستید بررسی کنید."</string>
- <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"فعالسازی کاوش با لمس"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"محتوای پنجرهای را که در حال تعامل با آن هستید بررسی کنید."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"فعالسازی کاوش لمسی"</string>
<string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"موارد لمس شده با صدای بلند خوانده میشوند و با استفاده از حرکات لمسی میتوانید صفحه را کاوش کنید."</string>
- <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"فعالسازی افزایش دسترسی به وب پیشرفته"</string>
- <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ممکن است جهت افزایش قابلیت دسترسی به محتوای برنامه، اسکریپتهایی نصب شود."</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"فعالسازی دسترسپذیری پیشرفته برای وب"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ممکن است جهت افزایش دسترسپذیری به محتوای برنامه، اسکریپتهایی نصب شود."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"نوشتاری را که تایپ میکنید مشاهده نمایید"</string>
<string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"اطلاعات شخصی مانند شماره کارت اعتباری و گذرواژهها را شامل میشود."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"غیرفعال کردن یا تغییر نوار وضعیت"</string>
@@ -871,7 +871,7 @@
<string name="js_dialog_before_unload_title" msgid="2619376555525116593">"تأیید پیمایش"</string>
<string name="js_dialog_before_unload_positive_button" msgid="3112752010600484130">"ترک این صفحه"</string>
<string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"ماندن در این صفحه"</string>
- <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"مطمئنید که میخواهید از این صفحه پیمایش کنیدد؟"</string>
+ <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"مطمئنید میخواهید این صفحه را ترک کنید؟"</string>
<string name="save_password_label" msgid="6860261758665825069">"تأیید"</string>
<string name="double_tap_toast" msgid="4595046515400268881">"نکته: برای بزرگنمایی و کوچکنمایی، دو بار ضربه بزنید."</string>
<string name="autofill_this_form" msgid="4616758841157816676">"تکمیل خودکار"</string>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 618a8f7..c8cf96d 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Accéder à la carte SD"</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Fonctionnalités d\'accessibilité"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Fonctionnalités pouvant être requises dans le cadre des technologies d\'assistance"</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Récupérer le contenu d\'une fenêtre"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspecter le contenu d\'une fenêtre avec laquelle vous interagissez."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activer la fonctionnalité Explorer au toucher"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Les éléments sélectionnés sont énoncés à voix haute. Vous pouvez explorer l\'écran à l\'aide de gestes."</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activer l\'accessibilité Web améliorée"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Vous pouvez installer des scripts pour rendre le contenu des applications plus accessible."</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Observer le texte que vous saisissez"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Inclut des données personnelles telles que les numéros de cartes de paiement et les mots de passe."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"Désactivation ou modification de la barre d\'état"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"Permet à l\'application de désactiver la barre d\'état, ou d\'ajouter et de supprimer des icônes système."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"barre d\'état"</string>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 8bf697c..e93d749 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD कार्ड में पहुंचें."</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"पहुंच-योग्यता सुविधाएं"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"सहायक प्रौद्योगिकी के द्वारा अनुरोध की जा सकने वाली सुविधाएं."</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"विंडो सामग्री प्राप्त करें"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"उस विंडो की सामग्री का निरीक्षण करें जिससे आप सहभागिता कर रहे हैं."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"स्पर्श द्वारा एक्सप्लोर करें को चालू करें"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"स्पर्श किए गए आइटम ज़ोर से बोले जाएंगे और स्क्रीन को जेस्चर के उपयोग से एक्सप्लोर किया जा सकेगा."</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"एन्हांस की गई वेब पहुंच-योग्यता चालू करें"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"एप्लिकेशन सामग्री को अधिक पहुंच-योग्य बनाने के लिए स्क्रिप्ट इंस्टॉल किए जा सकते हैं."</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"आपके द्वारा लिखे हुए पाठ को ध्यान से देखें"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"क्रेडिट कार्ड नंबर और पासवर्ड जैसा व्यक्तिगत डेटा शामिल होता है."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"स्थिति बार अक्षम या बदलें"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"एप्लिकेशन को स्थिति बार अक्षम करने या सिस्टम आइकन को जोड़ने या निकालने देता है."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"स्थिति बार"</string>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index fadd216..0f44a7e 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Pristup SD kartici."</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Značajke dostupnosti"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Značajke koje tehnologija za pristupačnost može zahtijevati."</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Dohvaćanje sadržaja prozora"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Istražite sadržaj prozora koji upotrebljavate."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Uključivanje značajke Istraži dodirom"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Dodirnute stavke izgovorit će se naglas, a zaslon se može istraživati pokretima."</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Uključivanje poboljšane pristupačnosti weba"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Kako bi sadržaj aplikacije bio pristupačniji, mogu se instalirati skripte."</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Praćenje teksta koji pišete"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Uključuje osobne podatke kao što su brojevi kreditnih kartica i zaporke."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"onemogućavanje ili izmjena trake statusa"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"Aplikaciji omogućuje onemogućavanje trake statusa ili dodavanje i uklanjanje sistemskih ikona."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"traka statusa"</string>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 7c01b8e..c064020 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Az SD-kártya elérése."</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Kisegítő lehetőségek funkciói"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"A kisegítő technológia által kérhető funkciók."</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Ablaktartalom lekérdezése"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"A használt ablak tartalmának vizsgálata."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Felfedezés érintéssel bekapcsolása"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"A megérintett elemeket a rendszer hangosan kimondja, a képernyő pedig felfedezhető kézmozdulatok használatával."</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Webelérhetőség fokozásának bekapcsolása"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Lehet telepíteni szkripteket, hogy az alkalmazástartalmak jobban elérhetők legyenek."</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"A gépelt szöveg figyelése"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Tartalmazza a személyes adatokat, például a hitelkártyaszámokat és jelszavakat."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"állapotsor kikapcsolása vagy módosítása"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"Lehetővé teszi az alkalmazás számára az állapotsor kikapcsolását, illetve rendszerikonok hozzáadását és eltávolítását."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"állapotsor"</string>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 7794501..95b9744 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -229,13 +229,13 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Accesso alla scheda SD."</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Funzioni di accessibilità"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funzioni che possono essere richieste dalla tecnologia di ausilio."</string>
- <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recupera contenuti finestra"</string>
- <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Vengono esaminati i contenuti di una finestra con cui interagisci."</string>
- <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Attiva Esplora al tocco"</string>
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperare contenuti finestra"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Esaminare i contenuti di una finestra con cui interagisci."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Attivare Esplora al tocco"</string>
<string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Gli elementi toccati verranno pronunciati ad alta voce e sarà possibile esplorare lo schermo utilizzando i gesti."</string>
- <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Attiva accessibilità web migliorata"</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Attivare accessibilità web migliorata"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Potrebbero essere installati script per rendere più accessibili i contenuti delle app."</string>
- <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Osserva il testo digitato"</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Osservare il testo digitato"</string>
<string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Sono inclusi dati personali come numeri di carte di credito e password."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"disattivare o modificare la barra di stato"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"Consente all\'applicazione di disattivare la barra di stato o di aggiungere e rimuovere icone di sistema."</string>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 9e9b78a..69fd0e5 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -231,8 +231,8 @@
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"תכונות שטכנולוגיה מסייעת יכולה לבקש."</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"אחזר תוכן של חלון"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"בדוק את התוכן של חלון שאיתו אתה מבצע אינטראקציה."</string>
- <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"הפעל את גילוי באמצעות מגע"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"פריטים שנגעת בהם יאמרו בקול וניתן לחקור את המסך באמצעות תנועות."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"הפעל את \'גילוי באמצעות מגע\'"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"פריטים שנגעת בהם ייאמרו בקול וניתן לנווט במסך באמצעות תנועות."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"הפעל גישה משופרת לאינטרנט"</string>
<string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"ייתכן שסקריפטים יותקנו על מנת להקל את הגישה אל תוכן של יישומים."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"הצג טקסט שאתה מקליד"</string>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 91170f0..cb03d2b 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SDカードにアクセスします。"</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"ユーザー補助機能"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"補助テクノロジーがリクエストできる機能です。"</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"ウィンドウコンテンツの取得"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ユーザーがアクセスしているウィンドウのコンテンツを検査します。"</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"タッチガイドの有効化"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"触れたアイテムが読み上げられ、ジェスチャーで画面のガイドを利用できます。"</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"ウェブアクセシビリティ拡張の有効化"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"アプリコンテンツのアクティビティをもっと向上させるためにスクリプトをインストールできます。"</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"入力テキストの監視"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"クレジットカードの番号やパスワードなどの個人データが含まれます。"</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"ステータスバーの無効化や変更"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"ステータスバーの無効化、システムアイコンの追加や削除をアプリに許可します。"</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"ステータスバーへの表示"</string>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 328e585..c199a3c 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"SD 카드에 액세스합니다."</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"접근성 기능"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"장애인 보조 기술이 요청할 수 있는 기능입니다."</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"창 콘텐츠 검색"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"상호작용 중인 창의 콘텐츠를 검사합니다."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"터치하여 탐색 사용"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"항목을 터치하면 소리 내어 알려주며 제스처를 사용하여 화면을 탐색할 수 있습니다."</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"향상된 웹 접근성 기능 사용"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"스크립트를 설치하여 앱 콘텐츠에 더 간편하게 액세스할 수 있습니다."</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"입력하는 텍스트 살펴보기"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"신용카드 번호와 비밀번호 등의 개인 데이터를 포함합니다."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"상태 표시줄 사용 중지 또는 수정"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"앱이 상태 표시줄을 사용중지하거나 시스템 아이콘을 추가 및 제거할 수 있도록 허용합니다."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"상태 표시줄"</string>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index e52759a..3d2f2e6 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Pasiekite SD kortelę."</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Pritaikymo neįgaliesiems funkcijos"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funkcijos, kurių užklausas gali teikti pagalbinė technologija."</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Gauti lango turinį"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Tikrinti lango, su kuriuo sąveikaujate, turinį."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Įjungti „Naršyti paliečiant“"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Paliesti elementai bus ištariami garsiai. Be to, ekrane gali būti naršoma naudojant gestus."</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Įjungti patobulintą žiniatinklio pasiekiamumą"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Gali būti įdiegti scenarijai, kad būtų lengviau pasiekti programų turinį."</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Stebėti jūsų įvedamą tekstą"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Įtraukiami asmeniniai duomenys, pavyzdžiui, kredito kortelių numeriai ir slaptažodžiai."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"išjungti ar keisti būsenos juostą"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"Leidžiama programai neleisti būsenos juostos arba pridėti ir pašalinti sistemos piktogramas."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"būsenos juosta"</string>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 0d44d13..c7a19ab 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Piekļūstiet SD kartei."</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Pieejamības funkcijas"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funkcijas, kuras palīgtehnoloģija var pieprasīt."</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Izgūt loga saturu."</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Skatīt tā loga saturu, ar kuru mijiedarbojaties."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Aktivizēt funkciju “Pārlūkot pieskaroties”."</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Tiks izrunāti to vienumu nosaukumi, kuriem pieskarsieties, un ekrānu varēsiet pārlūkot ar žestiem."</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Ieslēgt uzlaboto tīmekļa pieejamību."</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Var tikt instalēti skripti, lai padarītu lietotņu saturu pieejamāku."</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Skatīt ierakstīto tekstu."</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Ietver personas datus, piemēram, kredītkartes numurus un paroles."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"atspējot vai pārveidot statusa joslu"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"Ļauj lietotnei atspējot statusa joslu vai pievienot un noņemt sistēmas ikonas."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"statusa josla"</string>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index b564192..157c1ec 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -230,7 +230,7 @@
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Ciri kebolehaksesan"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Ciri yang boleh diminta oleh teknologi bantuan."</string>
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Dapatkan kembali kandungan tetingkap"</string>
- <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Periksan kandungan tetingkap yang berinteraksi dengan anda."</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Periksa kandungan tetingkap yang berinteraksi dengan anda."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Hidupkan Jelajah melalui Sentuhan"</string>
<string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Item yang disentuh akan disebut dengan kuat dan skrin boleh dijelajah menggunakan gerak isyarat."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Hidupkan kebolehcapaian web dipertingkat"</string>
@@ -870,7 +870,7 @@
<string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
<string name="js_dialog_before_unload_title" msgid="2619376555525116593">"Sahkan Navigasi"</string>
<string name="js_dialog_before_unload_positive_button" msgid="3112752010600484130">"Tinggalkan Halaman ini"</string>
- <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"Kekal di halaman ini"</string>
+ <string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"Kekal di Halaman ini"</string>
<string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"Adakah anda pasti anda mahu menavigasi keluar dari halaman ini?"</string>
<string name="save_password_label" msgid="6860261758665825069">"Sahkan"</string>
<string name="double_tap_toast" msgid="4595046515400268881">"Petua: Ketik dua kali untuk mengezum masuk dan keluar."</string>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index b261719..b676d1d 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -234,7 +234,7 @@
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Verkennen via aanraking inschakelen"</string>
<string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Aangeraakte items worden hardop benoemd en het scherm kan worden verkend door middel van aanraking."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Verbeterde internettoegankelijkheid inschakelen"</string>
- <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Er kunnen scripts worden geïnstalleerd om app-content toegankelijker te maken."</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Er kunnen scripts worden geïnstalleerd om app-inhoud toegankelijker te maken."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Tekst observeren die u typt"</string>
<string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Omvat persoonlijke gegevens zoals creditcardnummers en wachtwoorden."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"statusbalk uitschakelen of wijzigen"</string>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 6564d09..6a27b5c 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Dostęp do karty SD."</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Funkcje ułatwień dostępu"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funkcje, których może zażądać technologia ułatwień dostępu."</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pobierz zawartość okna"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Sprawdzanie zawartości okna, z którego korzystasz."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Włącz czytanie dotykiem"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Klikane elementy będą wymawiane na głos, a ekran można przeglądać, używając gestów."</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Włącz ułatwienia dostępu w internecie"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Można zainstalować skrypty, by zawartość aplikacji była łatwiej dostępna."</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Obserwuj wpisywany tekst"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Obejmuje informacje osobiste, takie jak numery kart kredytowych i hasła."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"wyłączanie lub zmienianie paska stanu"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"Pozwala aplikacji na wyłączanie paska stanu oraz dodawanie i usuwanie ikon systemowych."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"pasek stanu"</string>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 8d8029b..0ac05de 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Accesează cardul SD."</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Funcții de accesibilitate"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funcții pe care tehnologia de asistare le poate solicita."</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Recuperați conținutul ferestrei"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Inspectează conținutul unei ferestre cu care interacționați."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Activați funcția Explorați prin atingere"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Elementele atinse vor fi rostite cu voce tare, iar ecranul poate fi explorat utilizând gesturi."</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Activați accesibilitatea web îmbunătățită"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Pot fi instalate scripturi pentru a face conținutul aplicațiilor mai accesibil."</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Remarcă textul pe care îl introduceți"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Include date personale, cum ar fi numere ale cardurilor de credit sau parole."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"dezactivare sau modificare bare de stare"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"Permite aplicaţiei să dezactiveze bara de stare sau să adauge şi să elimine pictograme de sistem."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"bară de stare"</string>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index c193ca0..82369fd 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Доступ к SD-карте."</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Специальные возможности"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Специальные возможности, которые можно запрашивать"</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Читать содержимое окна."</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Распознавать содержимое окна, в котором вы находитесь."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Включать изучение касанием."</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Озвучивать нажимаемые элементы и разрешать управление устройством с помощью жестов."</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Включать дополнительные возможности для работы в Интернете."</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"При необходимости устанавливать скрипты, чтобы получить больше специальных возможностей."</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Следить за тем, что вы печатаете."</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Фильтровать личные данные, например номера кредитных карт и пароли."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"отключать или изменять строку состояния"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"Приложение сможет отключать строку состояния, а также добавлять и удалять системные значки."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"строка состояния"</string>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 0fd0b2e..c270eb3 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Prístup na kartu SD."</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Funkcie zjednodušenia ovládania"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Funkcie, ktoré môže vyžadovať nápomocná technológia."</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Načítať obsah okna"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Preskúmať obsah okna s ktorým interagujete."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Zapnúť funkciu Preskúmanie dotykom"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Po dotyku na položku sa vysloví jej názov a obrazovku je možné preskúmať pomocou gest."</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Zapnúť vylepšenú dostupnosť na webe"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Môže nainštalovať skripty na sprístupnenie obsahu aplikácie."</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Sledovať vami zadávaný text"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Obsahuje osobné údaje ako sú čísla kreditných kariet a heslá."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"zakázanie alebo zmeny stavového riadka"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"Umožňuje aplikácii vypnúť stavový riadok alebo pridať a odstrániť systémové ikony."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"stavový riadok"</string>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index f8bac53..eb97c9f 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -232,9 +232,9 @@
<string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Pridobivanje vsebine okna"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Preverite vsebino okna, ki ga uporabljate."</string>
<string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Vklop raziskovanja z dotikom"</string>
- <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Elementi, ki se jih dotaknete, bodo izrečeni naglas, zaslonu pa lahko raziskujete s potezami."</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Elementi, ki se jih dotaknete, bodo izrečeni naglas, zaslon pa lahko raziskujete s potezami."</string>
<string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Vklop izboljšanja dostopnosti spleta za ljudi s posebnimi potrebami"</string>
- <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Za boljšo dostopnost vsebine aplikacije se lahko namestijo skripti."</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Za boljšo dostopnost vsebine aplikacije je mogoče namestiti skripte."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Opazovanje besedila, ki ga natipkate"</string>
<string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Vključuje osebne podatke, kot so številke kreditnih kartic in gesla."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"onemogočanje ali spreminjanje vrstice stanja"</string>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 40678da..6a244a8 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Приступ SD картици."</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Функције приступачности"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Функције које технологија за помоћ може да захтева."</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Преузимање садржаја прозора"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Проверава садржај прозора са којим остварујете интеракцију."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Укључивање Истраживања додиром"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Ставке које додирнете ће бити изговорене, а можете да се крећете по екрану покретима."</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Укључивање побољшане приступачности веба"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Могу да се инсталирају скрипте да би садржај апликација био приступачнији."</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Праћење текста који уносите"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Обухвата личне податке као што су бројеви кредитних картица и лозинке."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"онемогућавање или измена статусне траке"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"Дозвољава апликацији да онемогући статусну траку или да додаје и уклања системске иконе."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"статусна трака"</string>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 3248723..bbf8a1b 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"เข้าถึงการ์ด SD"</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"คุณลักษณะการเข้าถึง"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"คุณลักษณะที่เทคโนโลยีความช่วยเหลือสามารถร้องขอได้"</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"เรียกเนื้อหาหน้าต่าง"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"ตรวจสอบเนื้อหาของหน้าต่างที่คุณกำลังโต้ตอบอยู่"</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"เปิด \"แตะเพื่อสำรวจ\""</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"รายการที่แตะจะถูกพูดออกเสียง และการสำรวจหน้าจอสามารถทำได้ด้วยท่าทางสัมผัส"</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"เปิดการเข้าถึงเว็บที่มีประสิทธิภาพมากขึ้น"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"อาจติดตั้งสคริปต์เพื่อทำให้สามารถเข้าถึงเนื้อหาแอปได้ง่ายขึ้น"</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"สังเกตข้อความที่คุณพิมพ์"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"รวมถึงข้อมูลส่วนบุคคล เช่น หมายเลขบัตรเครดิตและรหัสผ่าน"</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"ปิดการใช้งานหรือแก้ไขแถบสถานะ"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"อนุญาตให้แอปพลิเคชันปิดใช้งานแถบสถานะหรือเพิ่มและนำไอคอนระบบออก"</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"แถบสถานะ"</string>
@@ -879,7 +871,7 @@
<string name="js_dialog_before_unload_title" msgid="2619376555525116593">"ยืนยันการนำทาง"</string>
<string name="js_dialog_before_unload_positive_button" msgid="3112752010600484130">"ออกจากหน้านี้"</string>
<string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"อยู่ในหน้านี้"</string>
- <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"คุณแน่ใจหรือไม่ว่าต้องการออกจากหน้านี้"</string>
+ <string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"คุณแน่ใจไหมว่าต้องการออกจากหน้านี้"</string>
<string name="save_password_label" msgid="6860261758665825069">"ยืนยัน"</string>
<string name="double_tap_toast" msgid="4595046515400268881">"เคล็ดลับ: แตะสองครั้งเพื่อขยายและย่อ"</string>
<string name="autofill_this_form" msgid="4616758841157816676">"ป้อนอัตโนมัติ"</string>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 1cd6e3b..6d66f34 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"I-access ang SD card."</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Mga tampok ng accessibility"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Mga tampok na maaaring hilingin ng tumutulong na teknolohiya."</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Kunin ang nilalaman ng window"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Siyasatin ang nilalaman ng isang window kung saan ka nakikipag-ugnayan."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"I-on ang Explore by Touch"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Bibigkasin ang mga pinindot na item at maaaring galugarin ang screen gamit ang mga galaw."</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"I-on ang pinahusay na accessibility sa web"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Maaaring mag-install ng mga script upang gawing mas naa-access ang nilalaman ng app."</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Obserbahan ang tekstong tina-type mo"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"May kasamang personal na data tulad ng mga numero ng credit card at password."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"huwag paganahin o baguhin ang status bar"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"Pinapayagan ang app na huwag paganahin ang status bar o magdagdag at mag-alis ng mga icon ng system."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"status bar"</string>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index c641aa3..919029a 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -267,7 +267,7 @@
<string name="permdesc_receiveWapPush" msgid="748232190220583385">"Uygulamaya WAP mesajlarını alma ve işleme izni verir. Buna, size gönderilen mesajları takip edip size göstermeden silebilme izni de dahildir."</string>
<string name="permlab_getTasks" msgid="6466095396623933906">"çalışan uygulamaları al"</string>
<string name="permdesc_getTasks" msgid="7454215995847658102">"Uygulamaya o anda ve son çalışan görevler hakkında bilgi alma izni verir. Bu izin, uygulamanın cihaz tarafından kullanılan uygulamalar hakkında bilgi elde etmesine olanak sağlayabilir."</string>
- <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"kullanıcılar arasında etkileşim kur"</string>
+ <string name="permlab_interactAcrossUsers" msgid="7114255281944211682">"kullanıcılar arasında etkileşim kurma"</string>
<string name="permdesc_interactAcrossUsers" msgid="364670963623385786">"Uygulamaya cihazdaki farklı kullanıcılar arasında işlem gerçekleştirme izni verir. Kötü amaçlı uygulamalar bu izinle kullanıcılar arasındaki korumayı ihlal edebilir."</string>
<string name="permlab_interactAcrossUsersFull" msgid="2567734285545074105">"kullanıcılar arasında etkileşim kurmak için tam izin"</string>
<string name="permdesc_interactAcrossUsersFull" msgid="376841368395502366">"Kullanıcılar arasında tüm etkileşime izin verir."</string>
@@ -285,7 +285,7 @@
<string name="permdesc_setScreenCompatibility" msgid="692043618693917374">"Uygulamaya diğer uygulamaların ekran uyumluluk modunu denetleme izni verir. Kötü amaçlı uygulamalar diğer uygulamaların çalışma şeklini bozabilir."</string>
<string name="permlab_setDebugApp" msgid="3022107198686584052">"uygulama hata ayıklamayı etkinleştir"</string>
<string name="permdesc_setDebugApp" msgid="4474512416299013256">"Uygulamaya, başka bir uygulama için hata ayıklamayı açma izni verir. Kötü amaçlı uygulamalar diğer uygulamaları kaldırmak için bunu kullanabilir."</string>
- <string name="permlab_changeConfiguration" msgid="4162092185124234480">"sistem görüntüleme ayarlarını değiştir"</string>
+ <string name="permlab_changeConfiguration" msgid="4162092185124234480">"sistem görüntüleme ayarlarını değiştirme"</string>
<string name="permdesc_changeConfiguration" msgid="4372223873154296076">"Uygulamaya, yerel ayar veya genel yazı tipi boyutu gibi mevcut yapılandırmayı değiştirme izni verir."</string>
<string name="permlab_enableCarMode" msgid="5684504058192921098">"araç modunu etkinleştir"</string>
<string name="permdesc_enableCarMode" msgid="4853187425751419467">"Uygulamaya, araç modunu etkinleştirme izni verir."</string>
@@ -295,7 +295,7 @@
<string name="permdesc_forceStopPackages" msgid="5253157296183940812">"Uygulamaya, diğer uygulamaları zorla durdurma izni verir."</string>
<string name="permlab_forceBack" msgid="652935204072584616">"uygulamayı kapanmaya zorla"</string>
<string name="permdesc_forceBack" msgid="3892295830419513623">"Uygulamaya, ön plandaki herhangi bir etkinliği kapatma ve geri gitme izni verir. Normal uygulamalar için gerekli olmaz."</string>
- <string name="permlab_dump" msgid="1681799862438954752">"sistemin dahili durumunu al"</string>
+ <string name="permlab_dump" msgid="1681799862438954752">"sistemin dahili durumunu alma"</string>
<string name="permdesc_dump" msgid="1778299088692290329">"Uygulamaya, sistemin iç durumunu alma izni verir. Kötü amaçlı uygulamalar normalde gerek duymadıkları çok çeşitli özel ve güvenli bilgilerini alabilir."</string>
<string name="permlab_retrieve_window_content" msgid="8022588608994589938">"ekran içeriğini al"</string>
<string name="permdesc_retrieve_window_content" msgid="3193269069469700265">"Uygulamaya, etkin pencerenin içeriğini alma izni verir. Kötü amaçlı uygulamalar tüm pencere içeriğini alabilir ve şifreleri hariç tüm metni inceleyebilir."</string>
@@ -339,7 +339,7 @@
<string name="permdesc_confirm_full_backup" msgid="1748762171637699562">"Uygulamaya, tam yedekleme onay arabirimini başlatma izni verir. Herhangi bir uygulamanın kullanımına yönelik değildir."</string>
<string name="permlab_internalSystemWindow" msgid="2148563628140193231">"yetkisiz pencereleri görüntüle"</string>
<string name="permdesc_internalSystemWindow" msgid="7458387759461466397">"Uygulamaya, dahili sistem kullanıcı arayüzü tarafından kullanılacak pencereler oluşturma izni verir. Normal uygulamaların kullanımına yönelik değildir."</string>
- <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"diğer uygulamaları sürükle"</string>
+ <string name="permlab_systemAlertWindow" msgid="3543347980839518613">"diğer uygulamaların üzerinde görüntüleme"</string>
<string name="permdesc_systemAlertWindow" msgid="8584678381972820118">"Uygulamaya, diğer uygulamaların veya kullanıcı arayüzüne ait bölümlerin üstüne çizim yapma izni verir. Bu izne sahip uygulamalar herhangi bir uygulamada kullanıcı arayüzünü kullanımınızı etkileyebilir veya diğer uygulamalarda gördüğünüzü düşündüğünüz arayüz öğelerini değiştirmiş olabilir."</string>
<string name="permlab_setAnimationScale" msgid="2805103241153907174">"genel animasyon hızını değiştir"</string>
<string name="permdesc_setAnimationScale" msgid="7690063428924343571">"Uygulamaya, istediği zaman genel animasyon hızını değiştirme (animasyonları hızlandırma veya yavaşlatma) izni verir."</string>
@@ -374,7 +374,7 @@
<string name="permdesc_setKeyboardLayout" msgid="8480016771134175879">"Uygulamaya klavye düzenini değiştirme izni verir. Normal uygulamalar için hiçbir zaman gerekmez."</string>
<string name="permlab_signalPersistentProcesses" msgid="4539002991947376659">"uygulamalara Linux sinyalleri gönder"</string>
<string name="permdesc_signalPersistentProcesses" msgid="4896992079182649141">"Uygulamaya, sağlanan sinyalin tüm kalıcı işlemlere gönderilmesini isteme izni verir."</string>
- <string name="permlab_persistentActivity" msgid="8841113627955563938">"uygulamayı her zaman çalıştır"</string>
+ <string name="permlab_persistentActivity" msgid="8841113627955563938">"uygulamayı her zaman çalıştırma"</string>
<string name="permdesc_persistentActivity" product="tablet" msgid="8525189272329086137">"Uygulamaya kendisinin bir bölümünü bellekte kalıcı yapma izni verir. Bu izin, diğer uygulamaların kullanabileceği belleği sınırlandırarak tabletin yavaş çalışmasına neden olabilir."</string>
<string name="permdesc_persistentActivity" product="default" msgid="4384760047508278272">"Uygulamaya kendisinin bir bölümünü bellekte kalıcı yapma izni verir. Bu izin, diğer uygulamaların kullanabileceği belleği sınırlandırarak telefonun yavaş çalışmasına neden olabilir."</string>
<string name="permlab_deletePackages" msgid="184385129537705938">"uygulamaları sil"</string>
@@ -406,22 +406,22 @@
<string name="permdesc_grantRevokePermissions" msgid="4088642654085850662">"Uygulamaya, kendisi veya başka uygulamalar için belirli izinleri verme ya da kaldırma izni verir. Zararlı uygulamalar bunu, kendilerine izin vermediğiniz özelliklere erişmek için kullanabilir."</string>
<string name="permlab_setPreferredApplications" msgid="8463181628695396391">"tercih edilen uygulamaları ayarla"</string>
<string name="permdesc_setPreferredApplications" msgid="4973986762241783712">"Uygulamaya, tercih edilen uygulamalarınızı değiştirme izni verir. Kötü amaçlı uygulamalar çalışmakta olan uygulamaları sessizce değiştirip gizli verilerinizi toplamak için mevcut uygulamalarınızı yanlış yönlendirebilir."</string>
- <string name="permlab_writeSettings" msgid="2226195290955224730">"sistem ayarlarını değiştir"</string>
+ <string name="permlab_writeSettings" msgid="2226195290955224730">"sistem ayarlarını değiştirme"</string>
<string name="permdesc_writeSettings" msgid="7775723441558907181">"Uygulamaya, sistem ayarı verilerini değiştirme izni verir. Kötü amaçlı uygulamalar sistem yapılandırmanızı bozabilir."</string>
- <string name="permlab_writeSecureSettings" msgid="204676251876718288">"güvenli sistem ayarlarını değiştir"</string>
+ <string name="permlab_writeSecureSettings" msgid="204676251876718288">"güvenli sistem ayarlarını değiştirme"</string>
<string name="permdesc_writeSecureSettings" msgid="8159535613020137391">"Uygulamaya, sisteme ait güvenlik ayarı verilerini değiştirme izni verir. Normal uygulamaların kullanımına yönelik değildir."</string>
<string name="permlab_writeGservices" msgid="2149426664226152185">"Google hizmetler haritasını değiştir"</string>
<string name="permdesc_writeGservices" msgid="1287309437638380229">"Uygulamaya, Google hizmetleri haritasını değiştirme izni verir. Normal uygulamaların kullanımına yönelik değildir."</string>
- <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"başlangıçta çalıştır"</string>
+ <string name="permlab_receiveBootCompleted" msgid="5312965565987800025">"başlangıçta çalıştırma"</string>
<string name="permdesc_receiveBootCompleted" product="tablet" msgid="7390304664116880704">"Uygulamaya, kendisini sistem açılışı bittikten hemen sonra başlatma izni verir. Bu izin, tabletin başlaması için daha uzun süre geçmesine ve uygulamanın her zaman çalışarak tableti yavaşlatmasına neden olabilir."</string>
<string name="permdesc_receiveBootCompleted" product="default" msgid="513950589102617504">"Uygulamaya, kendisini sistem açılışı bittikten hemen sonra başlatma izni verir. Bu izin, telefonun başlatılması için daha uzun bir süre geçmesine ve uygulamanın her zaman çalışarak telefonu yavaşlatmasına neden olur."</string>
- <string name="permlab_broadcastSticky" msgid="7919126372606881614">"sabit yayın gönder"</string>
+ <string name="permlab_broadcastSticky" msgid="7919126372606881614">"sabit yayın gönderme"</string>
<string name="permdesc_broadcastSticky" product="tablet" msgid="7749760494399915651">"Uygulamaya, yayın bittikten sonra da kalan sabit yayınlar gönderme izni verir. Aşırı kullanılması çok fazla bellek harcanmasına neden olarak tableti yavaşlatabilir veya dengesiz hale getirebilir."</string>
<string name="permdesc_broadcastSticky" product="default" msgid="2825803764232445091">"Uygulamaya, yayın bittikten sonra da kalan sabit yayınlar gönderme izni verir. Aşırı kullanılması çok fazla bellek harcanmasına neden olarak telefonunu yavaşlatabilir veya dengesiz hale getirebilir."</string>
- <string name="permlab_readContacts" msgid="8348481131899886131">"kişilerimi oku"</string>
+ <string name="permlab_readContacts" msgid="8348481131899886131">"kişilerinizi okuma"</string>
<string name="permdesc_readContacts" product="tablet" msgid="5294866856941149639">"Uygulamaya tabletinizde depolanan kişilerinizle ilgili verileri okuma izni verir. Bu verilere belirli kişilerle ne sıklıkta çağrı, e-posta veya diğer yöntemlerle iletişim kurduğunuz bilgisi dahildir. Bu izin, uygulamanın kişi verilerinizi kaydetmesine olanak sağlar ve kötü amaçlı uygulamalar kişi verilerini haberiniz olmadan paylaşabilir."</string>
<string name="permdesc_readContacts" product="default" msgid="8440654152457300662">"Uygulamaya telefonunuzda depolanan kişilerinizle ilgili verileri okuma izni verir. Bu verilere belirli kişilerle ne sıklıkta çağrı, e-posta veya diğer yöntemlerle iletişim kurduğunuz bilgisi dahildir. Bu izin, uygulamanın kişi verilerinizi kaydetmesine olanak sağlar ve kötü amaçlı uygulamalar kişi verilerini sizden habersiz paylaşabilir."</string>
- <string name="permlab_writeContacts" msgid="5107492086416793544">"kişilerimi değiştir"</string>
+ <string name="permlab_writeContacts" msgid="5107492086416793544">"kişilerinizi değiştirme"</string>
<string name="permdesc_writeContacts" product="tablet" msgid="897243932521953602">"Uygulamaya tabletinizde depolanan kişilerinizle ilgili verileri değiştirme izni verir. Bu verilere belirli kişilerle ne sıklıkta çağrı, e-posta veya diğer yöntemlerle iletişim kurduğunuz bilgisi dahildir. Bu izin, uygulamanın kişi verilerinizi silmesine olanak sağlar."</string>
<string name="permdesc_writeContacts" product="default" msgid="589869224625163558">"Uygulamaya telefonunuzda depolanan kişilerinizle ilgili verileri değiştirme izni verir. Bu verilere belirli kişilerle ne sıklıkta çağrı, e-posta veya diğer yöntemlerle iletişim kurduğunuz bilgisi dahildir. Bu izin, uygulamanın kişi verilerinizi silmesine olanak sağlar."</string>
<string name="permlab_readCallLog" msgid="3478133184624102739">"çağrı günlüğünü oku"</string>
@@ -432,11 +432,11 @@
<string name="permdesc_writeCallLog" product="default" msgid="683941736352787842">"Uygulamaya telefonunuzun çağrı günlüğünde (gelen ve giden çağrılarla ilgili veriler dahil olmak üzere) değişiklik yapma izni verir. Kötü amaçlı uygulamalar bu izni kullanarak çağrı günlüğünüzü silebilir veya değiştirebilir."</string>
<string name="permlab_readProfile" msgid="4701889852612716678">"kendi kişi kartımı oku"</string>
<string name="permdesc_readProfile" product="default" msgid="5462475151849888848">"Uygulamaya adınız ve iletişim bilgileriniz gibi cihazınızda saklanan kişisel profil bilgilerini okuma izni verir. Bu izin, uygulamanın sizi tanımlayabileceği ve profil bilgilerinizi başkalarına gönderebileceği anlamına gelir."</string>
- <string name="permlab_writeProfile" msgid="907793628777397643">"kendi kişi kartımı değiştir"</string>
+ <string name="permlab_writeProfile" msgid="907793628777397643">"kendi kişi kartınızı değiştirme"</string>
<string name="permdesc_writeProfile" product="default" msgid="5552084294598465899">"Uygulamaya adınız ve iletişim bilgileriniz gibi cihazınızda saklanan kişisel profil bilgilerini değiştirme veya bunlara ekleme yapma izni verir. Bu izin, uygulamanın sizi tanımlayabileceği ve profil bilgilerinizi başkalarına gönderebileceği anlamına gelir."</string>
- <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"sosyal akışımı oku"</string>
+ <string name="permlab_readSocialStream" product="default" msgid="1268920956152419170">"sosyal akışınızı okuma"</string>
<string name="permdesc_readSocialStream" product="default" msgid="4255706027172050872">"Uygulamaya size veya arkadaşlarınıza ait sosyal güncellemelere erişme ve bunları senkronize etme izni verir. Bilgi paylaşırken dikkatli olun. Bu izin, uygulamanın sosyal ağlarda sizinle arkadaşlarınız arasındaki iletişimi, gizliliğine bakılmaksızın okumasına olanak sağlar. Not: Bu izin tüm sosyal ağlar için geçerli olmayabilir."</string>
- <string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"sosyal akışıma yaz"</string>
+ <string name="permlab_writeSocialStream" product="default" msgid="3504179222493235645">"sosyal akışınıza yazma"</string>
<string name="permdesc_writeSocialStream" product="default" msgid="3086557552204114849">"Uygulamaya arkadaşlarınızın sosyal güncellemelerini gösterme izni verir. Bilgi paylaşırken dikkatli olun -- Bu uygulama bir arkadaşınızdan geliyormuş gibi görünen mesajlar oluşturabilir. Not: Bu izin, tüm sosyal ağlarda geçerli olmayabilir."</string>
<string name="permlab_readCalendar" msgid="5972727560257612398">"takvim etkinliklerini ve gizli bilgileri oku"</string>
<string name="permdesc_readCalendar" product="tablet" msgid="4216462049057658723">"Uygulamaya, arkadaşlarınızın ve iş arkadaşlarınızın etkinlikleri de olmak üzere tabletinizde depolanan tüm takvim etkinliklerini okuma izni verir. Bu izin, uygulamanın takvim verilerinizi gizliliğine ve hassaslığına bakmaksızın paylaşmasına ve kaydetmesine olanak sağlayabilir."</string>
@@ -492,7 +492,7 @@
<string name="permdesc_asec_mount_unmount" msgid="3451360114902490929">"Uygulamaya, dahili depolama birimini ekleme/bağlantısını kesme izni verir."</string>
<string name="permlab_asec_rename" msgid="7496633954080472417">"dahili dep br adını dğş"</string>
<string name="permdesc_asec_rename" msgid="1794757588472127675">"Uygulamaya, dahili depolama biriminin adını değiştirme izni verir."</string>
- <string name="permlab_vibrate" msgid="7696427026057705834">"titreşimi denetle"</string>
+ <string name="permlab_vibrate" msgid="7696427026057705834">"titreşimi denetleme"</string>
<string name="permdesc_vibrate" msgid="6284989245902300945">"Uygulamaya, titreşimi denetleme izni verir."</string>
<string name="permlab_flashlight" msgid="2155920810121984215">"flaşı denetle"</string>
<string name="permdesc_flashlight" msgid="6522284794568368310">"Uygulamaya, flaş ışığını denetleme izni verir."</string>
@@ -517,10 +517,10 @@
<string name="permdesc_bindGadget" msgid="8261326938599049290">"Uygulamaya, hangi uygulamaların hangi widget\'ları kullanacağını sisteme bildirme izni verir. Bu izne sahip bir uygulama, başka uygulamalara kişisel veriler için erişim hakkı verebilir. Normal uygulamaların kullanımına yönelik değildir."</string>
<string name="permlab_modifyPhoneState" msgid="8423923777659292228">"telefon durumunu değiştir"</string>
<string name="permdesc_modifyPhoneState" msgid="1029877529007686732">"Uygulamaya, cihazın telefon özelliklerini kontrol etme izni verir. Bu izne sahip bir uygulama sizi hiç uyarmadan ağlar arasında geçiş, telefonun radyosunu açıp kapatma ve benzeri işlemler yapabilir."</string>
- <string name="permlab_readPhoneState" msgid="9178228524507610486">"telefonun durumunu ve kimliğini oku"</string>
+ <string name="permlab_readPhoneState" msgid="9178228524507610486">"telefonun durumunu ve kimliğini okuma"</string>
<string name="permdesc_readPhoneState" msgid="1639212771826125528">"Uygulamaya cihazdaki telefon özelliklerine erişme izni verir. Bu izin, uygulamanın telefon numarasını ve cihaz kimliğini, etkin bir çağrı olup olmadığını ve çağrıda bağlanılan karşı tarafın numarasını öğrenmesine olanak sağlar."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1531731435011495015">"tabletin uykuya geçmesini önle"</string>
- <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"telefonunun uykuya geçmesini önle"</string>
+ <string name="permlab_wakeLock" product="default" msgid="573480187941496130">"telefonun uykuya geçmesini önleme"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="7311319824400447868">"Uygulamaya, tabletin uykuya geçmesini önleme izni verir."</string>
<string name="permdesc_wakeLock" product="default" msgid="8559100677372928754">"Uygulamaya, telefonun uykuya geçmesini önleme izni verir."</string>
<string name="permlab_devicePower" product="tablet" msgid="2787034722616350417">"tableti aç veya kapat"</string>
@@ -544,30 +544,30 @@
<string name="permdesc_setTimeZone" product="default" msgid="4499943488436633398">"Uygulamaya, telefonun saat dilimini değiştirme izni verir."</string>
<string name="permlab_accountManagerService" msgid="4829262349691386986">"Hesap Yönetici Hizmeti gibi davran"</string>
<string name="permdesc_accountManagerService" msgid="1948455552333615954">"Uygulamaya, Hesap Kimlik Doğrulayıcılarına çağrı yapma izni verir."</string>
- <string name="permlab_getAccounts" msgid="1086795467760122114">"cihazdaki hesapları bul"</string>
+ <string name="permlab_getAccounts" msgid="1086795467760122114">"cihazdaki hesapları bulma"</string>
<string name="permdesc_getAccounts" product="tablet" msgid="2741496534769660027">"Uygulamaya tablet tarafından bilinen hesapların listesini alma izni verir. Bu liste, yüklediğiniz uygulamalar tarafından oluşturulan tüm hesapları içerebilir."</string>
<string name="permdesc_getAccounts" product="default" msgid="3448316822451807382">"Uygulamaya telefon tarafından bilinen hesapların listesini alma izni verir. Bu liste, yüklediğiniz uygulamalar tarafından oluşturulan tüm hesapları içerebilir."</string>
- <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"hesap oluştur ve şifre ayarla"</string>
+ <string name="permlab_authenticateAccounts" msgid="5265908481172736933">"hesap oluşturma ve şifre ayarlama"</string>
<string name="permdesc_authenticateAccounts" msgid="5472124296908977260">"Uygulamaya, hesaplar oluşturma ve bunların şifrelerini alma ve ayarlama da dahil olmak üzere Hesap Yöneticisi\'nin hesap doğrulama yetkilerini kullanma izni verir."</string>
- <string name="permlab_manageAccounts" msgid="4983126304757177305">"hesap ekle veya kaldır"</string>
+ <string name="permlab_manageAccounts" msgid="4983126304757177305">"hesap ekleme veya kaldırma"</string>
<string name="permdesc_manageAccounts" msgid="8698295625488292506">"Uygulamaya, hesap ekleme, kaldırma ve hesapların şifrelerini silme gibi işlemleri yapma izni verir."</string>
- <string name="permlab_useCredentials" msgid="235481396163877642">"bu cihazdaki hesapları kullan"</string>
+ <string name="permlab_useCredentials" msgid="235481396163877642">"bu cihazdaki hesapları kullanma"</string>
<string name="permdesc_useCredentials" msgid="7984227147403346422">"Uygulamaya kimlik doğrulama jetonları isteme izni verir."</string>
- <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ağ bağlantılarını görüntüle"</string>
+ <string name="permlab_accessNetworkState" msgid="4951027964348974773">"ağ bağlantılarını görüntüleme"</string>
<string name="permdesc_accessNetworkState" msgid="8318964424675960975">"Uygulamaya, hangi ağların bulunduğu ve hangilerinin bağlı olduğu gibi ağ bağlantılarıyla ilgili bilgileri görüntüleme izni verir."</string>
<string name="permlab_createNetworkSockets" msgid="8018758136404323658">"tam ağ erişimi"</string>
<string name="permdesc_createNetworkSockets" msgid="3403062187779724185">"Uygulamaya ağ yuvaları oluşturma ve özel ağ protokolleri kullanma izni verir. Tarayıcı ve diğer uygulamalar İnternet\'e veri gönderilmesi için araç sağlarlar, bu nedenle bu izin, İnternet\'e veri göndermek için gerekli değildir."</string>
<string name="permlab_writeApnSettings" msgid="505660159675751896">"ağ ayarlarını ve trafiği değiştir/müdahale et"</string>
<string name="permdesc_writeApnSettings" msgid="5333798886412714193">"Uygulamaya, ağ ayarlarını değiştirme, tüm ağ trafiğine engel olma ve izleme (örneğin, proxy\'yi ve APN bağlantı noktalarını değiştirmek için) izni verir. Kötü amaçlı uygulamalar sizin bilginiz olmadan ağ paketlerini izleyebilir, yönlendirebilir ya da değiştirebilir."</string>
- <string name="permlab_changeNetworkState" msgid="958884291454327309">"ağ bağlantısını değiştir"</string>
+ <string name="permlab_changeNetworkState" msgid="958884291454327309">"ağ bağlantısını değiştirme"</string>
<string name="permdesc_changeNetworkState" msgid="6789123912476416214">"Uygulamaya, ağ bağlantısının durumunu değiştirme izni verir."</string>
<string name="permlab_changeTetherState" msgid="5952584964373017960">"kullanılan bağlantıyı değiştir"</string>
<string name="permdesc_changeTetherState" msgid="1524441344412319780">"Uygulamaya, tethering kullanan ağ bağlantısının durumunu değiştirme izni verir."</string>
<string name="permlab_changeBackgroundDataSetting" msgid="1400666012671648741">"arka plan veri kullanımı ayarını değiştir"</string>
<string name="permdesc_changeBackgroundDataSetting" msgid="5347729578468744379">"Uygulamaya, arka plan veri kullanımı ayarını değiştirme izni verir."</string>
- <string name="permlab_accessWifiState" msgid="5202012949247040011">"Kablosuz bağlantıları görüntüle"</string>
+ <string name="permlab_accessWifiState" msgid="5202012949247040011">"Kablosuz bağlantıları görüntüleme"</string>
<string name="permdesc_accessWifiState" msgid="5002798077387803726">"Uygulamaya, Kablosuz bağlantının etkin olup olmadığı ve bağlanan Kablosuz cihazların adları gibi Kablosuz ağ kullanımıyla ilgili bilgileri görüntüleme izni verir."</string>
- <string name="permlab_changeWifiState" msgid="6550641188749128035">"Kablosuza bağlan veya Kablosuz bağlantısını kes"</string>
+ <string name="permlab_changeWifiState" msgid="6550641188749128035">"Kablosuza bağlanma veya Kablosuz bağlantısını kesme"</string>
<string name="permdesc_changeWifiState" msgid="7137950297386127533">"Uygulamaya, kablosuz erişim noktalarına bağlanıp bunlarla bağlantısını kesme ve Kablosuz ağlar için cihaz yapılandırmasında değişiklikler yapma izni verir."</string>
<string name="permlab_changeWifiMulticastState" msgid="1368253871483254784">"Kablosuz Çoklu Yayın alımına izin ver"</string>
<string name="permdesc_changeWifiMulticastState" product="tablet" msgid="7969774021256336548">"Uygulamaya, çoklu yayın adreslerini kullanarak yalnızca tablete değil Kablosuz ağ üzerindeki tüm cihazlara gönderilen paketleri alma izni verir. Çoklu olmayan yayın moduna göre daha fazla güç tüketir."</string>
@@ -587,25 +587,25 @@
<string name="permdesc_nfc" msgid="7120611819401789907">"Uygulamaya, Near Field Communication (NFC) etiketleri, kartlar ve okuyucular ile iletişim kurma izni verir."</string>
<string name="permlab_disableKeyguard" msgid="3598496301486439258">"ekran kilidimi devre dışı bırak"</string>
<string name="permdesc_disableKeyguard" msgid="6034203065077122992">"Uygulamaya, tuş kilidini ve ilişkili tüm şifreli güvenlik önlemlerini devre dışı bırakma izni verir. Örneğin, telefon, çağrı alındığında tuş kilidinin devre dışı bırakır ve sonra, görüşme bittiğinde kilidi yeniden etkinleştirir."</string>
- <string name="permlab_readSyncSettings" msgid="6201810008230503052">"senk. ayarlarını oku"</string>
+ <string name="permlab_readSyncSettings" msgid="6201810008230503052">"senk. ayarlarını okuma"</string>
<string name="permdesc_readSyncSettings" msgid="2706745674569678644">"Uygulamaya bir hesaba ait senkronizasyon ayarlarını okuma izni verir. Örneğin, bu izne sahip bir uygulama Kişiler uygulamasının bir hesapla senkronize olup olmadığını belirleyebilir."</string>
- <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"senkronizasyonu aç/kapat"</string>
+ <string name="permlab_writeSyncSettings" msgid="5408694875793945314">"senkronizasyonu açma/kapatma"</string>
<string name="permdesc_writeSyncSettings" msgid="8956262591306369868">"Uygulamaya bir hesaba ait senkronizasyon ayarlarını değiştirme izni verir. Örneğin, bu izne sahip bir uygulama Kişiler uygulamasının bir hesapla senkronize edilmesini etkinleştirebilir."</string>
- <string name="permlab_readSyncStats" msgid="7396577451360202448">"senk. istatistiklerini oku"</string>
+ <string name="permlab_readSyncStats" msgid="7396577451360202448">"senk. istatistiklerini okuma"</string>
<string name="permdesc_readSyncStats" msgid="1510143761757606156">"Uygulamaya bir hesaba ait senkronizasyon istatistiklerini okuma izni verir. Buna senkronizasyon etkinlikleri geçmişi ve senkronize edilen veri miktarı bilgileri de dahildir."</string>
- <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"abone olunan yayınları oku"</string>
+ <string name="permlab_subscribedFeedsRead" msgid="4756609637053353318">"abone olunan yayınları okuma"</string>
<string name="permdesc_subscribedFeedsRead" msgid="5557058907906144505">"Uygulamaya, o anda senkronize olan özet akışları ile ilgili bilgi alma izni verir."</string>
- <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"abone olunan yayınları yaz"</string>
+ <string name="permlab_subscribedFeedsWrite" msgid="9015246325408209296">"abone olunan yayınları yazma"</string>
<string name="permdesc_subscribedFeedsWrite" msgid="6928930188826089413">"Uygulamaya, o anda senkronize edilmiş özet akışlarını değiştirme izni verir. Kötü amaçlı uygulamalar senkronize edilmiş özet akışlarını değiştirebilir."</string>
<string name="permlab_readDictionary" msgid="4107101525746035718">"sözlüğe eklediğim terimleri oku"</string>
<string name="permdesc_readDictionary" msgid="659614600338904243">"Uygulamaya, kullanıcının kullanıcı sözlüğünde depolamış olabileceği kelimeleri, adları ve kelime öbeklerini okuma izni verir."</string>
<string name="permlab_writeDictionary" msgid="2183110402314441106">"kullanıcı tanımlı sözlüğe kelime ekle"</string>
<string name="permdesc_writeDictionary" msgid="8185385716255065291">"Uygulamaya, kullanıcı sözlüğüne yeni kelimeler yazma izni verir."</string>
- <string name="permlab_sdcardRead" product="nosdcard" msgid="8235341515605559677">"korumalı depolama birimine erişimi test et"</string>
- <string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"korumalı depolama birimine erişimi test et"</string>
+ <string name="permlab_sdcardRead" product="nosdcard" msgid="8235341515605559677">"korumalı depolama birimine erişimi test etme"</string>
+ <string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"korumalı depolama birimine erişimi test etme"</string>
<string name="permdesc_sdcardRead" product="nosdcard" msgid="3642473292348132072">"Uygulamaya, gelecekteki cihazlarda kullanılabilecek USB depolama birimi için bir izni test etme olanağı verir."</string>
<string name="permdesc_sdcardRead" product="default" msgid="5914402684685848828">"Uygulamaya gelecekteki cihazlarda kullanılabilecek SD karta ilişkin bir izni test etme olanağı verir."</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"USB belleğimin içeriğini değiştir veya sil"</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"USB belleğinizin içeriğini değiştirme veya silme"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8805693630050458763">"SD kartın içeriğini değiştir veya sil"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Uygulamaya USB belleğe yazma izni verir."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Uygulamaya, SD karta yazma izni verir."</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 1276fa3..f80d0a6 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"Truy cập thẻ SD."</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"Tính năng hỗ trợ truy cập"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"Tính năng mà công nghệ hỗ trợ có thể yêu cầu."</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"Truy xuất nội dung cửa sổ"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"Kiểm tra nội dung của cửa sổ bạn đang tương tác."</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"Bật Khám phá bằng cách chạm"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"Mục đã chạm sẽ được nói to và bạn có thể khám phá màn hình bằng cử chỉ."</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"Bật khả năng truy cập web nâng cao"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"Tập lệnh có thể được cài đặt để làm cho nội dung ứng dụng dễ truy cập hơn."</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"Xem nội dung bạn nhập"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"Bao gồm dữ liệu cá nhân chẳng hạn như số thẻ tín dụng và mật khẩu."</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"vô hiệu hóa hoặc sửa đổi thanh trạng thái"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"Cho phép ứng dụng vô hiệu hóa thanh trạng thái hoặc thêm và xóa biểu tượng hệ thống."</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"thanh trạng thái"</string>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 5700f1b..184c1c8 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -229,22 +229,14 @@
<string name="permgroupdesc_storage" product="default" msgid="9203302214915355774">"访问 SD 卡。"</string>
<string name="permgrouplab_accessibilityFeatures" msgid="7919025602283593907">"辅助功能"</string>
<string name="permgroupdesc_accessibilityFeatures" msgid="4205196881678144335">"辅助技术可请求启用的功能。"</string>
- <!-- no translation found for capability_title_canRetrieveWindowContent (3901717936930170320) -->
- <skip />
- <!-- no translation found for capability_desc_canRetrieveWindowContent (3772225008605310672) -->
- <skip />
- <!-- no translation found for capability_title_canRequestTouchExploration (3108723364676667320) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestTouchExploration (5800552516779249356) -->
- <skip />
- <!-- no translation found for capability_title_canRequestEnhancedWebAccessibility (1739881766522594073) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestEnhancedWebAccessibility (7881063961507511765) -->
- <skip />
- <!-- no translation found for capability_title_canRequestFilterKeyEvents (2103440391902412174) -->
- <skip />
- <!-- no translation found for capability_desc_canRequestFilterKeyEvents (7463135292204152818) -->
- <skip />
+ <string name="capability_title_canRetrieveWindowContent" msgid="3901717936930170320">"检索窗口内容"</string>
+ <string name="capability_desc_canRetrieveWindowContent" msgid="3772225008605310672">"检查您正与其进行互动的窗口的内容。"</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="3108723364676667320">"启用触摸浏览"</string>
+ <string name="capability_desc_canRequestTouchExploration" msgid="5800552516779249356">"设备可大声读出用户触摸的内容,而用户可以通过手势浏览屏幕。"</string>
+ <string name="capability_title_canRequestEnhancedWebAccessibility" msgid="1739881766522594073">"启用网页辅助增强功能"</string>
+ <string name="capability_desc_canRequestEnhancedWebAccessibility" msgid="7881063961507511765">"安装脚本以方便访问应用的内容。"</string>
+ <string name="capability_title_canRequestFilterKeyEvents" msgid="2103440391902412174">"监测您输入的文字"</string>
+ <string name="capability_desc_canRequestFilterKeyEvents" msgid="7463135292204152818">"包含个人数据,例如信用卡号和密码。"</string>
<string name="permlab_statusBar" msgid="7417192629601890791">"停用或修改状态栏"</string>
<string name="permdesc_statusBar" msgid="8434669549504290975">"允许应用停用状态栏或者增删系统图标。"</string>
<string name="permlab_statusBarService" msgid="7247281911387931485">"状态栏"</string>
@@ -876,7 +868,7 @@
<string name="factorytest_reboot" msgid="6320168203050791643">"重新启动"</string>
<string name="js_dialog_title" msgid="1987483977834603872">"网址为“<xliff:g id="TITLE">%s</xliff:g>”的网页显示:"</string>
<string name="js_dialog_title_default" msgid="6961903213729667573">"JavaScript"</string>
- <string name="js_dialog_before_unload_title" msgid="2619376555525116593">"确认导航"</string>
+ <string name="js_dialog_before_unload_title" msgid="2619376555525116593">"确认离开"</string>
<string name="js_dialog_before_unload_positive_button" msgid="3112752010600484130">"离开此页"</string>
<string name="js_dialog_before_unload_negative_button" msgid="5614861293026099715">"留在此页"</string>
<string name="js_dialog_before_unload" msgid="3468816357095378590">"<xliff:g id="MESSAGE">%s</xliff:g>"\n\n"您确定要离开此页面吗?"</string>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index a51371f..a1479af 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -4105,7 +4105,7 @@
<!-- Error message title [CHAR LIMIT=35] -->
<string name="error_message_title">Error</string>
<!-- Message informing user that app is not permitted to access accounts. [CHAR LIMIT=none] -->
- <string name="app_no_restricted_accounts">This application does not support accounts for limited users</string>
+ <string name="app_no_restricted_accounts">This application does not support accounts for restricted profiles</string>
<!-- Message informing user that the requested activity could not be found [CHAR LIMIT=none] -->
<string name="app_not_found">No application found to handle this action</string>
<string name="revoke">Revoke</string>
diff --git a/docs/html/distribute/googleplay/quality/tablet.jd b/docs/html/distribute/googleplay/quality/tablet.jd
index a54348b..192aae9 100644
--- a/docs/html/distribute/googleplay/quality/tablet.jd
+++ b/docs/html/distribute/googleplay/quality/tablet.jd
@@ -16,7 +16,7 @@
<li><a href="#hardware-requirements">9. Declare dependencies properly</a></li>
<li><a href="#support-screens">10. Declare tablet screens support</a></li>
<li><a href="#google-play">11. Showcase your tablet UI</a></li>
-<li><a href="#google-play-bp">12. Follow publishing best practices</a></li>
+<li><a href="#google-play-best-practices">12. Follow publishing best practices</a></li>
</ol>
<h2>Testing</h2>
@@ -68,8 +68,10 @@
<li><a href="#google-play">Screenshots are uploaded to Google Play</a></li>
</ul>
-<p>The sections that follow provide more information about these and other
-quality guidelines for tablet apps.</p>
+<p>If your app is already uploaded to the Google Play Developer Console, you
+ can see how it is doing against these checks
+ by visiting the <a href="#google-play-optimization-tips">Optimization
+ Tips page</a>.</p>
<h2 id="optimize-layouts">2. Optimize your layouts for larger screens</h2>
@@ -312,7 +314,15 @@
gets loaded.</li>
</ul>
-<p>At a minimum, your app should supply custom drawables and assets for common tablet screen densities, tagged with the qualifiers <code>hdpi</code>, <code>xhdpi</code>, or <code>xxhdpi</code>.</p>
+<p style="margin-bottom:.5em;">At a minimum, your app should supply sets of
+ custom drawables and assets for common tablet screen densities,
+ tagged with these qualifiers as appropriate:</p>
+
+<ul>
+ <li><code>hdpi</code>, OR</li>
+ <li><code>xhdpi</code>, OR</li>
+ <li><code>xxhdpi</code></li>
+</ul>
<div class="rel-resources">
<h3>
@@ -482,62 +492,103 @@
<h2 id="android-versions">8. Target Android versions properly</h2>
<p>To ensure the broadest possible distribution to tablets, make sure that your
-app is targeting the Android versions that support tablets. You can declare
-the targeted range of Android versions in the
-<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code><uses-sdk></code></a>
-element in the app manifest.</p>
+app properly targets the Android versions that support tablets. Initial support for
+tablets was added in <a href="{@docRoot}about/versions/android-3.0">Android 3.0</a> (API level 11). Unified UI
+framework support for tablets, phones, and other devices was introduced in <a href="{@docRoot}about/versions/android-4.0">Android 4.0</a> (API level 14) and is supported in later versions.
-<p>At a minimum, your app's
-<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code><uses-sdk></code></a>
-should declare support for Android versions as follows:</p>
+<p>You can set the app's
+range of targeted Android versions in the manifest file, in the
+<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code><uses-sdk></code></a> element. In most cases, you can target Android versions properly by setting the element's <code>targetSdkVersion</code> attribute to the highest API level available.</p>
- <ul>
- <li>If a <code>targetSdkVersion</code> attribute is declared, it should have a value of 11 or higher, OR</li>
- <li>If a <code>minSdkVersion</code> attribute is declared, it should have a value of 11 or higher.</li>
- <li>Also, if a <code>maxSdkVersion</code> attribute is declared, it must have a value of 12 or higher. Note that, in most cases, the use of <code>maxSdkVersion</code> is <em>not recommended</em>.</li>
+<p style="margin-bottom:.5em;">At a minimum, check the <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html"><code><uses-sdk></code></a>
+ element to make sure that:</p>
+
+ <ol style="list-style-type:lower-alpha;margin-top:0em;">
+ <li><code>targetSdkVersion</code> is declared with value 11 or higher (14 or higher is recommended), OR</li>
+ <li><code>minSdkVersion</code> is declared with value 11 or higher.</li>
+ <li>If a <code>maxSdkVersion</code> attribute is declared, it must have a value of 11 or higher. Note that, in general, the use of <code>maxSdkVersion</code> is <em>not recommended</em>.</li>
+</ol>
+
+<div class="rel-resources">
+<h3>
+ Related resources
+</h3>
+
+<ul>
+ <li>
+ <a href=
+ "{@docRoot}guide/topics/manifest/uses-sdk-element.html#ApiLevels">Android API
+ Levels</a>—Introduces API levels and how they relate to compatibility.
+ A reference of available API levels is included.
+ </li>
+ <li>
+ <a href="{@docRoot}training/basics/supporting-devices/platforms.html">Supporting Different Platform Versions</a>—Training class showing how to declare support for
+ minimum and target API levels in your app.
+ </li>
</ul>
+</div>
<h2 id="hardware-requirements">9. Declare hardware feature dependencies properly</h2>
-<p>Handsets and tablets typically offer slightly different hardware support for
-sensors, camera, telephony, and other features. For example, many tablets are
-available in a "Wi-Fi" configuration that does not include telephony support.</p>
+<p>
+ Handsets and tablets typically offer slightly different hardware support for
+ sensors, camera, telephony, and other features. For example, many tablets are
+ available in a "Wi-Fi" configuration that does not include telephony support.
+</p>
-<p>To ensure that you can deliver a single APK broadly across the
-your full customer base, make sure that your app does not have built-in
-requirements for hardware features that aren't commonly available on tablets.
+<p>
+ So that you can distribute a single APK broadly across your full customer
+ base of phones and tablets, make sure that your app doesn't declare
+ requirements for hardware features that aren't commonly available on tablets.
+ Instead, properly declare the hardware features as <em>not required</em> in the app
+ manifest, as described below.
</p>
<ul>
-<li>Your app's manifest should not include <a
-href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code><uses-feature></code></a>
-elements for hardware features or capabilities that might not be
-available on tablets, except when they are declared with the
-<code>android:required=”false”</code> attribute. For example, your app should
-not <em>require</em> features such as:
+<li>In your app manifest, locate any <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code><uses-feature></code></a>
+elements. In particular, look for hardware features that might not be
+available on some tablets, such as:
+
<ul>
<li><code>android.hardware.telephony</code></li>
<li><code>android.hardware.camera</code> (refers to back camera), or</li>
<li><code>android.hardware.camera.front</code></li>
-</ul>
-</li>
-<li>Similarly, your app manifest should not include any <a
-href="{@docRoot}guide/topics/manifest/permission-element.html"><code><permission></code></a> elements that <a
-href="{@docRoot}guide/topics/manifest/uses-feature-element.html#permissions">imply
-feature requirements</a> that might not be appropriate for tablets, except when
-accompanied by a corresponding <code><uses-feature></code> element
-declared with the <code>android:required=”false”</code> attribute.
-<p>Here's an example of a dependency that's properly declared as "not required", so that
-it does not limit distribution to devices that do not support the dependency:</p>
-<p><code><uses-feature android:name="android.hardware.telephony"
-android:required="false" /></code></p></li>
+</ul></li>
+
+<li>Declare the <a href="{@docRoot}guide/topics/manifest/uses-feature-element.html"><code><uses-feature></code></a>
+elements as <em>not required</em> by including the <code>android:required=”false”</code>
+attribute.
+
+<p>
+ For example, here's the proper way to declare a dependency on
+ <code>android.hardware.telephony</code>, such that you can still
+ distribute the app broadly, even to devices that don't offer telephony:
+</p>
+
+<pre><uses-feature android:name="android.hardware.telephony" android:required="false" /></pre></li>
+
+<li>Similarly, check the manifest for <a href="/guide/topics/manifest/permission-element.html"><code><permission></code></a> elements that
+<a href="/guide/topics/manifest/uses-feature-element.html#permissions">imply hardware
+feature requirements</a> that not be appropriate for tablets. If you find such
+permissions, make sure to explicitly declare a corresponding
+<code><uses-feature></code> element for the features and includes the
+<code>android:required=”false”</code> attribute.</li>
</ul>
-<p>In all cases, the app must function normally when the hardware features it
-uses are not available and should offer "graceful degradation" and alternative
-functionality where appropriate. For example, if GPS is not supported on the device,
-your app could let the user set their location manually. The app should do
-run-time checking for the hardware capability that it needs and handle as needed.</p>
+
+<p>
+ After declaring hardware features as <em>not required</em>, make sure to test
+ your app on a variety of devices. The app should function normally when the
+ hardware features it uses are not available, and it should offer "graceful
+ degradation" and alternative functionality where appropriate.
+</p>
+
+<p>
+ For example, if an app normally uses GPS to set the location but GPS is not
+ supported on the device, the app could let the user set the location manually
+ instead. The app can check for device hardware capabilities at runtime and handle
+ as needed.
+</p>
<div class="rel-resources">
<h3>
@@ -570,9 +621,7 @@
<h2 id="support-screens">10. Declare support for tablet screens</h2>
<p>To ensure that you can distribute your app to a broad range of tablets, your app should
-declare support for tablet screen sizes in the
-<a href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><code><supports-screens></code></a>
-element in the app manifest, as follows:</p>
+declare support for tablet screen sizes in its manifest file, as follows:</p>
<ul>
<li>A
@@ -590,7 +639,7 @@
element in the manifest, the element should include attributes that specify
<em>all of the size and density combinations for tablet screens</em> that the
app supports. Note that, if possible, you should avoid using the
-<a href="{@docRoot}guide/topics/manifest/supports-screens-element.html"><code><supports-screens></code></a>
+<a href="{@docRoot}guide/topics/manifest/compatible-screens-element.html"><code><compatible-screens></code></a>
element in your app.</p>
<div class="rel-resources">
@@ -617,14 +666,14 @@
ways to promote your tablet app to users on Google Play.
</p>
-<h5>
+<h4>
Upload screenshots of your tablet UI
-</h5>
+</h4>
<p>
Tablet users want to know what your app is like on a tablet device, not on a
phone. If you developed a tablet app, make sure to upload screenshots
- of your tablet UI to the Developer Console. Here are some guidelines:
+ of your tablet UI to the Google Play Developer Console. Here are some guidelines:
</p>
<ul style="margin-top:0;">
@@ -652,9 +701,9 @@
</li>
</ul>
-<h5>
+<h4>
Update your app description and release notes
-</h5>
+</h4>
<ul>
<li>In your app description, make sure to highlight that your app offers
@@ -667,9 +716,9 @@
</li>
</ul>
-<h5>
+<h4>
Update your promotional video
-</h5>
+</h4>
<p>
Many users view an app's promotional video to get an idea of what the app is
@@ -698,9 +747,9 @@
</li>
</ul>
-<h5>
+<h4>
Feature your tablet UI in your promotional campaigns
-</h5>
+</h4>
<p>
Make sure to let tablet users know about your tablet UI in your promotional
@@ -759,15 +808,59 @@
</ul>
</div>
-<h2 id="google-play-bp">12. Follow best practices for publishing in Google Play</h2>
+<h2 id="google-play-best-practices">12. Follow best practices for publishing in Google Play</h2>
-Here are some best practices to consider when publishing a tablet app on Google Play.</p>
+<p>Here are some best practices for delivering a successful tablet app on Google Play.</p>
-<h5>Check the app's filtering</h5>
+<h4 id="google-play-optimization-tips">Check out your app's Optimization Tips</h4>
+
+<p>The Google Play Developer Console now offers an Optimization Tips page that
+lets you quickly check how your app is doing against basic guidelines for tablet app
+distribution and quality. To visit the page, sign into the Developer Console,
+load the app from All Applications, and click Optimization Tips in
+the left navigation.</p>
+
+<div class="sidebox-wrapper">
+<div class="sidebox">
+<h2 style="line-height:1em;">How to Send Feedback</h2>
+
+<p>Please use the link below to send
+feedback or request a manual review of your Optimization Tips.</p>
+
+<p>Make sure to read the relevant sections of the Tablet App Quality
+Guidelines prior to sending feedback.</p>
+
+<p><strong><a href="https://support.google.com/googleplay/android-developer/contact/tabletf"
+target="_googleplay" style="white-space:nowrap">Tablet Optimization
+Tips Feedback Form »</a></strong></p>
+</div>
+</div>
+
+<p>The Developer Console creates your app's Optimization Tips page
+by running a series of checks to verify basic quality
+criteria. If it finds any issues, it alerts you to them as "To Do"
+items in the Optimization Tips page.</p>
+
+<p>If you've developed a tablet experience for your app, make sure
+to visit the Optimization Tips page to see how your app is doing
+against the basic checks. If there are any issues listed, we
+recommend addressing them in your app and uploading a new binary for
+distribution, if needed.</p>
+
+<p>If the Optimization Tips page lists "To Do" issues that you feel don't
+apply to your app or affect its quality on tablets, please notify us
+using the <a href="https://support.google.com/googleplay/android-developer/contact/tabletf"
+target="_googleplay" style="white-space:nowrap">Tablet Optimization
+Tips Feedback Form</a>. We
+will review your app and update your Optimization Tips page as
+appropriate.</p>
+
+
+<h4>Confirm the app's filtering</h4>
<p>After you've uploaded the app to the <a href="https://play.google.com/apps/publish/">Developer Console</a>, check the APK's Supported Devices list to make sure that the app is not filtered from tablet devices that you want to target.</p>
-<h5>Distribute as a single APK</h5>
+<h4>Distribute as a single APK</h4>
<p>
It's recommended that you publish your app as a single APK for all screen
diff --git a/packages/SystemUI/ic_sysbar_internal.psd b/packages/SystemUI/ic_sysbar_internal.psd
new file mode 100644
index 0000000..929c872
--- /dev/null
+++ b/packages/SystemUI/ic_sysbar_internal.psd
Binary files differ
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index 5b911c1..683824b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -315,9 +315,9 @@
protected View updateNotificationVetoButton(View row, StatusBarNotification n) {
View vetoButton = row.findViewById(R.id.veto);
if (n.isClearable()) {
- final String _pkg = n.pkg;
- final String _tag = n.tag;
- final int _id = n.id;
+ final String _pkg = n.getPackageName();
+ final String _tag = n.getTag();
+ final int _id = n.getId();
vetoButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Accessibility feedback
@@ -341,14 +341,14 @@
protected void applyLegacyRowBackground(StatusBarNotification sbn, View content) {
- if (sbn.notification.contentView.getLayoutId() !=
+ if (sbn.getNotification().contentView.getLayoutId() !=
com.android.internal.R.layout.notification_template_base) {
int version = 0;
try {
- ApplicationInfo info = mContext.getPackageManager().getApplicationInfo(sbn.pkg, 0);
+ ApplicationInfo info = mContext.getPackageManager().getApplicationInfo(sbn.getPackageName(), 0);
version = info.targetSdkVersion;
} catch (NameNotFoundException ex) {
- Slog.e(TAG, "Failed looking up ApplicationInfo for " + sbn.pkg, ex);
+ Slog.e(TAG, "Failed looking up ApplicationInfo for " + sbn.getPackageName(), ex);
}
if (version > 0 && version < Build.VERSION_CODES.GINGERBREAD) {
content.setBackgroundResource(R.drawable.notification_row_legacy_bg);
@@ -729,8 +729,8 @@
int maxHeight =
mContext.getResources().getDimensionPixelSize(R.dimen.notification_max_height);
StatusBarNotification sbn = entry.notification;
- RemoteViews oneU = sbn.notification.contentView;
- RemoteViews large = sbn.notification.bigContentView;
+ RemoteViews oneU = sbn.getNotification().contentView;
+ RemoteViews large = sbn.getNotification().bigContentView;
if (oneU == null) {
return false;
}
@@ -741,7 +741,7 @@
View row = inflater.inflate(R.layout.status_bar_notification_row, parent, false);
// for blaming (see SwipeHelper.setLongPressListener)
- row.setTag(sbn.pkg);
+ row.setTag(sbn.getPackageName());
workAroundBadLayerDrawableOpacity(row);
View vetoButton = updateNotificationVetoButton(row, sbn);
@@ -756,10 +756,10 @@
content.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
- PendingIntent contentIntent = sbn.notification.contentIntent;
+ PendingIntent contentIntent = sbn.getNotification().contentIntent;
if (contentIntent != null) {
final View.OnClickListener listener = new NotificationClicker(contentIntent,
- sbn.pkg, sbn.tag, sbn.id);
+ sbn.getPackageName(), sbn.getTag(), sbn.getId());
content.setOnClickListener(listener);
} else {
content.setOnClickListener(null);
@@ -775,7 +775,7 @@
}
}
catch (RuntimeException e) {
- final String ident = sbn.pkg + "/0x" + Integer.toHexString(sbn.id);
+ final String ident = sbn.getPackageName() + "/0x" + Integer.toHexString(sbn.getId());
Slog.e(TAG, "couldn't inflate view for notification " + ident, e);
return false;
}
@@ -904,7 +904,7 @@
void handleNotificationError(IBinder key, StatusBarNotification n, String message) {
removeNotification(key);
try {
- mBarService.onNotificationError(n.pkg, n.tag, n.id, n.uid, n.initialPid, message);
+ mBarService.onNotificationError(n.getPackageName(), n.getTag(), n.getId(), n.getUid(), n.getInitialPid(), message);
} catch (RemoteException ex) {
// The end is nigh.
}
@@ -932,16 +932,16 @@
}
// Construct the icon.
final StatusBarIconView iconView = new StatusBarIconView(mContext,
- notification.pkg + "/0x" + Integer.toHexString(notification.id),
- notification.notification);
+ notification.getPackageName() + "/0x" + Integer.toHexString(notification.getId()),
+ notification.getNotification());
iconView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
- final StatusBarIcon ic = new StatusBarIcon(notification.pkg,
- notification.user,
- notification.notification.icon,
- notification.notification.iconLevel,
- notification.notification.number,
- notification.notification.tickerText);
+ final StatusBarIcon ic = new StatusBarIcon(notification.getPackageName(),
+ notification.getUser(),
+ notification.getNotification().icon,
+ notification.getNotification().iconLevel,
+ notification.getNotification().number,
+ notification.getNotification().tickerText);
if (!iconView.set(ic)) {
handleNotificationError(key, notification, "Couldn't create icon: " + ic);
return null;
@@ -1026,19 +1026,19 @@
final StatusBarNotification oldNotification = oldEntry.notification;
// XXX: modify when we do something more intelligent with the two content views
- final RemoteViews oldContentView = oldNotification.notification.contentView;
- final RemoteViews contentView = notification.notification.contentView;
- final RemoteViews oldBigContentView = oldNotification.notification.bigContentView;
- final RemoteViews bigContentView = notification.notification.bigContentView;
+ final RemoteViews oldContentView = oldNotification.getNotification().contentView;
+ final RemoteViews contentView = notification.getNotification().contentView;
+ final RemoteViews oldBigContentView = oldNotification.getNotification().bigContentView;
+ final RemoteViews bigContentView = notification.getNotification().bigContentView;
if (DEBUG) {
- Slog.d(TAG, "old notification: when=" + oldNotification.notification.when
+ Slog.d(TAG, "old notification: when=" + oldNotification.getNotification().when
+ " ongoing=" + oldNotification.isOngoing()
+ " expanded=" + oldEntry.expanded
+ " contentView=" + oldContentView
+ " bigContentView=" + oldBigContentView
+ " rowParent=" + oldEntry.row.getParent());
- Slog.d(TAG, "new notification: when=" + notification.notification.when
+ Slog.d(TAG, "new notification: when=" + notification.getNotification().when
+ " ongoing=" + oldNotification.isOngoing()
+ " contentView=" + contentView
+ " bigContentView=" + bigContentView);
@@ -1062,13 +1062,13 @@
&& oldBigContentView.getPackage().equals(bigContentView.getPackage())
&& oldBigContentView.getLayoutId() == bigContentView.getLayoutId());
ViewGroup rowParent = (ViewGroup) oldEntry.row.getParent();
- boolean orderUnchanged = notification.notification.when==oldNotification.notification.when
- && notification.score == oldNotification.score;
+ boolean orderUnchanged = notification.getNotification().when== oldNotification.getNotification().when
+ && notification.getScore() == oldNotification.getScore();
// score now encompasses/supersedes isOngoing()
- boolean updateTicker = notification.notification.tickerText != null
- && !TextUtils.equals(notification.notification.tickerText,
- oldEntry.notification.notification.tickerText);
+ boolean updateTicker = notification.getNotification().tickerText != null
+ && !TextUtils.equals(notification.getNotification().tickerText,
+ oldEntry.notification.getNotification().tickerText);
boolean isTopAnyway = isTopNotification(rowParent, oldEntry);
if (contentsUnchanged && bigContentsUnchanged && (orderUnchanged || isTopAnyway)) {
if (DEBUG) Slog.d(TAG, "reusing notification for key: " + key);
@@ -1080,20 +1080,20 @@
bigContentView.reapply(mContext, oldEntry.getLargeView(), mOnClickHandler);
}
// update the contentIntent
- final PendingIntent contentIntent = notification.notification.contentIntent;
+ final PendingIntent contentIntent = notification.getNotification().contentIntent;
if (contentIntent != null) {
final View.OnClickListener listener = makeClicker(contentIntent,
- notification.pkg, notification.tag, notification.id);
+ notification.getPackageName(), notification.getTag(), notification.getId());
oldEntry.content.setOnClickListener(listener);
} else {
oldEntry.content.setOnClickListener(null);
}
// Update the icon.
- final StatusBarIcon ic = new StatusBarIcon(notification.pkg,
- notification.user,
- notification.notification.icon, notification.notification.iconLevel,
- notification.notification.number,
- notification.notification.tickerText);
+ final StatusBarIcon ic = new StatusBarIcon(notification.getPackageName(),
+ notification.getUser(),
+ notification.getNotification().icon, notification.getNotification().iconLevel,
+ notification.getNotification().number,
+ notification.getNotification().tickerText);
if (!oldEntry.icon.set(ic)) {
handleNotificationError(key, notification, "Couldn't update icon: " + ic);
return;
@@ -1144,7 +1144,7 @@
if (DEBUG) Slog.d(TAG, "updating the current intruder:" + notification);
// XXX: this is a hack for Alarms. The real implementation will need to *update*
// the intruder.
- if (notification.notification.fullScreenIntent == null) { // TODO(dsandler): consistent logic with add()
+ if (notification.getNotification().fullScreenIntent == null) { // TODO(dsandler): consistent logic with add()
if (DEBUG) Slog.d(TAG, "no longer intrudes!");
mHandler.sendEmptyMessage(MSG_HIDE_INTRUDER);
}
@@ -1155,9 +1155,9 @@
// A: Almost none! Only things coming from the system (package is "android") that also
// have special "kind" tags marking them as relevant for setup (see below).
protected boolean showNotificationEvenIfUnprovisioned(StatusBarNotification sbn) {
- if ("android".equals(sbn.pkg)) {
- if (sbn.notification.kind != null) {
- for (String aKind : sbn.notification.kind) {
+ if ("android".equals(sbn.getPackageName())) {
+ if (sbn.getNotification().kind != null) {
+ for (String aKind : sbn.getNotification().kind) {
// IME switcher, created by InputMethodManagerService
if ("android.system.imeswitcher".equals(aKind)) return true;
// OTA availability & errors, created by SystemUpdateService
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
index 886ed77..2c7a2a8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationData.java
@@ -89,10 +89,10 @@
public int compare(Entry a, Entry b) {
final StatusBarNotification na = a.notification;
final StatusBarNotification nb = b.notification;
- int d = na.score - nb.score;
+ int d = na.getScore() - nb.getScore();
return (d != 0)
? d
- : (int)(na.notification.when - nb.notification.when);
+ : (int)(na.getNotification().when - nb.getNotification().when);
}
};
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index d98f08e..edb3172 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -863,7 +863,7 @@
}
public void addNotification(IBinder key, StatusBarNotification notification) {
- if (DEBUG) Slog.d(TAG, "addNotification score=" + notification.score);
+ if (DEBUG) Slog.d(TAG, "addNotification score=" + notification.getScore());
StatusBarIconView iconView = addNotificationViews(key, notification);
if (iconView == null) return;
@@ -912,7 +912,7 @@
} else
*/
- if (notification.notification.fullScreenIntent != null) {
+ if (notification.getNotification().fullScreenIntent != null) {
// Stop screensaver if the notification has a full-screen intent.
// (like an incoming phone call)
awakenDreams();
@@ -920,7 +920,7 @@
// not immersive & a full-screen alert should be shown
if (DEBUG) Slog.d(TAG, "Notification has fullScreenIntent; sending fullScreenIntent");
try {
- notification.notification.fullScreenIntent.send();
+ notification.getNotification().fullScreenIntent.send();
} catch (PendingIntent.CanceledException e) {
}
} else {
@@ -1053,7 +1053,7 @@
// If the device hasn't been through Setup, we only show system notifications
for (int i=0; i<N; i++) {
Entry ent = mNotificationData.get(N-i-1);
- if (!((provisioned && ent.notification.score >= HIDE_ICONS_BELOW_SCORE)
+ if (!((provisioned && ent.notification.getScore() >= HIDE_ICONS_BELOW_SCORE)
|| showNotificationEvenIfUnprovisioned(ent.notification))) continue;
if (!notificationIsForCurrentUser(ent.notification)) continue;
toShow.add(ent.icon);
@@ -1961,7 +1961,7 @@
// until status bar window is attached to the window manager,
// because... well, what's the point otherwise? And trying to
// run a ticker without being attached will crash!
- if (n.notification.tickerText != null && mStatusBarWindow.getWindowToken() != null) {
+ if (n.getNotification().tickerText != null && mStatusBarWindow.getWindowToken() != null) {
if (0 == (mDisabled & (StatusBarManager.DISABLE_NOTIFICATION_ICONS
| StatusBarManager.DISABLE_NOTIFICATION_TICKER))) {
mTicker.addEntry(n);
@@ -2066,9 +2066,9 @@
NotificationData.Entry e = mNotificationData.get(i);
pw.println(" [" + i + "] key=" + e.key + " icon=" + e.icon);
StatusBarNotification n = e.notification;
- pw.println(" pkg=" + n.pkg + " id=" + n.id + " score=" + n.score);
- pw.println(" notification=" + n.notification);
- pw.println(" tickerText=\"" + n.notification.tickerText + "\"");
+ pw.println(" pkg=" + n.getPackageName() + " id=" + n.getId() + " score=" + n.getScore());
+ pw.println(" notification=" + n.getNotification());
+ pw.println(" tickerText=\"" + n.getNotification().tickerText + "\"");
}
}
@@ -2369,9 +2369,9 @@
try {
mBarService.onNotificationClear(
- mCurrentlyIntrudingNotification.pkg,
- mCurrentlyIntrudingNotification.tag,
- mCurrentlyIntrudingNotification.id);
+ mCurrentlyIntrudingNotification.getPackageName(),
+ mCurrentlyIntrudingNotification.getTag(),
+ mCurrentlyIntrudingNotification.getId());
} catch (android.os.RemoteException ex) {
// oh well
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/Ticker.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/Ticker.java
index 976dd01..f3f6a80 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/Ticker.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/Ticker.java
@@ -189,25 +189,25 @@
// a notification storm).
if (initialCount > 0) {
final Segment seg = mSegments.get(0);
- if (n.pkg.equals(seg.notification.pkg)
- && n.notification.icon == seg.notification.notification.icon
- && n.notification.iconLevel == seg.notification.notification.iconLevel
- && CharSequences.equals(seg.notification.notification.tickerText,
- n.notification.tickerText)) {
+ if (n.getPackageName().equals(seg.notification.getPackageName())
+ && n.getNotification().icon == seg.notification.getNotification().icon
+ && n.getNotification().iconLevel == seg.notification.getNotification().iconLevel
+ && CharSequences.equals(seg.notification.getNotification().tickerText,
+ n.getNotification().tickerText)) {
return;
}
}
final Drawable icon = StatusBarIconView.getIcon(mContext,
- new StatusBarIcon(n.pkg, n.user, n.notification.icon, n.notification.iconLevel, 0,
- n.notification.tickerText));
- final CharSequence text = n.notification.tickerText;
+ new StatusBarIcon(n.getPackageName(), n.getUser(), n.getNotification().icon, n.getNotification().iconLevel, 0,
+ n.getNotification().tickerText));
+ final CharSequence text = n.getNotification().tickerText;
final Segment newSegment = new Segment(n, icon, text);
// If there's already a notification schedule for this package and id, remove it.
for (int i=0; i<mSegments.size(); i++) {
Segment seg = mSegments.get(i);
- if (n.id == seg.notification.id && n.pkg.equals(seg.notification.pkg)) {
+ if (n.getId() == seg.notification.getId() && n.getPackageName().equals(seg.notification.getPackageName())) {
// just update that one to use this new data instead
mSegments.remove(i--); // restart iteration here
}
@@ -235,7 +235,7 @@
public void removeEntry(StatusBarNotification n) {
for (int i=mSegments.size()-1; i>=0; i--) {
Segment seg = mSegments.get(i);
- if (n.id == seg.notification.id && n.pkg.equals(seg.notification.pkg)) {
+ if (n.getId() == seg.notification.getId() && n.getPackageName().equals(seg.notification.getPackageName())) {
mSegments.remove(i);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
index 05bba89..bfa1b63 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java
@@ -859,12 +859,12 @@
final boolean immersive = isImmersive();
if (false && immersive) {
// TODO: immersive mode popups for tablet
- } else if (notification.notification.fullScreenIntent != null) {
+ } else if (notification.getNotification().fullScreenIntent != null) {
// not immersive & a full-screen alert should be shown
Slog.w(TAG, "Notification has fullScreenIntent and activity is not immersive;"
+ " sending fullScreenIntent");
try {
- notification.notification.fullScreenIntent.send();
+ notification.getNotification().fullScreenIntent.send();
} catch (PendingIntent.CanceledException e) {
}
} else {
@@ -971,14 +971,14 @@
}
// If they asked for FLAG_ONLY_ALERT_ONCE, then only show this notification
// if it's a new notification.
- if (!firstTime && (n.notification.flags & Notification.FLAG_ONLY_ALERT_ONCE) != 0) {
+ if (!firstTime && (n.getNotification().flags & Notification.FLAG_ONLY_ALERT_ONCE) != 0) {
return;
}
// Show the ticker if one is requested. Also don't do this
// until status bar window is attached to the window manager,
// because... well, what's the point otherwise? And trying to
// run a ticker without being attached will crash!
- if (hasTicker(n.notification) && mStatusBarView.getWindowToken() != null) {
+ if (hasTicker(n.getNotification()) && mStatusBarView.getWindowToken() != null) {
if (0 == (mDisabled & (StatusBarManager.DISABLE_NOTIFICATION_ICONS
| StatusBarManager.DISABLE_NOTIFICATION_TICKER))) {
mTicker.add(key, n);
@@ -1410,7 +1410,7 @@
for (int i=0; toShow.size()< maxNotificationIconsCount; i++) {
if (i >= N) break;
Entry ent = mNotificationData.get(N-i-1);
- if ((provisioned && ent.notification.score >= HIDE_ICONS_BELOW_SCORE)
+ if ((provisioned && ent.notification.getScore() >= HIDE_ICONS_BELOW_SCORE)
|| showNotificationEvenIfUnprovisioned(ent.notification)) {
toShow.add(ent.icon);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java
index 725d9e6..095c441 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletTicker.java
@@ -249,7 +249,7 @@
}
private View makeTickerView(StatusBarNotification notification) {
- final Notification n = notification.notification;
+ final Notification n = notification.getNotification();
LayoutInflater inflater = (LayoutInflater)mContext.getSystemService(
Context.LAYOUT_INFLATER_SERVICE);
@@ -274,8 +274,8 @@
exception = e;
}
if (expanded == null) {
- final String ident = notification.pkg
- + "/0x" + Integer.toHexString(notification.id);
+ final String ident = notification.getPackageName()
+ + "/0x" + Integer.toHexString(notification.getId());
Slog.e(TAG, "couldn't inflate view for notification " + ident, exception);
return null;
}
@@ -286,7 +286,7 @@
} else if (n.tickerText != null) {
group = (ViewGroup)inflater.inflate(R.layout.system_bar_ticker_compat, mWindow, false);
final Drawable icon = StatusBarIconView.getIcon(mContext,
- new StatusBarIcon(notification.pkg, notification.user, n.icon, n.iconLevel, 0,
+ new StatusBarIcon(notification.getPackageName(), notification.getUser(), n.icon, n.iconLevel, 0,
n.tickerText));
ImageView iv = (ImageView)group.findViewById(iconId);
iv.setImageDrawable(icon);
@@ -313,12 +313,12 @@
}
if (CLICKABLE_TICKER) {
- PendingIntent contentIntent = notification.notification.contentIntent;
+ PendingIntent contentIntent = notification.getNotification().contentIntent;
if (contentIntent != null) {
// create the usual notification clicker, but chain it together with a halt() call
// to abort the ticker too
final View.OnClickListener clicker = mBar.makeClicker(contentIntent,
- notification.pkg, notification.tag, notification.id);
+ notification.getPackageName(), notification.getTag(), notification.getId());
group.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
halt();
diff --git a/services/input/InputReader.cpp b/services/input/InputReader.cpp
index ab38ed20..3d6b6e7 100644
--- a/services/input/InputReader.cpp
+++ b/services/input/InputReader.cpp
@@ -6110,15 +6110,42 @@
for (size_t i = 0; i < mAxes.size(); i++) {
const Axis& axis = mAxes.valueAt(i);
- info->addMotionRange(axis.axisInfo.axis, AINPUT_SOURCE_JOYSTICK,
- axis.min, axis.max, axis.flat, axis.fuzz, axis.resolution);
+ addMotionRange(axis.axisInfo.axis, axis, info);
+
if (axis.axisInfo.mode == AxisInfo::MODE_SPLIT) {
- info->addMotionRange(axis.axisInfo.highAxis, AINPUT_SOURCE_JOYSTICK,
- axis.min, axis.max, axis.flat, axis.fuzz, axis.resolution);
+ addMotionRange(axis.axisInfo.highAxis, axis, info);
+
}
}
}
+void JoystickInputMapper::addMotionRange(int32_t axisId, const Axis& axis,
+ InputDeviceInfo* info) {
+ info->addMotionRange(axisId, AINPUT_SOURCE_JOYSTICK,
+ axis.min, axis.max, axis.flat, axis.fuzz, axis.resolution);
+ /* In order to ease the transition for developers from using the old axes
+ * to the newer, more semantically correct axes, we'll continue to register
+ * the old axes as duplicates of their corresponding new ones. */
+ int32_t compatAxis = getCompatAxis(axisId);
+ if (compatAxis >= 0) {
+ info->addMotionRange(compatAxis, AINPUT_SOURCE_JOYSTICK,
+ axis.min, axis.max, axis.flat, axis.fuzz, axis.resolution);
+ }
+}
+
+/* A mapping from axes the joystick actually has to the axes that should be
+ * artificially created for compatibility purposes.
+ * Returns -1 if no compatibility axis is needed. */
+int32_t JoystickInputMapper::getCompatAxis(int32_t axis) {
+ switch(axis) {
+ case AMOTION_EVENT_AXIS_LTRIGGER:
+ return AMOTION_EVENT_AXIS_BRAKE;
+ case AMOTION_EVENT_AXIS_RTRIGGER:
+ return AMOTION_EVENT_AXIS_GAS;
+ }
+ return -1;
+}
+
void JoystickInputMapper::dump(String8& dump) {
dump.append(INDENT2 "Joystick Input Mapper:\n");
@@ -6373,9 +6400,10 @@
size_t numAxes = mAxes.size();
for (size_t i = 0; i < numAxes; i++) {
const Axis& axis = mAxes.valueAt(i);
- pointerCoords.setAxisValue(axis.axisInfo.axis, axis.currentValue);
+ setPointerCoordsAxisValue(&pointerCoords, axis.axisInfo.axis, axis.currentValue);
if (axis.axisInfo.mode == AxisInfo::MODE_SPLIT) {
- pointerCoords.setAxisValue(axis.axisInfo.highAxis, axis.highCurrentValue);
+ setPointerCoordsAxisValue(&pointerCoords, axis.axisInfo.highAxis,
+ axis.highCurrentValue);
}
}
@@ -6391,6 +6419,19 @@
getListener()->notifyMotion(&args);
}
+void JoystickInputMapper::setPointerCoordsAxisValue(PointerCoords* pointerCoords,
+ int32_t axis, float value) {
+ pointerCoords->setAxisValue(axis, value);
+ /* In order to ease the transition for developers from using the old axes
+ * to the newer, more semantically correct axes, we'll continue to produce
+ * values for the old axes as mirrors of the value of their corresponding
+ * new axes. */
+ int32_t compatAxis = getCompatAxis(axis);
+ if (compatAxis >= 0) {
+ pointerCoords->setAxisValue(compatAxis, value);
+ }
+}
+
bool JoystickInputMapper::filterAxes(bool force) {
bool atLeastOneSignificantChange = force;
size_t numAxes = mAxes.size();
diff --git a/services/input/InputReader.h b/services/input/InputReader.h
index 312f19b..ed2a5c1 100644
--- a/services/input/InputReader.h
+++ b/services/input/InputReader.h
@@ -1805,6 +1805,11 @@
float newValue, float currentValue, float thresholdValue);
static bool isCenteredAxis(int32_t axis);
+ static int32_t getCompatAxis(int32_t axis);
+
+ static void addMotionRange(int32_t axisId, const Axis& axis, InputDeviceInfo* info);
+ static void setPointerCoordsAxisValue(PointerCoords* pointerCoords, int32_t axis,
+ float value);
};
} // namespace android
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index c2f4a2c..3e19094 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -432,6 +432,9 @@
mRadioAttributes[r.mType] = r;
}
+ // TODO: What is the "correct" way to do determine if this is a wifi only device?
+ boolean wifiOnly = SystemProperties.getBoolean("ro.radio.noril", false);
+ log("wifiOnly=" + wifiOnly);
String[] naStrings = context.getResources().getStringArray(
com.android.internal.R.array.networkAttributes);
for (String naString : naStrings) {
@@ -442,6 +445,11 @@
n.type);
continue;
}
+ if (wifiOnly && ConnectivityManager.isNetworkTypeMobile(n.type)) {
+ log("networkAttributes - ignoring mobile as this dev is wifiOnly " +
+ n.type);
+ continue;
+ }
if (mNetConfigs[n.type] != null) {
loge("Error in networkAttributes - ignoring attempt to redefine type " +
n.type);
diff --git a/services/java/com/android/server/LockSettingsService.java b/services/java/com/android/server/LockSettingsService.java
index 41cc4d7..d52a8e2 100644
--- a/services/java/com/android/server/LockSettingsService.java
+++ b/services/java/com/android/server/LockSettingsService.java
@@ -108,24 +108,31 @@
final ContentResolver cr = mContext.getContentResolver();
List<UserInfo> users = um.getUsers();
for (int user = 0; user < users.size(); user++) {
- int userId = users.get(user).getUserHandle().getIdentifier();
- for (String perUserSetting : MIGRATE_SETTINGS_PER_USER) {
- // Handle Strings
- String value = Settings.Secure.getStringForUser(cr, perUserSetting, userId);
- if (value != null) {
- setString(perUserSetting, value, userId);
- Settings.Secure.putStringForUser(cr, perUserSetting, "", userId);
- continue;
- }
+ // Migrate owner info
+ final int userId = users.get(user).id;
+ final String OWNER_INFO = Secure.LOCK_SCREEN_OWNER_INFO;
+ String ownerInfo = Settings.Secure.getStringForUser(cr, OWNER_INFO, userId);
+ if (ownerInfo != null) {
+ setString(OWNER_INFO, ownerInfo, userId);
+ Settings.Secure.putStringForUser(cr, ownerInfo, "", userId);
+ }
- // Handle integers
- try {
- int ivalue = Settings.Secure.getIntForUser(cr, perUserSetting, userId);
- setLong(perUserSetting, ivalue, userId);
- Settings.Secure.putIntForUser(cr, perUserSetting, 0, userId);
- } catch (SettingNotFoundException e) {
+ // Migrate owner info enabled. Note there was a bug where older platforms only
+ // stored this value if the checkbox was toggled at least once. The code detects
+ // this case by handling the exception.
+ final String OWNER_INFO_ENABLED = Secure.LOCK_SCREEN_OWNER_INFO_ENABLED;
+ boolean enabled;
+ try {
+ int ivalue = Settings.Secure.getIntForUser(cr, OWNER_INFO_ENABLED, userId);
+ enabled = ivalue != 0;
+ setLong(OWNER_INFO_ENABLED, enabled ? 1 : 0, userId);
+ } catch (SettingNotFoundException e) {
+ // Setting was never stored. Store it if the string is not empty.
+ if (!TextUtils.isEmpty(ownerInfo)) {
+ setLong(OWNER_INFO_ENABLED, 1, userId);
}
}
+ Settings.Secure.putIntForUser(cr, OWNER_INFO_ENABLED, 0, userId);
}
// No need to move the password / pattern files. They're already in the right place.
setString("migrated_user_specific", "true", 0);
@@ -447,11 +454,9 @@
Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED
};
- private static final String[] MIGRATE_SETTINGS_PER_USER = new String[] {
+ // These are protected with a read permission
+ private static final String[] READ_PROFILE_PROTECTED_SETTINGS = new String[] {
Secure.LOCK_SCREEN_OWNER_INFO_ENABLED,
Secure.LOCK_SCREEN_OWNER_INFO
};
-
- // These are protected with a read permission
- private static final String[] READ_PROFILE_PROTECTED_SETTINGS = MIGRATE_SETTINGS_PER_USER;
}
diff --git a/services/java/com/android/server/NotificationManagerService.java b/services/java/com/android/server/NotificationManagerService.java
index f0257ffe..cc74b92 100644
--- a/services/java/com/android/server/NotificationManagerService.java
+++ b/services/java/com/android/server/NotificationManagerService.java
@@ -49,7 +49,6 @@
import android.media.IRingtonePlayer;
import android.net.Uri;
import android.os.Binder;
-import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
@@ -285,7 +284,7 @@
public void record(StatusBarNotification nr) {
// Nuke heavy parts of notification before storing in archive
- nr.notification.lightenPayload();
+ nr.getNotification().lightenPayload();
if (mBuffer.size() == BUFFER_SIZE) {
mBuffer.removeFirst();
@@ -312,7 +311,7 @@
private StatusBarNotification findNext() {
while (iter.hasNext()) {
StatusBarNotification nr = iter.next();
- if ((pkg == null || nr.pkg == pkg)
+ if ((pkg == null || nr.getPackageName() == pkg)
&& (userId == UserHandle.USER_ALL || nr.getUserId() == userId)) {
return nr;
}
@@ -786,7 +785,7 @@
*
* @param token The binder for the listener, to check that the caller is allowed
*/
- public void clearAllNotificationsFromListener(INotificationListener token) {
+ public void cancelAllNotificationsFromListener(INotificationListener token) {
NotificationListenerInfo info = checkListenerToken(token);
long identity = Binder.clearCallingIdentity();
try {
@@ -803,7 +802,7 @@
*
* @param token The binder for the listener, to check that the caller is allowed
*/
- public void clearNotificationFromListener(INotificationListener token, String pkg, String tag, int id) {
+ public void cancelNotificationFromListener(INotificationListener token, String pkg, String tag, int id) {
NotificationListenerInfo info = checkListenerToken(token);
long identity = Binder.clearCallingIdentity();
try {
@@ -816,6 +815,30 @@
}
}
+ /**
+ * Allow an INotificationListener to request the list of outstanding notifications seen by
+ * the current user. Useful when starting up, after which point the listener callbacks should
+ * be used.
+ *
+ * @param token The binder for the listener, to check that the caller is allowed
+ */
+ public StatusBarNotification[] getActiveNotificationsFromListener(INotificationListener token) {
+ NotificationListenerInfo info = checkListenerToken(token);
+
+ StatusBarNotification[] result = new StatusBarNotification[0];
+ ArrayList<StatusBarNotification> list = new ArrayList<StatusBarNotification>();
+ synchronized (mNotificationList) {
+ final int N = mNotificationList.size();
+ for (int i=0; i<N; i++) {
+ StatusBarNotification sbn = mNotificationList.get(i).sbn;
+ if (info.enabledAndUserMatches(sbn)) {
+ list.add(sbn);
+ }
+ }
+ }
+ return list.toArray(result);
+ }
+
// -- end of listener APIs --
public static final class NotificationRecord
@@ -828,17 +851,17 @@
this.sbn = sbn;
}
- public Notification getNotification() { return sbn.notification; }
- public int getFlags() { return sbn.notification.flags; }
+ public Notification getNotification() { return sbn.getNotification(); }
+ public int getFlags() { return sbn.getNotification().flags; }
public int getUserId() { return sbn.getUserId(); }
void dump(PrintWriter pw, String prefix, Context baseContext) {
- final Notification notification = sbn.notification;
+ final Notification notification = sbn.getNotification();
pw.println(prefix + this);
- pw.println(prefix + " uid=" + sbn.uid + " userId=" + sbn.getUserId());
+ pw.println(prefix + " uid=" + sbn.getUid() + " userId=" + sbn.getUserId());
pw.println(prefix + " icon=0x" + Integer.toHexString(notification.icon)
- + " / " + idDebugString(baseContext, sbn.pkg, notification.icon));
- pw.println(prefix + " pri=" + notification.priority + " score=" + sbn.score);
+ + " / " + idDebugString(baseContext, sbn.getPackageName(), notification.icon));
+ pw.println(prefix + " pri=" + notification.priority + " score=" + sbn.getScore());
pw.println(prefix + " contentIntent=" + notification.contentIntent);
pw.println(prefix + " deleteIntent=" + notification.deleteIntent);
pw.println(prefix + " tickerText=" + notification.tickerText);
@@ -897,8 +920,8 @@
return String.format(
"NotificationRecord(0x%08x: pkg=%s user=%s id=%d tag=%s score=%d: %s)",
System.identityHashCode(this),
- this.sbn.pkg, this.sbn.user, this.sbn.id, this.sbn.tag,
- this.sbn.score, this.sbn.notification);
+ this.sbn.getPackageName(), this.sbn.getUser(), this.sbn.getId(), this.sbn.getTag(),
+ this.sbn.getScore(), this.sbn.getNotification());
}
}
@@ -1517,7 +1540,7 @@
final int N = mNotificationList.size();
for (int i=0; i<N; i++) {
final NotificationRecord r = mNotificationList.get(i);
- if (r.sbn.pkg.equals(pkg) && r.sbn.getUserId() == userId) {
+ if (r.sbn.getPackageName().equals(pkg) && r.sbn.getUserId() == userId) {
count++;
if (count >= MAX_PACKAGE_NOTIFICATIONS) {
Slog.e(TAG, "Package has already posted " + count
@@ -1634,7 +1657,7 @@
long identity = Binder.clearCallingIdentity();
try {
r.statusBarKey = mStatusBar.addNotification(n);
- if ((n.notification.flags & Notification.FLAG_SHOW_LIGHTS) != 0
+ if ((n.getNotification().flags & Notification.FLAG_SHOW_LIGHTS) != 0
&& canInterrupt) {
mAttentionLight.pulse();
}
@@ -1750,7 +1773,7 @@
// does not have the VIBRATE permission.
long identity = Binder.clearCallingIdentity();
try {
- mVibrator.vibrate(r.sbn.uid, r.sbn.basePkg,
+ mVibrator.vibrate(r.sbn.getUid(), r.sbn.getBasePkg(),
useDefaultVibrate ? mDefaultVibrationPattern
: mFallbackVibrationPattern,
((notification.flags & Notification.FLAG_INSISTENT) != 0) ? 0: -1);
@@ -1759,7 +1782,7 @@
}
} else if (notification.vibrate.length > 1) {
// If you want your own vibration pattern, you need the VIBRATE permission
- mVibrator.vibrate(r.sbn.uid, r.sbn.basePkg, notification.vibrate,
+ mVibrator.vibrate(r.sbn.getUid(), r.sbn.getBasePkg(), notification.vibrate,
((notification.flags & Notification.FLAG_INSISTENT) != 0) ? 0: -1);
}
}
@@ -1816,7 +1839,7 @@
} catch (PendingIntent.CanceledException ex) {
// do nothing - there's no relevant way to recover, and
// no reason to let this propagate
- Slog.w(TAG, "canceled PendingIntent for " + r.sbn.pkg, ex);
+ Slog.w(TAG, "canceled PendingIntent for " + r.sbn.getPackageName(), ex);
}
}
}
@@ -1941,7 +1964,7 @@
if ((r.getFlags() & mustNotHaveFlags) != 0) {
continue;
}
- if (pkg != null && !r.sbn.pkg.equals(pkg)) {
+ if (pkg != null && !r.sbn.getPackageName().equals(pkg)) {
continue;
}
canceledSomething = true;
@@ -2041,7 +2064,7 @@
if (mLedNotification == null || mInCall || mScreenOn) {
mNotificationLight.turnOff();
} else {
- final Notification ledno = mLedNotification.sbn.notification;
+ final Notification ledno = mLedNotification.sbn.getNotification();
int ledARGB = ledno.ledARGB;
int ledOnMS = ledno.ledOnMS;
int ledOffMS = ledno.ledOffMS;
@@ -2065,19 +2088,19 @@
final int len = list.size();
for (int i=0; i<len; i++) {
NotificationRecord r = list.get(i);
- if (!notificationMatchesUserId(r, userId) || r.sbn.id != id) {
+ if (!notificationMatchesUserId(r, userId) || r.sbn.getId() != id) {
continue;
}
if (tag == null) {
- if (r.sbn.tag != null) {
+ if (r.sbn.getTag() != null) {
continue;
}
} else {
- if (!tag.equals(r.sbn.tag)) {
+ if (!tag.equals(r.sbn.getTag())) {
continue;
}
}
- if (r.sbn.pkg.equals(pkg)) {
+ if (r.sbn.getPackageName().equals(pkg)) {
return i;
}
}
diff --git a/services/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/java/com/android/server/accessibility/AccessibilityManagerService.java
index 2f64908..3fd534e 100644
--- a/services/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -542,7 +542,8 @@
return -1;
}
- public void registerUiTestAutomationService(IBinder owner, IAccessibilityServiceClient serviceClient,
+ public void registerUiTestAutomationService(IBinder owner,
+ IAccessibilityServiceClient serviceClient,
AccessibilityServiceInfo accessibilityServiceInfo) {
mSecurityPolicy.enforceCallingPermission(Manifest.permission.RETRIEVE_WINDOW_CONTENT,
FUNCTION_REGISTER_UI_TEST_AUTOMATION_SERVICE);
@@ -1260,6 +1261,7 @@
}
private void onUserStateChangedLocked(UserState userState) {
+ updateLegacyCapabilities(userState);
updateServicesLocked(userState);
updateTouchExplorationLocked(userState);
updateEnhancedWebAccessibilityLocked(userState);
@@ -1267,6 +1269,28 @@
scheduleUpdateClientsIfNeededLocked(userState);
}
+ private void updateLegacyCapabilities(UserState userState) {
+ // Up to JB-MR1 we had a white list with services that can enable touch
+ // exploration. When a service is first started we show a dialog to the
+ // use to get a permission to white list the service.
+ final int installedServiceCount = userState.mInstalledServices.size();
+ for (int i = 0; i < installedServiceCount; i++) {
+ AccessibilityServiceInfo serviceInfo = userState.mInstalledServices.get(i);
+ ResolveInfo resolveInfo = serviceInfo.getResolveInfo();
+ if ((serviceInfo.getCapabilities()
+ & AccessibilityServiceInfo.CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION) == 0
+ && resolveInfo.serviceInfo.applicationInfo.targetSdkVersion
+ <= Build.VERSION_CODES.JELLY_BEAN_MR1) {
+ ComponentName componentName = new ComponentName(
+ resolveInfo.serviceInfo.packageName, resolveInfo.serviceInfo.name);
+ if (userState.mTouchExplorationGrantedServices.contains(componentName)) {
+ serviceInfo.setCapabilities(serviceInfo.getCapabilities()
+ | AccessibilityServiceInfo.CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION);
+ }
+ }
+ }
+ }
+
private void updateServicesLocked(UserState userState) {
if (userState.mIsAccessibilityEnabled) {
manageServicesLocked(userState);
@@ -1657,8 +1681,6 @@
Intent mIntent;
- boolean mCanRetrieveScreenContent;
-
boolean mIsAutomation;
final Rect mTempBounds = new Rect();
@@ -1694,15 +1716,11 @@
mAccessibilityServiceInfo = accessibilityServiceInfo;
mIsAutomation = (sFakeAccessibilityServiceComponentName.equals(componentName));
if (!mIsAutomation) {
- mCanRetrieveScreenContent = (accessibilityServiceInfo.getCapabilities()
- & AccessibilityServiceInfo.CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION) != 0;
mIntent = new Intent().setComponent(mComponentName);
mIntent.putExtra(Intent.EXTRA_CLIENT_LABEL,
com.android.internal.R.string.accessibility_binding_label);
mIntent.putExtra(Intent.EXTRA_CLIENT_INTENT, PendingIntent.getActivity(
mContext, 0, new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS), 0));
- } else {
- mCanRetrieveScreenContent = true;
}
setDynamicallyConfigurableProperties(accessibilityServiceInfo);
}
@@ -1732,14 +1750,12 @@
mFetchFlags &= ~AccessibilityNodeInfo.FLAG_REPORT_VIEW_IDS;
}
- if (mResolveInfo != null) {
- mRequestTouchExplorationMode = (info.flags
- & AccessibilityServiceInfo.FLAG_REQUEST_TOUCH_EXPLORATION_MODE) != 0;
- mRequestEnhancedWebAccessibility = (info.flags
- & AccessibilityServiceInfo.FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY) != 0;
- mRequestFilterKeyEvents = (info.flags
- & AccessibilityServiceInfo.FLAG_REQUEST_FILTER_KEY_EVENTS) != 0;
- }
+ mRequestTouchExplorationMode = (info.flags
+ & AccessibilityServiceInfo.FLAG_REQUEST_TOUCH_EXPLORATION_MODE) != 0;
+ mRequestEnhancedWebAccessibility = (info.flags
+ & AccessibilityServiceInfo.FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY) != 0;
+ mRequestFilterKeyEvents = (info.flags
+ & AccessibilityServiceInfo.FLAG_REQUEST_FILTER_KEY_EVENTS) != 0;
}
/**
@@ -2153,7 +2169,7 @@
.loadLabel(mContext.getPackageManager()));
pw.append(", feedbackType"
+ AccessibilityServiceInfo.feedbackTypeToString(mFeedbackType));
- pw.append(", canRetrieveScreenContent=" + mCanRetrieveScreenContent);
+ pw.append(", capabilities=" + mAccessibilityServiceInfo.getCapabilities());
pw.append(", eventTypes="
+ AccessibilityEvent.eventTypeToString(mEventTypes));
pw.append(", notificationTimeout=" + mNotificationTimeout);
@@ -2743,7 +2759,8 @@
}
public boolean canRetrieveWindowContent(Service service) {
- return service.mCanRetrieveScreenContent;
+ return (service.mAccessibilityServiceInfo.getCapabilities()
+ & AccessibilityServiceInfo.CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT) != 0;
}
public void enforceCanRetrieveWindowContent(Service service) throws RemoteException {
diff --git a/services/java/com/android/server/firewall/IntentFirewall.java b/services/java/com/android/server/firewall/IntentFirewall.java
index edba243..4496aae 100644
--- a/services/java/com/android/server/firewall/IntentFirewall.java
+++ b/services/java/com/android/server/firewall/IntentFirewall.java
@@ -107,6 +107,7 @@
public IntentFirewall(AMSInterface ams) {
mAms = ams;
File rulesFile = getRulesFile();
+ rulesFile.getParentFile().mkdirs();
readRules(rulesFile);