summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/java/android/app/Dialog.java5
-rw-r--r--core/java/android/app/Notification.java3
-rw-r--r--core/java/android/bluetooth/BluetoothAdapter.java3
-rw-r--r--core/java/android/bluetooth/BluetoothSocket.java3
-rw-r--r--core/java/android/hardware/Camera.java33
-rw-r--r--core/java/android/hardware/CameraInfo.aidl20
-rw-r--r--core/java/android/hardware/CameraInfo.java63
-rw-r--r--core/java/android/hardware/ICamera.aidl26
-rw-r--r--core/java/android/hardware/ICameraClient.aidl26
-rw-r--r--core/java/android/hardware/ICameraService.aidl48
-rw-r--r--core/java/android/hardware/ICameraServiceListener.aidl26
-rw-r--r--core/java/android/hardware/IProCameraCallbacks.aidl26
-rw-r--r--core/java/android/hardware/IProCameraUser.aidl26
-rw-r--r--core/java/android/net/NetworkUtils.java3
-rw-r--r--core/java/android/net/VpnService.java11
-rw-r--r--core/java/android/service/notification/NotificationListenerService.java12
-rw-r--r--core/java/android/view/View.java28
-rw-r--r--core/java/android/view/ViewGroup.java4
-rw-r--r--core/java/android/view/ViewRootImpl.java12
-rw-r--r--core/java/android/view/WindowManagerGlobal.java8
-rw-r--r--core/java/android/view/animation/Transformation.java8
-rw-r--r--core/java/android/view/transition/TransitionManager.java89
-rw-r--r--core/java/android/widget/AbsListView.java4
-rw-r--r--core/java/android/widget/AdapterView.java2
-rw-r--r--core/res/AndroidManifest.xml167
-rw-r--r--core/res/res/values-de/strings.xml10
-rw-r--r--core/res/res/values-el/strings.xml2
-rw-r--r--core/res/res/values-pt/strings.xml2
-rw-r--r--core/res/res/values-vi/strings.xml2
-rw-r--r--core/res/res/values-zh-rTW/strings.xml2
-rw-r--r--core/res/res/values/public.xml1
31 files changed, 541 insertions, 134 deletions
diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java
index 634fa30..cda2c5f 100644
--- a/core/java/android/app/Dialog.java
+++ b/core/java/android/app/Dialog.java
@@ -306,6 +306,7 @@ public class Dialog implements DialogInterface, Window.Callback,
* method to do cleanup when the dialog is dismissed, instead implement
* that in {@link #onStop}.
*/
+ @Override
public void dismiss() {
if (Looper.myLooper() == mHandler.getLooper()) {
dismissDialog();
@@ -325,7 +326,7 @@ public class Dialog implements DialogInterface, Window.Callback,
}
try {
- mWindowManager.removeView(mDecor);
+ mWindowManager.removeViewImmediate(mDecor);
} finally {
if (mActionMode != null) {
mActionMode.finish();
@@ -334,7 +335,7 @@ public class Dialog implements DialogInterface, Window.Callback,
mWindow.closeAllPanels();
onStop();
mShowing = false;
-
+
sendDismissMessage();
}
}
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 7a0f376..bffbb51 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -1696,6 +1696,9 @@ public class Notification implements Parcelable
extras.putBoolean(EXTRA_PROGRESS_INDETERMINATE, mProgressIndeterminate);
extras.putBoolean(EXTRA_SHOW_CHRONOMETER, mUseChronometer);
extras.putBoolean(EXTRA_SHOW_WHEN, mShowWhen);
+ if (mLargeIcon != null) {
+ extras.putParcelable(EXTRA_LARGE_ICON, mLargeIcon);
+ }
}
/**
diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java
index 79bb476..72ecda1 100644
--- a/core/java/android/bluetooth/BluetoothAdapter.java
+++ b/core/java/android/bluetooth/BluetoothAdapter.java
@@ -36,6 +36,7 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.HashMap;
import java.util.LinkedList;
+import java.util.Locale;
import java.util.Map;
import java.util.Random;
import java.util.Set;
@@ -433,7 +434,7 @@ public final class BluetoothAdapter {
if (address == null || address.length != 6) {
throw new IllegalArgumentException("Bluetooth address must have 6 bytes");
}
- return new BluetoothDevice(String.format("%02X:%02X:%02X:%02X:%02X:%02X",
+ return new BluetoothDevice(String.format(Locale.US, "%02X:%02X:%02X:%02X:%02X:%02X",
address[0], address[1], address[2], address[3], address[4], address[5]));
}
diff --git a/core/java/android/bluetooth/BluetoothSocket.java b/core/java/android/bluetooth/BluetoothSocket.java
index a19341c..d10eaea 100644
--- a/core/java/android/bluetooth/BluetoothSocket.java
+++ b/core/java/android/bluetooth/BluetoothSocket.java
@@ -31,6 +31,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
+import java.util.Locale;
import java.util.UUID;
import android.net.LocalSocket;
import java.nio.ByteOrder;
@@ -473,7 +474,7 @@ public final class BluetoothSocket implements Closeable {
return mPort;
}
private String convertAddr(final byte[] addr) {
- return String.format("%02X:%02X:%02X:%02X:%02X:%02X",
+ return String.format(Locale.US, "%02X:%02X:%02X:%02X:%02X:%02X",
addr[0] , addr[1], addr[2], addr[3] , addr[4], addr[5]);
}
private String waitSocketSignal(InputStream is) throws IOException {
diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java
index ac42b76..feb47aa 100644
--- a/core/java/android/hardware/Camera.java
+++ b/core/java/android/hardware/Camera.java
@@ -2769,21 +2769,24 @@ public class Camera {
* JPEG {@link PictureCallback}. The camera driver may set orientation
* in the EXIF header without rotating the picture. Or the driver may
* rotate the picture and the EXIF thumbnail. If the Jpeg picture is
- * rotated, the orientation in the EXIF header will be missing or 1
- * (row #0 is top and column #0 is left side).
- *
- * <p>If applications want to rotate the picture to match the orientation
- * of what users see, apps should use {@link
- * android.view.OrientationEventListener} and {@link CameraInfo}.
- * The value from OrientationEventListener is relative to the natural
- * orientation of the device. CameraInfo.orientation is the angle
- * between camera orientation and natural device orientation. The sum
- * of the two is the rotation angle for back-facing camera. The
- * difference of the two is the rotation angle for front-facing camera.
- * Note that the JPEG pictures of front-facing cameras are not mirrored
- * as in preview display.
- *
- * <p>For example, suppose the natural orientation of the device is
+ * rotated, the orientation in the EXIF header will be missing or 1 (row
+ * #0 is top and column #0 is left side).
+ *
+ * <p>
+ * If applications want to rotate the picture to match the orientation
+ * of what users see, apps should use
+ * {@link android.view.OrientationEventListener} and
+ * {@link android.hardware.Camera.CameraInfo}. The value from
+ * OrientationEventListener is relative to the natural orientation of
+ * the device. CameraInfo.orientation is the angle between camera
+ * orientation and natural device orientation. The sum of the two is the
+ * rotation angle for back-facing camera. The difference of the two is
+ * the rotation angle for front-facing camera. Note that the JPEG
+ * pictures of front-facing cameras are not mirrored as in preview
+ * display.
+ *
+ * <p>
+ * For example, suppose the natural orientation of the device is
* portrait. The device is rotated 270 degrees clockwise, so the device
* orientation is 270. Suppose a back-facing camera sensor is mounted in
* landscape and the top side of the camera sensor is aligned with the
diff --git a/core/java/android/hardware/CameraInfo.aidl b/core/java/android/hardware/CameraInfo.aidl
new file mode 100644
index 0000000..e21e694
--- /dev/null
+++ b/core/java/android/hardware/CameraInfo.aidl
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware;
+
+/** @hide */
+parcelable CameraInfo;
diff --git a/core/java/android/hardware/CameraInfo.java b/core/java/android/hardware/CameraInfo.java
new file mode 100644
index 0000000..53da0ce
--- /dev/null
+++ b/core/java/android/hardware/CameraInfo.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * Information about a camera
+ *
+ * @hide
+ */
+public class CameraInfo implements Parcelable {
+ // Can't parcel nested classes, so make this a top level class that composes
+ // CameraInfo.
+ public Camera.CameraInfo info = new Camera.CameraInfo();
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ @Override
+ public void writeToParcel(Parcel out, int flags) {
+ out.writeInt(info.facing);
+ out.writeInt(info.orientation);
+ }
+
+ public void readFromParcel(Parcel in) {
+ info.facing = in.readInt();
+ info.orientation = in.readInt();
+ }
+
+ public static final Parcelable.Creator<CameraInfo> CREATOR =
+ new Parcelable.Creator<CameraInfo>() {
+ @Override
+ public CameraInfo createFromParcel(Parcel in) {
+ CameraInfo info = new CameraInfo();
+ info.readFromParcel(in);
+
+ return info;
+ }
+
+ @Override
+ public CameraInfo[] newArray(int size) {
+ return new CameraInfo[size];
+ }
+ };
+};
diff --git a/core/java/android/hardware/ICamera.aidl b/core/java/android/hardware/ICamera.aidl
new file mode 100644
index 0000000..d4f64f8
--- /dev/null
+++ b/core/java/android/hardware/ICamera.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware;
+
+/** @hide */
+interface ICamera
+{
+ /**
+ * Keep up-to-date with frameworks/av/include/camera/ICamera.h
+ */
+ void disconnect();
+}
diff --git a/core/java/android/hardware/ICameraClient.aidl b/core/java/android/hardware/ICameraClient.aidl
new file mode 100644
index 0000000..d7877b4
--- /dev/null
+++ b/core/java/android/hardware/ICameraClient.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware;
+
+/** @hide */
+interface ICameraClient
+{
+ /**
+ * Keep up-to-date with frameworks/av/include/camera/ICameraClient.h
+ */
+ // TODO: consider implementing this.
+}
diff --git a/core/java/android/hardware/ICameraService.aidl b/core/java/android/hardware/ICameraService.aidl
new file mode 100644
index 0000000..b8fbfdb
--- /dev/null
+++ b/core/java/android/hardware/ICameraService.aidl
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware;
+
+import android.hardware.ICamera;
+import android.hardware.ICameraClient;
+import android.hardware.IProCameraUser;
+import android.hardware.IProCameraCallbacks;
+import android.hardware.ICameraServiceListener;
+import android.hardware.CameraInfo;
+
+/** @hide */
+interface ICameraService
+{
+ /**
+ * Keep up-to-date with frameworks/av/include/camera/ICameraService.h
+ */
+ int getNumberOfCameras();
+
+ // rest of 'int' return values in this file are actually status_t
+
+ int getCameraInfo(int cameraId, out CameraInfo info);
+
+ ICamera connect(ICameraClient client, int cameraId,
+ String clientPackageName,
+ int clientUid);
+
+ IProCameraUser connectPro(IProCameraCallbacks callbacks, int cameraId,
+ String clientPackageName,
+ int clientUid);
+
+ int addListener(ICameraServiceListener listener);
+ int removeListener(ICameraServiceListener listener);
+}
diff --git a/core/java/android/hardware/ICameraServiceListener.aidl b/core/java/android/hardware/ICameraServiceListener.aidl
new file mode 100644
index 0000000..c548496
--- /dev/null
+++ b/core/java/android/hardware/ICameraServiceListener.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware;
+
+/** @hide */
+interface ICameraServiceListener
+{
+ /**
+ * Keep up-to-date with frameworks/av/include/camera/ICameraServiceListener.h
+ */
+ void onStatusChanged(int status, int cameraId);
+}
diff --git a/core/java/android/hardware/IProCameraCallbacks.aidl b/core/java/android/hardware/IProCameraCallbacks.aidl
new file mode 100644
index 0000000..a09b452
--- /dev/null
+++ b/core/java/android/hardware/IProCameraCallbacks.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware;
+
+/** @hide */
+interface IProCameraCallbacks
+{
+ /**
+ * Keep up-to-date with frameworks/av/include/camera/IProCameraCallbacks.h
+ */
+ // TODO: consider implementing this.
+}
diff --git a/core/java/android/hardware/IProCameraUser.aidl b/core/java/android/hardware/IProCameraUser.aidl
new file mode 100644
index 0000000..eacb0f4
--- /dev/null
+++ b/core/java/android/hardware/IProCameraUser.aidl
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.hardware;
+
+/** @hide */
+interface IProCameraUser
+{
+ /**
+ * Keep up-to-date with frameworks/av/include/camera/IProCameraUser.h
+ */
+ void disconnect();
+}
diff --git a/core/java/android/net/NetworkUtils.java b/core/java/android/net/NetworkUtils.java
index 4ab479e..333fcc6 100644
--- a/core/java/android/net/NetworkUtils.java
+++ b/core/java/android/net/NetworkUtils.java
@@ -21,6 +21,7 @@ import java.net.Inet4Address;
import java.net.Inet6Address;
import java.net.UnknownHostException;
import java.util.Collection;
+import java.util.Locale;
import android.util.Log;
@@ -223,7 +224,7 @@ public class NetworkUtils {
public static InetAddress hexToInet6Address(String addrHexString)
throws IllegalArgumentException {
try {
- return numericToInetAddress(String.format("%s:%s:%s:%s:%s:%s:%s:%s",
+ return numericToInetAddress(String.format(Locale.US, "%s:%s:%s:%s:%s:%s:%s:%s",
addrHexString.substring(0,4), addrHexString.substring(4,8),
addrHexString.substring(8,12), addrHexString.substring(12,16),
addrHexString.substring(16,20), addrHexString.substring(20,24),
diff --git a/core/java/android/net/VpnService.java b/core/java/android/net/VpnService.java
index 65d3f2b..733de94 100644
--- a/core/java/android/net/VpnService.java
+++ b/core/java/android/net/VpnService.java
@@ -17,8 +17,8 @@
package android.net;
import android.app.Activity;
-import android.app.Service;
import android.app.PendingIntent;
+import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Binder;
@@ -30,10 +30,10 @@ import android.os.ServiceManager;
import com.android.internal.net.VpnConfig;
-import java.net.InetAddress;
+import java.net.DatagramSocket;
import java.net.Inet4Address;
import java.net.Inet6Address;
-import java.net.DatagramSocket;
+import java.net.InetAddress;
import java.net.Socket;
import java.util.ArrayList;
@@ -329,7 +329,8 @@ public class VpnService extends Service {
throw new IllegalArgumentException("Bad address");
}
- mAddresses.append(' ' + address.getHostAddress() + '/' + prefixLength);
+ mAddresses.append(' ')
+ .append(address.getHostAddress()).append('/').append(prefixLength);
return this;
}
@@ -364,7 +365,7 @@ public class VpnService extends Service {
}
}
- mRoutes.append(String.format(" %s/%d", address.getHostAddress(), prefixLength));
+ mRoutes.append(' ').append(address.getHostAddress()).append('/').append(prefixLength);
return this;
}
diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java
index bfea9ca..2e0e59b 100644
--- a/core/java/android/service/notification/NotificationListenerService.java
+++ b/core/java/android/service/notification/NotificationListenerService.java
@@ -164,11 +164,19 @@ public abstract class NotificationListenerService extends Service {
private class INotificationListenerWrapper extends INotificationListener.Stub {
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
- NotificationListenerService.this.onNotificationPosted(sbn);
+ try {
+ NotificationListenerService.this.onNotificationPosted(sbn);
+ } catch (Throwable t) {
+ Log.w(TAG, "Error running onNotificationPosted", t);
+ }
}
@Override
public void onNotificationRemoved(StatusBarNotification sbn) {
- NotificationListenerService.this.onNotificationRemoved(sbn);
+ try {
+ NotificationListenerService.this.onNotificationRemoved(sbn);
+ } catch (Throwable t) {
+ Log.w(TAG, "Error running onNotificationRemoved", t);
+ }
}
}
}
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 55a8f74..e860dca 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -2195,6 +2195,12 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*/
static final int PFLAG3_VIEW_IS_ANIMATING_ALPHA = 0x2;
+ /**
+ * Flag indicating that the view has been through at least one layout since it
+ * was last attached to a window.
+ */
+ static final int PFLAG3_HAS_LAYOUT = 0x4;
+
/* End of masks for mPrivateFlags3 */
@@ -6138,6 +6144,21 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
/**
+ * Returns true if this view is currently attached to a window.
+ */
+ public boolean isAttachedToWindow() {
+ return mAttachInfo != null;
+ }
+
+ /**
+ * Returns true if this view has been through at least one layout since it
+ * was last attached to or detached from a window.
+ */
+ public boolean hasLayout() {
+ return (mPrivateFlags3 & PFLAG3_HAS_LAYOUT) == PFLAG3_HAS_LAYOUT;
+ }
+
+ /**
* If this view doesn't do any drawing on its own, set this flag to
* allow further optimizations. By default, this flag is not set on
* View, but could be set on some View subclasses such as ViewGroup.
@@ -7024,7 +7045,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*
* @hide
*/
- private void notifySubtreeAccessibilityStateChangedIfNeeded() {
+ public void notifySubtreeAccessibilityStateChangedIfNeeded() {
if (!AccessibilityManager.getInstance(mContext).isEnabled()) {
return;
}
@@ -11779,6 +11800,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
mPrivateFlags &= ~PFLAG_AWAKEN_SCROLL_BARS_ON_ATTACH;
}
+ mPrivateFlags3 &= ~PFLAG3_HAS_LAYOUT;
+
jumpDrawablesToCurrentState();
clearAccessibilityFocus();
@@ -12065,6 +12088,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*/
protected void onDetachedFromWindow() {
mPrivateFlags &= ~PFLAG_CANCEL_NEXT_UP_EVENT;
+ mPrivateFlags3 &= ~PFLAG3_HAS_LAYOUT;
removeUnsetPressCallback();
removeLongPressCallback();
@@ -14371,6 +14395,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
}
mPrivateFlags &= ~PFLAG_FORCE_LAYOUT;
+ mPrivateFlags3 |= PFLAG3_HAS_LAYOUT;
}
/**
@@ -18867,6 +18892,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
final long minEventIntevalMillis =
ViewConfiguration.getSendRecurringAccessibilityEventsInterval();
if (timeSinceLastMillis >= minEventIntevalMillis) {
+ removeCallbacks(this);
run();
} else {
postDelayed(this, minEventIntevalMillis - timeSinceLastMillis);
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index caed4a2..29b2e4b 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -3595,7 +3595,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
}
if (child.isImportantForAccessibility() && child.getVisibility() != View.GONE) {
- childAccessibilityStateChanged(child);
+ notifySubtreeAccessibilityStateChangedIfNeeded();
}
}
@@ -3838,7 +3838,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
onViewRemoved(view);
if (view.isImportantForAccessibility() && view.getVisibility() != View.GONE) {
- childAccessibilityStateChanged(view);
+ notifySubtreeAccessibilityStateChangedIfNeeded();
}
}
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index a5f92de..60d8a75 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -2787,6 +2787,7 @@ public final class ViewRootImpl implements ViewParent,
setAccessibilityFocus(null, null);
+ mView.assignParent(null);
mView = null;
mAttachInfo.mRootView = null;
mAttachInfo.mSurface = null;
@@ -6397,12 +6398,10 @@ public final class ViewRootImpl implements ViewParent,
public void run() {
mLastEventTimeMillis = SystemClock.uptimeMillis();
- if (AccessibilityManager.getInstance(mContext).isEnabled()) {
- AccessibilityEvent event = AccessibilityEvent.obtain();
- event.setEventType(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
- event.setContentChangeType(AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE);
- mSource.sendAccessibilityEventUnchecked(event);
- }
+ AccessibilityEvent event = AccessibilityEvent.obtain();
+ event.setEventType(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
+ event.setContentChangeType(AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE);
+ mSource.sendAccessibilityEventUnchecked(event);
mSource.resetSubtreeAccessibilityStateChanged();
mSource = null;
}
@@ -6417,6 +6416,7 @@ public final class ViewRootImpl implements ViewParent,
final long minEventIntevalMillis =
ViewConfiguration.getSendRecurringAccessibilityEventsInterval();
if (timeSinceLastMillis >= minEventIntevalMillis) {
+ mSource.removeCallbacks(this);
run();
} else {
mSource.postDelayed(this, minEventIntevalMillis - timeSinceLastMillis);
diff --git a/core/java/android/view/WindowManagerGlobal.java b/core/java/android/view/WindowManagerGlobal.java
index 6bcf863..f7b85cc 100644
--- a/core/java/android/view/WindowManagerGlobal.java
+++ b/core/java/android/view/WindowManagerGlobal.java
@@ -335,15 +335,13 @@ public final class WindowManagerGlobal {
}
}
root.die(immediate);
+ if (view != null) {
+ view.assignParent(null);
+ }
}
void doRemoveView(ViewRootImpl root) {
synchronized (mLock) {
- final View view = root.getView();
- if (view != null) {
- view.assignParent(null);
- }
-
final int index = mRoots.indexOf(root);
if (index >= 0) {
mRoots.remove(index);
diff --git a/core/java/android/view/animation/Transformation.java b/core/java/android/view/animation/Transformation.java
index e8c1d23..890909b 100644
--- a/core/java/android/view/animation/Transformation.java
+++ b/core/java/android/view/animation/Transformation.java
@@ -29,19 +29,19 @@ public class Transformation {
/**
* Indicates a transformation that has no effect (alpha = 1 and identity matrix.)
*/
- public static int TYPE_IDENTITY = 0x0;
+ public static final int TYPE_IDENTITY = 0x0;
/**
* Indicates a transformation that applies an alpha only (uses an identity matrix.)
*/
- public static int TYPE_ALPHA = 0x1;
+ public static final int TYPE_ALPHA = 0x1;
/**
* Indicates a transformation that applies a matrix only (alpha = 1.)
*/
- public static int TYPE_MATRIX = 0x2;
+ public static final int TYPE_MATRIX = 0x2;
/**
* Indicates a transformation that applies an alpha and a matrix.
*/
- public static int TYPE_BOTH = TYPE_ALPHA | TYPE_MATRIX;
+ public static final int TYPE_BOTH = TYPE_ALPHA | TYPE_MATRIX;
protected Matrix mMatrix;
protected float mAlpha;
diff --git a/core/java/android/view/transition/TransitionManager.java b/core/java/android/view/transition/TransitionManager.java
index 4971a92..8088f6b 100644
--- a/core/java/android/view/transition/TransitionManager.java
+++ b/core/java/android/view/transition/TransitionManager.java
@@ -19,6 +19,8 @@ import android.util.ArrayMap;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
+import java.util.ArrayList;
+
/**
* This class manages the set of transitions that fire when there is a
* change of {@link Scene}. To use the manager, add scenes along with
@@ -41,8 +43,10 @@ public class TransitionManager {
new ArrayMap<Scene, ArrayMap<Scene, Transition>>();
static ArrayMap<ViewGroup, Transition> sRunningTransitions =
new ArrayMap<ViewGroup, Transition>();
+ private static ArrayList<ViewGroup> sPendingTransitions = new ArrayList<ViewGroup>();
+
- /**
+ /**
* Sets the transition to be used for any scene change for which no
* other transition is explicitly set. The initial value is
* an {@link AutoTransition} instance.
@@ -142,24 +146,15 @@ public class TransitionManager {
final ViewGroup sceneRoot = scene.getSceneRoot();
- Transition runningTransition = sRunningTransitions.get(sceneRoot);
- if (runningTransition != null) {
- runningTransition.cancelTransition();
- }
-
- // Capture current values
- if (transition != null) {
- transition.captureValues(sceneRoot, true);
- }
-
- // Notify previous scene that it is being exited
- Scene previousScene = sceneRoot.getCurrentScene();
- if (previousScene != null) {
- previousScene.exit();
- }
+ sceneChangeSetup(sceneRoot, transition);
scene.enter();
+ sceneChangeRunTransition(sceneRoot, transition);
+ }
+
+ private static void sceneChangeRunTransition(final ViewGroup sceneRoot,
+ final Transition transition) {
if (transition != null) {
final ViewTreeObserver observer = sceneRoot.getViewTreeObserver();
observer.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@@ -181,6 +176,25 @@ public class TransitionManager {
}
}
+ private static void sceneChangeSetup(ViewGroup sceneRoot, Transition transition) {
+
+ Transition runningTransition = sRunningTransitions.get(sceneRoot);
+ if (runningTransition != null) {
+ runningTransition.cancelTransition();
+ }
+
+ // Capture current values
+ if (transition != null) {
+ transition.captureValues(sceneRoot, true);
+ }
+
+ // Notify previous scene that it is being exited
+ Scene previousScene = sceneRoot.getCurrentScene();
+ if (previousScene != null) {
+ previousScene.exit();
+ }
+ }
+
/**
* Change to the given scene, using the
* appropriate transition for this particular scene change
@@ -272,4 +286,47 @@ public class TransitionManager {
scene.setEnterAction(action);
changeScene(scene, transition);
}
+
+ /**
+ * Static utility method to animate to a new scene defined by all changes within
+ * the given scene root between calling this method and the next rendering frame.
+ * Calling this method causes TransitionManager to capture current values in the
+ * scene root and then post a request to run a transition on the next frame.
+ * At that time, the new values in the scene root will be captured and changes
+ * will be animated. There is no need to create a Scene; it is implied by
+ * changes which take place between calling this method and the next frame when
+ * the transition begins.
+ *
+ * <p>Calling this method several times before the next frame (for example, if
+ * unrelated code also wants to make dynamic changes and run a transition on
+ * the same scene root), only the first call will trigger capturing values
+ * and exiting the current scene. Subsequent calls to the method with the
+ * same scene root during the same frame will be ignored.</p>
+ *
+ * <p>Passing in <code>null</code> for the transition parameter will
+ * cause the TransitionManager to use its default transition.</p>
+ *
+ * @param sceneRoot The root of the View hierarchy to run the transition on.
+ * @param transition The transition to use for this change. A
+ * value of null causes the TransitionManager to use the default transition.
+ */
+ public static void beginDelayedTransition(final ViewGroup sceneRoot, Transition transition) {
+
+ if (!sPendingTransitions.contains(sceneRoot)) {
+ sPendingTransitions.add(sceneRoot);
+ if (transition == null) {
+ transition = sDefaultTransition;
+ }
+ final Transition finalTransition = transition;
+ sceneChangeSetup(sceneRoot, transition);
+ sceneRoot.setCurrentScene(null);
+ sceneRoot.postOnAnimation(new Runnable() {
+ @Override
+ public void run() {
+ sPendingTransitions.remove(sceneRoot);
+ sceneChangeRunTransition(sceneRoot, finalTransition);
+ }
+ });
+ }
+ }
}
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index ddc8d82..1991af1 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -6519,7 +6519,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
int viewType = lp.viewType;
final boolean scrapHasTransientState = scrap.hasTransientState();
if (!shouldRecycleViewType(viewType) || scrapHasTransientState) {
- if (viewType != ITEM_VIEW_TYPE_HEADER_OR_FOOTER || scrapHasTransientState) {
+ if (viewType != ITEM_VIEW_TYPE_HEADER_OR_FOOTER && scrapHasTransientState) {
if (mSkippedScrap == null) {
mSkippedScrap = new ArrayList<View>();
}
@@ -6593,7 +6593,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
final boolean scrapHasTransientState = victim.hasTransientState();
if (!shouldRecycleViewType(whichScrap) || scrapHasTransientState) {
// Do not move views that should be ignored
- if (whichScrap != ITEM_VIEW_TYPE_HEADER_OR_FOOTER ||
+ if (whichScrap != ITEM_VIEW_TYPE_HEADER_OR_FOOTER &&
scrapHasTransientState) {
removeDetachedView(victim, false);
}
diff --git a/core/java/android/widget/AdapterView.java b/core/java/android/widget/AdapterView.java
index 4a2df58..31ab0af 100644
--- a/core/java/android/widget/AdapterView.java
+++ b/core/java/android/widget/AdapterView.java
@@ -1033,7 +1033,7 @@ public abstract class AdapterView<T extends Adapter> extends ViewGroup {
checkSelectionChanged();
}
- childAccessibilityStateChanged(this);
+ notifySubtreeAccessibilityStateChangedIfNeeded();
}
void checkSelectionChanged() {
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 6918099..1643522 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -216,7 +216,8 @@
android:description="@string/permdesc_sendSms" />
<!-- Allows an application (Phone) to send a request to other applications
- to handle the respond-via-message action during incoming calls. -->
+ to handle the respond-via-message action during incoming calls.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SEND_RESPOND_VIA_MESSAGE"
android:permissionGroup="android.permission-group.MESSAGES"
android:protectionLevel="signature|system"
@@ -240,7 +241,8 @@
android:description="@string/permdesc_receiveMms" />
<!-- Allows an application to receive emergency cell broadcast messages,
- to record or display them to the user. Reserved for system apps.
+ to record or display them to the user.
+ <p>Not for use by third-party applications.
@hide Pending API council approval -->
<permission android:name="android.permission.RECEIVE_EMERGENCY_BROADCAST"
android:permissionGroup="android.permission-group.MESSAGES"
@@ -319,7 +321,8 @@
android:description="@string/permdesc_writeContacts" />
<!-- Allows an application to execute contacts directory search.
- This should only be used by ContactsProvider. -->
+ This should only be used by ContactsProvider.
+ <p>Not for use by third-party applications. -->
<!-- @hide -->
<permission android:name="android.permission.BIND_DIRECTORY_SEARCH"
android:permissionGroup="android.permission-group.PERSONAL_INFO"
@@ -598,15 +601,16 @@
android:label="@string/permlab_accessLocationExtraCommands"
android:description="@string/permdesc_accessLocationExtraCommands" />
- <!-- Allows an application to install a location provider into the Location Manager -->
+ <!-- Allows an application to install a location provider into the Location Manager.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.INSTALL_LOCATION_PROVIDER"
android:protectionLevel="signature|system"
android:label="@string/permlab_installLocationProvider"
android:description="@string/permdesc_installLocationProvider" />
<!-- Allows an application to use location features in hardware,
- such as the geofencing api
- Protected by signature|system protection level -->
+ such as the geofencing api.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.LOCATION_HARDWARE"
android:permissionGroup="android.permission-group.LOCATION"
android:protectionLevel="signature|system" />
@@ -769,8 +773,8 @@
android:label="@string/permlab_manageAccounts"
android:description="@string/permdesc_manageAccounts" />
- <!-- Allows applications to call into AccountAuthenticators. Only
- the system can get this permission. -->
+ <!-- Allows applications to call into AccountAuthenticators.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.ACCOUNT_MANAGER"
android:permissionGroup="android.permission-group.ACCOUNTS"
android:protectionLevel="signature"
@@ -870,7 +874,8 @@
android:label="@string/permlab_accessMtp"
android:description="@string/permdesc_accessMtp" />
- <!-- Allows access to hardware peripherals. Intended only for hardware testing -->
+ <!-- Allows access to hardware peripherals. Intended only for hardware testing.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.HARDWARE_TEST"
android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
android:protectionLevel="signature"
@@ -971,7 +976,8 @@
android:description="@string/permdesc_processOutgoingCalls" />
<!-- Allows modification of the telephony state - power on, mmi, etc.
- Does not include placing calls. -->
+ Does not include placing calls.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.MODIFY_PHONE_STATE"
android:permissionGroup="android.permission-group.PHONE_CALLS"
android:protectionLevel="signature|system"
@@ -1265,7 +1271,8 @@
android:description="@string/permgroupdesc_systemClock"
android:priority="140" />
- <!-- Allows applications to set the system time -->
+ <!-- Allows applications to set the system time.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SET_TIME"
android:protectionLevel="signature|system"
android:label="@string/permlab_setTime"
@@ -1378,7 +1385,8 @@
android:label="@string/permlab_writeSettings"
android:description="@string/permdesc_writeSettings" />
- <!-- Allows an application to modify the Google service map. -->
+ <!-- Allows an application to modify the Google service map.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.WRITE_GSERVICES"
android:protectionLevel="signature|system"
android:label="@string/permlab_writeGservices"
@@ -1401,7 +1409,8 @@
android:label="@string/permlab_retrieve_window_content"
android:description="@string/permdesc_retrieve_window_content" />
- <!-- Modify the global animation scaling factor. -->
+ <!-- Modify the global animation scaling factor.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SET_ANIMATION_SCALE"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="signature|system|development"
@@ -1459,14 +1468,16 @@
android:label="@string/permlab_broadcastSticky"
android:description="@string/permdesc_broadcastSticky" />
- <!-- Allows mounting and unmounting file systems for removable storage. -->
+ <!-- Allows mounting and unmounting file systems for removable storage.
+ <p>Not for use by third-party applications.-->
<permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="system|signature"
android:label="@string/permlab_mount_unmount_filesystems"
android:description="@string/permdesc_mount_unmount_filesystems" />
- <!-- Allows formatting file systems for removable storage. -->
+ <!-- Allows formatting file systems for removable storage.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="system|signature"
@@ -1513,7 +1524,8 @@
android:label="@string/permlab_asec_rename"
android:description="@string/permdesc_asec_rename" />
- <!-- Allows applications to write the apn settings -->
+ <!-- Allows applications to write the apn settings.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.WRITE_APN_SETTINGS"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="signature|system"
@@ -1561,7 +1573,7 @@
<eat-comment />
<!-- Group of permissions that are related to development features. These
- are not permissions that should appear in normal applications; they
+ are not permissions that should appear in third-party applications; they
protect APIs that are intended only to be used for development
purposes. -->
<permission-group android:name="android.permission-group.DEVELOPMENT_TOOLS"
@@ -1569,15 +1581,16 @@
android:description="@string/permgroupdesc_developmentTools"
android:priority="310" />
- <!-- Allows an application to read or write the secure system settings. -->
+ <!-- Allows an application to read or write the secure system settings.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.WRITE_SECURE_SETTINGS"
android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
android:protectionLevel="signature|system|development"
android:label="@string/permlab_writeSecureSettings"
android:description="@string/permdesc_writeSecureSettings" />
- <!-- Allows an application to retrieve state dump information from system
- services. -->
+ <!-- Allows an application to retrieve state dump information from system services.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.DUMP"
android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
android:protectionLevel="signature|system|development"
@@ -1585,15 +1598,16 @@
android:description="@string/permdesc_dump" />
<!-- Allows an application to read the low-level system log files.
- Log entries can contain the user's private information,
- which is why this permission is not available to normal apps. -->
+ <p>Not for use by third-party applications, because
+ Log entries can contain the user's private information. -->
<permission android:name="android.permission.READ_LOGS"
android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
android:protectionLevel="signature|system|development"
android:label="@string/permlab_readLogs"
android:description="@string/permdesc_readLogs" />
- <!-- Configure an application for debugging. -->
+ <!-- Configure an application for debugging.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SET_DEBUG_APP"
android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
android:protectionLevel="signature|system|development"
@@ -1601,7 +1615,8 @@
android:description="@string/permdesc_setDebugApp" />
<!-- Allows an application to set the maximum number of (not needed)
- application processes that can be running. -->
+ application processes that can be running.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SET_PROCESS_LIMIT"
android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
android:protectionLevel="signature|system|development"
@@ -1609,14 +1624,16 @@
android:description="@string/permdesc_setProcessLimit" />
<!-- Allows an application to control whether activities are immediately
- finished when put in the background. -->
+ finished when put in the background.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SET_ALWAYS_FINISH"
android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
android:protectionLevel="signature|system|development"
android:label="@string/permlab_setAlwaysFinish"
android:description="@string/permdesc_setAlwaysFinish" />
- <!-- Allow an application to request that a signal be sent to all persistent processes -->
+ <!-- Allow an application to request that a signal be sent to all persistent processes.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SIGNAL_PERSISTENT_PROCESSES"
android:permissionGroup="android.permission-group.DEVELOPMENT_TOOLS"
android:protectionLevel="signature|system|development"
@@ -1628,7 +1645,8 @@
<!-- ==================================== -->
<eat-comment />
- <!-- Allows applications to RW to diagnostic resources. -->
+ <!-- Allows applications to RW to diagnostic resources.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.DIAGNOSTIC"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="signature"
@@ -1636,7 +1654,8 @@
android:label="@string/permlab_diagnostic" />
<!-- Allows an application to open, close, or disable the status bar
- and its icons. -->
+ and its icons.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.STATUS_BAR"
android:label="@string/permlab_statusBar"
android:description="@string/permdesc_statusBar"
@@ -1650,14 +1669,15 @@
android:protectionLevel="signature" />
<!-- Allows an application to force a BACK operation on whatever is the
- top activity. -->
+ top activity.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.FORCE_BACK"
android:label="@string/permlab_forceBack"
android:description="@string/permdesc_forceBack"
android:protectionLevel="signature" />
- <!-- Allows an application to update device statistics. Not for
- use by third party apps. -->
+ <!-- Allows an application to update device statistics.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.UPDATE_DEVICE_STATS"
android:label="@string/permlab_updateBatteryStats"
android:description="@string/permdesc_updateBatteryStats"
@@ -1678,15 +1698,16 @@
android:protectionLevel="signature|system" />
<!-- Allows an application to open windows that are for use by parts
- of the system user interface. Not for use by third party apps. -->
+ of the system user interface.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW"
android:label="@string/permlab_internalSystemWindow"
android:description="@string/permdesc_internalSystemWindow"
android:protectionLevel="signature" />
<!-- Allows an application to manage (create, destroy,
- Z-order) application tokens in the window manager. This is only
- for use by the system. -->
+ Z-order) application tokens in the window manager.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.MANAGE_APP_TOKENS"
android:label="@string/permlab_manageAppTokens"
android:description="@string/permdesc_manageAppTokens"
@@ -1702,7 +1723,7 @@
<!-- Allows an application to inject user events (keys, touch, trackball)
into the event stream and deliver them to ANY window. Without this
permission, you can only deliver events to windows in your own process.
- Very few applications should need to use this permission. -->
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.INJECT_EVENTS"
android:label="@string/permlab_injectEvents"
android:description="@string/permdesc_injectEvents"
@@ -1735,7 +1756,8 @@
<!-- Allows an application to watch and control how activities are
started globally in the system. Only for is in debugging
- (usually the monkey command). -->
+ (usually the monkey command).
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SET_ACTIVITY_WATCHER"
android:label="@string/permlab_runSetActivityWatcher"
android:description="@string/permdesc_runSetActivityWatcher"
@@ -1760,14 +1782,16 @@
android:protectionLevel="signature|system" />
<!-- Allows an application to retrieve private information about
- the current top activity, such as any assist context it can provide. -->
+ the current top activity, such as any assist context it can provide.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.GET_TOP_ACTIVITY_INFO"
android:label="@string/permlab_getTopActivityInfo"
android:description="@string/permdesc_getTopActivityInfo"
android:protectionLevel="signature" />
<!-- Allows an application to retrieve the current state of keys and
- switches. This is only for use by the system.
+ switches.
+ <p>Not for use by third-party applications.
@deprecated The API that used this permission has been removed. -->
<permission android:name="android.permission.READ_INPUT_STATE"
android:label="@string/permlab_readInputState"
@@ -1817,46 +1841,51 @@
android:protectionLevel="signature" />
<!-- Allows low-level access to setting the orientation (actually
- rotation) of the screen. Not for use by normal applications. -->
+ rotation) of the screen.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SET_ORIENTATION"
android:label="@string/permlab_setOrientation"
android:description="@string/permdesc_setOrientation"
android:protectionLevel="signature" />
<!-- Allows low-level access to setting the pointer speed.
- Not for use by normal applications. -->
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.SET_POINTER_SPEED"
android:label="@string/permlab_setPointerSpeed"
android:description="@string/permdesc_setPointerSpeed"
android:protectionLevel="signature" />
<!-- Allows low-level access to setting the keyboard layout.
- Not for use by normal applications.
+ <p>Not for use by third-party applications.
@hide -->
<permission android:name="android.permission.SET_KEYBOARD_LAYOUT"
android:label="@string/permlab_setKeyboardLayout"
android:description="@string/permdesc_setKeyboardLayout"
android:protectionLevel="signature" />
- <!-- Allows an application to install packages. -->
+ <!-- Allows an application to install packages.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.INSTALL_PACKAGES"
android:label="@string/permlab_installPackages"
android:description="@string/permdesc_installPackages"
android:protectionLevel="signature|system" />
- <!-- Allows an application to clear user data -->
+ <!-- Allows an application to clear user data.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.CLEAR_APP_USER_DATA"
android:label="@string/permlab_clearAppUserData"
android:description="@string/permdesc_clearAppUserData"
android:protectionLevel="signature" />
- <!-- Allows an application to delete cache files. -->
+ <!-- Allows an application to delete cache files.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.DELETE_CACHE_FILES"
android:label="@string/permlab_deleteCacheFiles"
android:description="@string/permdesc_deleteCacheFiles"
android:protectionLevel="signature|system" />
- <!-- Allows an application to delete packages. -->
+ <!-- Allows an application to delete packages.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.DELETE_PACKAGES"
android:label="@string/permlab_deletePackages"
android:description="@string/permdesc_deletePackages"
@@ -1870,7 +1899,8 @@
android:protectionLevel="signature|system" />
<!-- Allows an application to change whether an application component (other than its own) is
- enabled or not. -->
+ enabled or not.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"
android:label="@string/permlab_changeComponentState"
android:description="@string/permdesc_changeComponentState"
@@ -1882,14 +1912,16 @@
android:description="@string/permdesc_grantRevokePermissions"
android:protectionLevel="signature" />
- <!-- Allows an application to use SurfaceFlinger's low level features -->
+ <!-- Allows an application to use SurfaceFlinger's low level features.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.ACCESS_SURFACE_FLINGER"
android:label="@string/permlab_accessSurfaceFlinger"
android:description="@string/permdesc_accessSurfaceFlinger"
android:protectionLevel="signature" />
<!-- Allows an application to take screen shots and more generally
- get access to the frame buffer data -->
+ get access to the frame buffer data.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.READ_FRAME_BUFFER"
android:label="@string/permlab_readFrameBuffer"
android:description="@string/permdesc_readFrameBuffer"
@@ -1911,19 +1943,22 @@
android:description="@string/permdesc_controlWifiDisplay"
android:protectionLevel="signature" />
- <!-- Required to be able to disable the device (very dangerous!). -->
+ <!-- Required to be able to disable the device (very dangerous!).
+ <p>Not for use by third-party applications.. -->
<permission android:name="android.permission.BRICK"
android:label="@string/permlab_brick"
android:description="@string/permdesc_brick"
android:protectionLevel="signature" />
- <!-- Required to be able to reboot the device. -->
+ <!-- Required to be able to reboot the device.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.REBOOT"
android:label="@string/permlab_reboot"
android:description="@string/permdesc_reboot"
android:protectionLevel="signature|system" />
- <!-- Allows low-level access to power management -->
+ <!-- Allows low-level access to power management.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.DEVICE_POWER"
android:label="@string/permlab_devicePower"
android:description="@string/permdesc_devicePower"
@@ -1935,34 +1970,39 @@
android:protectionLevel="signature" />
<!-- Run as a manufacturer test application, running as the root user.
- Only available when the device is running in manufacturer test mode. -->
+ Only available when the device is running in manufacturer test mode.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.FACTORY_TEST"
android:label="@string/permlab_factoryTest"
android:description="@string/permdesc_factoryTest"
android:protectionLevel="signature" />
<!-- Allows an application to broadcast a notification that an application
- package has been removed. -->
+ package has been removed.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.BROADCAST_PACKAGE_REMOVED"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:label="@string/permlab_broadcastPackageRemoved"
android:description="@string/permdesc_broadcastPackageRemoved"
android:protectionLevel="signature" />
- <!-- Allows an application to broadcast an SMS receipt notification -->
+ <!-- Allows an application to broadcast an SMS receipt notification.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.BROADCAST_SMS"
android:permissionGroup="android.permission-group.MESSAGES"
android:label="@string/permlab_broadcastSmsReceived"
android:description="@string/permdesc_broadcastSmsReceived"
android:protectionLevel="signature" />
- <!-- Allows an application to broadcast a WAP PUSH receipt notification -->
+ <!-- Allows an application to broadcast a WAP PUSH receipt notification.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.BROADCAST_WAP_PUSH"
android:permissionGroup="android.permission-group.MESSAGES"
android:label="@string/permlab_broadcastWapPush"
android:description="@string/permdesc_broadcastWapPush"
android:protectionLevel="signature" />
+ <!-- Not for use by third-party applications. -->
<permission android:name="android.permission.MASTER_CLEAR"
android:label="@string/permlab_masterClear"
android:description="@string/permdesc_masterClear"
@@ -1970,7 +2010,8 @@
<!-- Allows an application to call any phone number, including emergency
numbers, without going through the Dialer user interface for the user
- to confirm the call being placed. Not for use by third party apps. -->
+ to confirm the call being placed.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.CALL_PRIVILEGED"
android:label="@string/permlab_callPrivileged"
android:description="@string/permdesc_callPrivileged"
@@ -1983,14 +2024,16 @@
android:protectionLevel="signature|system" />
<!-- Allows enabling/disabling location update notifications from
- the radio. Not for use by normal applications. -->
+ the radio.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.CONTROL_LOCATION_UPDATES"
android:label="@string/permlab_locationUpdates"
android:description="@string/permdesc_locationUpdates"
android:protectionLevel="signature|system" />
<!-- Allows read/write access to the "properties" table in the checkin
- database, to change values that get uploaded. -->
+ database, to change values that get uploaded.
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES"
android:label="@string/permlab_checkinProperties"
android:description="@string/permdesc_checkinProperties"
@@ -2010,7 +2053,8 @@
android:description="@string/permdesc_batteryStats"
android:protectionLevel="dangerous" />
- <!-- Allows an application to control the backup and restore process
+ <!-- Allows an application to control the backup and restore process.
+ <p>Not for use by third-party applications.
@hide pending API council -->
<permission android:name="android.permission.BACKUP"
android:label="@string/permlab_backup"
@@ -2037,7 +2081,7 @@
picks an AppWidget to go into a particular host, thereby giving that
host application access to the private data from the AppWidget app.
An application that has this permission should honor that contract.
- Very few applications should need to use this permission. -->
+ <p>Not for use by third-party applications. -->
<permission android:name="android.permission.BIND_APPWIDGET"
android:permissionGroup="android.permission-group.PERSONAL_INFO"
android:label="@string/permlab_bindGadget"
@@ -2058,7 +2102,8 @@
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="signature|system" />
- <!-- Allows applications to change the background data setting
+ <!-- Allows applications to change the background data setting.
+ <p>Not for use by third-party applications.
@hide pending API council -->
<permission android:name="android.permission.CHANGE_BACKGROUND_DATA_SETTING"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 70d65eb..bd40c64 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -944,11 +944,11 @@
<item quantity="other" msgid="3903706804349556379">"vor <xliff:g id="COUNT">%d</xliff:g> Sekunden"</item>
</plurals>
<plurals name="num_minutes_ago">
- <item quantity="one" msgid="3306787433088810191">"Vor 1 Minute"</item>
+ <item quantity="one" msgid="3306787433088810191">"vor 1 Minute"</item>
<item quantity="other" msgid="2176942008915455116">"vor <xliff:g id="COUNT">%d</xliff:g> Minuten"</item>
</plurals>
<plurals name="num_hours_ago">
- <item quantity="one" msgid="9150797944610821849">"Vor 1 Stunde"</item>
+ <item quantity="one" msgid="9150797944610821849">"vor 1 Stunde"</item>
<item quantity="other" msgid="2467273239587587569">"vor <xliff:g id="COUNT">%d</xliff:g> Stunden"</item>
</plurals>
<plurals name="last_num_days">
@@ -957,7 +957,7 @@
<string name="last_month" msgid="3959346739979055432">"Letzter Monat"</string>
<string name="older" msgid="5211975022815554840">"Älter"</string>
<plurals name="num_days_ago">
- <item quantity="one" msgid="861358534398115820">"Gestern"</item>
+ <item quantity="one" msgid="861358534398115820">"gestern"</item>
<item quantity="other" msgid="2479586466153314633">"vor <xliff:g id="COUNT">%d</xliff:g> Tagen"</item>
</plurals>
<plurals name="in_num_seconds">
@@ -985,11 +985,11 @@
<item quantity="other" msgid="851164968597150710">"vor <xliff:g id="COUNT">%d</xliff:g> Minuten"</item>
</plurals>
<plurals name="abbrev_num_hours_ago">
- <item quantity="one" msgid="4796212039724722116">"Vor 1 Stunde"</item>
+ <item quantity="one" msgid="4796212039724722116">"vor 1 Stunde"</item>
<item quantity="other" msgid="6889970745748538901">"vor <xliff:g id="COUNT">%d</xliff:g> Stunden"</item>
</plurals>
<plurals name="abbrev_num_days_ago">
- <item quantity="one" msgid="8463161711492680309">"Gestern"</item>
+ <item quantity="one" msgid="8463161711492680309">"gestern"</item>
<item quantity="other" msgid="3453342639616481191">"vor <xliff:g id="COUNT">%d</xliff:g> Tagen"</item>
</plurals>
<plurals name="abbrev_in_num_seconds">
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 3a24738..c388643 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -607,7 +607,7 @@
<string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"δοκιμή πρόσβασης σε προστατευμένο χώρο αποθήκευσης"</string>
<string name="permdesc_sdcardRead" product="nosdcard" msgid="3642473292348132072">"Επιτρέπει USB για άλλες συσκ."</string>
<string name="permdesc_sdcardRead" product="default" msgid="5914402684685848828">"Επιτρέπει στην εφαρμογή τη δοκιμή μια άδειας για την κάρτα SD που θα διατίθεται σε μελλοντικές συσκευές."</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"τροπ. ή διαγρ. περιεχ. αποθ. χώρ. USB"</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"τροπ. ή διαγρ. του USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8805693630050458763">"τροποποίηση ή διαγραφή των περιεχομένων της κάρτας SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Επιτρέπει στην εφαρμογή την εγγραφή στον αποθηκευτικό χώρο USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Επιτρέπει στην εφαρμογή την εγγραφή στην κάρτα SD."</string>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index cb580f2..f5ba0fb 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -607,7 +607,7 @@
<string name="permlab_sdcardRead" product="default" msgid="8235341515605559677">"testar o acesso ao armazenamento protegido"</string>
<string name="permdesc_sdcardRead" product="nosdcard" msgid="3642473292348132072">"Permite que o aplicativo teste uma permissão para o armazenamento USB que estará disponível em dispositivos futuros."</string>
<string name="permdesc_sdcardRead" product="default" msgid="5914402684685848828">"Permite que o aplicativo teste uma permissão para o cartão SD que estará disponível em dispositivos futuros."</string>
- <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modif ou excl cont. armaz USB"</string>
+ <string name="permlab_sdcardWrite" product="nosdcard" msgid="8485979062254666748">"modificar ou excluir conteúdo do armazenamento USB"</string>
<string name="permlab_sdcardWrite" product="default" msgid="8805693630050458763">"modificar ou excluir o conteúdo do cartão SD"</string>
<string name="permdesc_sdcardWrite" product="nosdcard" msgid="6175406299445710888">"Permite gravar no armaz. USB."</string>
<string name="permdesc_sdcardWrite" product="default" msgid="4337417790936632090">"Permite que o aplicativo grave em seu cartão SD."</string>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index a7f58b2..d72b1a7 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -1498,7 +1498,7 @@
<string name="user_switched" msgid="3768006783166984410">"Người dùng hiện tại <xliff:g id="NAME">%1$s</xliff:g>."</string>
<string name="owner_name" msgid="2716755460376028154">"Chủ sở hữu"</string>
<string name="error_message_title" msgid="4510373083082500195">"Lỗi"</string>
- <string name="app_no_restricted_accounts" msgid="5739463249673727736">"Ứng dụng này không hỗ trợ tài khoản cho các tiểu sử bị hạn chế"</string>
+ <string name="app_no_restricted_accounts" msgid="5739463249673727736">"Ứng dụng này không hỗ trợ tài khoản đối với các tiểu sử bị hạn chế"</string>
<string name="app_not_found" msgid="3429141853498927379">"Không tìm thấy ứng dụng nào để xử lý tác vụ này"</string>
<string name="revoke" msgid="5404479185228271586">"Thu hồi"</string>
</resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 90c7c12..499b3ac 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -621,7 +621,7 @@
<string name="permdesc_cache_filesystem" msgid="5578967642265550955">"允許應用程式讀取及寫入快取檔案系統。"</string>
<string name="permlab_use_sip" msgid="5986952362795870502">"撥打/接聽網路電話"</string>
<string name="permdesc_use_sip" msgid="4717632000062674294">"允許應用程式使用 SIP 服務撥打/接聽網路電話。"</string>
- <string name="permlab_readNetworkUsageHistory" msgid="7862593283611493232">"讀取網路用量記錄"</string>
+ <string name="permlab_readNetworkUsageHistory" msgid="7862593283611493232">"讀取網路用量紀錄"</string>
<string name="permdesc_readNetworkUsageHistory" msgid="7689060749819126472">"允許應用程式讀取特定網路和應用程式的網路使用記錄。"</string>
<string name="permlab_manageNetworkPolicy" msgid="2562053592339859990">"管理網路政策"</string>
<string name="permdesc_manageNetworkPolicy" msgid="7537586771559370668">"允許應用程式管理網路政策並定義應用程式專用規則。"</string>
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 089a859..36a7a86 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -2046,6 +2046,7 @@
<public type="attr" name="canRequestTouchExplorationMode" id="0x010103d7" />
<public type="attr" name="canRequestEnhancedWebAccessibility" id="0x010103d8" />
<public type="attr" name="canRequestFilterKeyEvents" id="0x010103d9" />
+ <public type="attr" name="layoutMode" id="0x010103da" />
<public type="style" name="Theme.Holo.NoActionBar.Overscan" id="0x010301dd" />
<public type="style" name="Theme.Holo.Light.NoActionBar.Overscan" id="0x010301de" />