diff --git a/docs/html/guide/topics/manifest/uses-feature-element.jd b/docs/html/guide/topics/manifest/uses-feature-element.jd index 10841d675834a..9b32244b736f9 100755 --- a/docs/html/guide/topics/manifest/uses-feature-element.jd +++ b/docs/html/guide/topics/manifest/uses-feature-element.jd @@ -1230,7 +1230,7 @@ densities: '160'
- When declared as required, this feature indicates that the app is + By default, your app requires this feature. This feature indicates that the app is compatible with a device only if that device emulates a touchscreen ("fake touch" interface) or has an actual touchscreen.
@@ -1240,19 +1240,12 @@ densities: '160' that emulates a subset of a touchscreen's capabilities. For example, a mouse or remote control could drive an on-screen cursor. If your app requires basic point and click interaction (in other words, it won't work - with only a d-pad controller), you should declare this feature. Because + with only a d-pad controller), you should declare this feature or simply + avoid declaring any {@code android.hardware.touchscreen.*} features. Because this is the minimum level of touch interaction, you can also use an app that declares this feature on devices that offer more complex touch interfaces. - -- Note: Apps require the {@code android.hardware.touchscreen} - feature by default. If you want your app to be available to devices that - provide a fake touch interface, you must also explicitly declare that a - touchscreen is not required as follows: -
-<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
android.hardware.faketouch feature.
- - By default, your app requires this feature. As such, your app is not - available to devices that provide only an emulated touch interface ("fake - touch") by default. If you want to make your app available on devices - that provide a fake touch interface (or even on devices that provide only - a d-pad controller), you must explicitly declare that a touchscreen is - not required by declaring {@code android.hardware.touchscreen} with - {@code android:required="false"}. You should add this declaration if your - app uses—but does not require—a real touchscreen interface. -
-If your app in fact requires a touch interface (to perform more advanced - touch gestures such as fling), then you don't need to declare any touch - interface features because they're required by default. However, it's - best if you explicitly declare all features that your app uses. + touch gestures such as fling), then you must explicitly declare this feature + or any advanced touchscreen features.
diff --git a/tools/aapt/Command.cpp b/tools/aapt/Command.cpp
index 9976d00fa8721..59da467a1cc3a 100644
--- a/tools/aapt/Command.cpp
+++ b/tools/aapt/Command.cpp
@@ -529,6 +529,16 @@ struct FeatureGroup {
int openGLESVersion;
};
+static bool hasFeature(const char* name, const FeatureGroup& grp,
+ const KeyedVector