diff --git a/api/current.txt b/api/current.txt
index d25ae966d9079..f6c3c17e2c97b 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -34459,6 +34459,7 @@ package android.view {
method public final android.content.Context getContext();
method public abstract android.view.View getCurrentFocus();
method public abstract android.view.View getDecorView();
+ method public static int getDefaultFeatures(android.content.Context);
method public android.transition.Transition getEnterTransition();
method public android.transition.Transition getExitTransition();
method protected final int getFeatures();
@@ -34560,7 +34561,7 @@ package android.view {
method public abstract void takeKeyEvents(boolean);
method public abstract void takeSurface(android.view.SurfaceHolder.Callback2);
method public abstract void togglePanel(int, android.view.KeyEvent);
- field protected static final int DEFAULT_FEATURES = 65; // 0x41
+ field protected static final deprecated int DEFAULT_FEATURES = 65; // 0x41
field public static final int FEATURE_ACTION_BAR = 8; // 0x8
field public static final int FEATURE_ACTION_BAR_OVERLAY = 9; // 0x9
field public static final int FEATURE_ACTION_MODE_OVERLAY = 10; // 0xa
diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java
index 0076abff2f094..2e5c1e0a4b42c 100644
--- a/core/java/android/view/Window.java
+++ b/core/java/android/view/Window.java
@@ -20,6 +20,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
import android.content.res.Configuration;
+import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.PixelFormat;
import android.graphics.drawable.Drawable;
@@ -155,6 +156,7 @@ public abstract class Window {
"android:navigation:background";
/** The default features enabled */
+ @Deprecated
@SuppressWarnings({"PointlessBitwiseExpression"})
protected static final int DEFAULT_FEATURES = (1 << FEATURE_OPTIONS_PANEL) |
(1 << FEATURE_CONTEXT_MENU);
@@ -183,8 +185,8 @@ public abstract class Window {
private boolean mSetCloseOnTouchOutside = false;
private int mForcedWindowFlags = 0;
- private int mFeatures = DEFAULT_FEATURES;
- private int mLocalFeatures = DEFAULT_FEATURES;
+ private int mFeatures;
+ private int mLocalFeatures;
private boolean mHaveWindowFormat = false;
private boolean mHaveDimAmount = false;
@@ -442,6 +444,7 @@ public abstract class Window {
public Window(Context context) {
mContext = context;
+ mFeatures = mLocalFeatures = getDefaultFeatures(context);
}
/**
@@ -1269,6 +1272,25 @@ public abstract class Window {
return mFeatures;
}
+ /**
+ * Return the feature bits set by default on a window.
+ * @param context The context used to access resources
+ */
+ public static int getDefaultFeatures(Context context) {
+ int features = 0;
+
+ final Resources res = context.getResources();
+ if (res.getBoolean(com.android.internal.R.bool.config_defaultWindowFeatureOptionsPanel)) {
+ features |= 1 << FEATURE_OPTIONS_PANEL;
+ }
+
+ if (res.getBoolean(com.android.internal.R.bool.config_defaultWindowFeatureContextMenu)) {
+ features |= 1 << FEATURE_CONTEXT_MENU;
+ }
+
+ return features;
+ }
+
/**
* Query for the availability of a certain feature.
*
diff --git a/core/res/res/values-watch/config.xml b/core/res/res/values-watch/config.xml
index 6052fb0f33ffc..3eede32bd344c 100644
--- a/core/res/res/values-watch/config.xml
+++ b/core/res/res/values-watch/config.xml
@@ -40,4 +40,7 @@
Reduced intentionally for watches to retain minimal memory footprint -->
1
+
+ false
+ false
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 6e635f310d6c1..bb2ee48e82a78 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -1927,6 +1927,10 @@
12
+
+ true
+ true
+