page.title=<uses-configuration> @jd:body
syntax:
<uses-configuration android:reqFiveWayNav=["true" | "false"] 
                    android:reqHardKeyboard=["true" | "false"]
                    android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" |  
                                             "twelvekey"]
                    android:reqNavigation=["undefined" | "nonav" | "dpad" | 
                                           "trackball" | "wheel"]
                    android:reqTouchScreen=["undefined" | "notouch" | "stylus" | 
                                            "finger"] />
contained in:
<manifest>
description:
Indicates what hardware and software features the application requires. For example, an application might specify that it requires a physical keyboard or a particular navigation device, like a trackball. The specification is used to avoid installing the application on devices where it will not work.

If an application can work with different device configurations, it should include separate {@code <uses-configuration>} declarations for each one. Each declaration must be complete. For example, if an application requires a five-way navigation control, a touch screen that can be operated with a finger, and either a standard QWERTY keyboard or a numeric 12-key keypad like those found on most phones, it would specify these requirements with two {@code <uses-configuration>} elements as follows:

<uses-configuration android:reqFiveWayNav="true" android:reqTouchScreen="finger"
                    android:reqKeyboardType="qwerty" />
<uses-configuration android:reqFiveWayNav="true" android:reqTouchScreen="finger"
                    android:reqKeyboardType="twelvekey" />
attributes:
{@code android:reqFiveWayNav}
Whether or not the application requires a five-way navigation control — "{@code true}" if it does, and "{@code false}" if not. A five-way control is one that can move the selection up, down, right, or left, and also provides a way of invoking the current selection. It could be a D-pad (directional pad), trackball, or other device.

If an application requires a directional control, but not a control of a particular type, it can set this attribute to "{@code true}" and ignore the reqNavigation attribute. However, if it requires a particular type of directional control, it can ignore this attribute and set {@code reqNavigation} instead.

{@code android:reqHardKeyboard}
Whether or not the application requires a hardware keyboard — "{@code true}" if it does, and "{@code false}" if not.
{@code android:reqKeyboardType}
The type of keyboard the application requires, if any at all. This attribute does not distinguish between hardware and software keyboards. If a hardware keyboard of a certain type is required, specify the type here and also set the {@code reqHardKeyboard} attribute to "{@code true}".

The value must be one of the following strings:

Value Description
"{@code undefined}" The application does not require a keyboard. (A keyboard requirement is not defined.) This is the default value.
"{@code nokeys}" The application does not require a keyboard.
"{@code qwerty}" The application requires a standard QWERTY keyboard.
"{@code twelvekey}" The application requires a twelve-key keypad, like those on most phones — with keys for the digits from {@code 0} through {@code 9} plus star ({@code *}) and pound ({@code #}) keys.
{@code android:reqNavigation}
The navigation device required by the application, if any. The value must be one of the following strings:
Value Description
"{@code undefined}" The application does not require any type of navigation control. (The navigation requirement is not defined.) This is the default value.
"{@code nonav}" The application does not require a navigation control.
"{@code dpad}" The application requires a D-pad (directional pad) for navigation.
"{@code trackball}" The application requires a trackball for navigation.
"{@code wheel}" The application requires a navigation wheel.

If an application requires a navigational control, but the exact type of control doesn't matter, it can set the reqFiveWayNav attribute to "{@code true}" rather than set this one.

{@code android:reqTouchScreen}
The type of touch screen the application requires, if any at all. The value must be one of the following strings:
Value Description
"{@code undefined}" The application doesn't require a touch screen. (The touch screen requirement is undefined.) This is the default value.
"{@code notouch}" The application doesn't require a touch screen.
"{@code stylus}" The application requires a touch screen that's operated with a stylus.
"{@code finger}" The application requires a touch screen that can be operated with a finger.
introduced in:
API Level 3
see also:
  • {@link android.content.pm.ConfigurationInfo}