Skip to content

Most visited

Recently visited

navigation

<uses-configuration>

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.

Note: Most apps should not use this manifest tag. You should always support input with a directional pad (d-pad) in order to assist sight-impaired users and support devices that provide d-pad input in addition to or instead of touch. For information about how to support d-pad input in your app, read Enabling Focus Navigation. If your app absolutely cannot function without a touchscreen, then instead use the <uses-feature> tag to declare the required touchscreen type, ranging from "android.hardware.faketouch" for basic touch-style events to more advanced touch types such as "android.hardware.touchscreen.multitouch.jazzhand" for distinct input from multiple fingers.

attributes:
android:reqFiveWayNav
Whether or not the application requires a five-way navigation control — "true" if it does, and "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 "true" and ignore the reqNavigation attribute. However, if it requires a particular type of directional control, it can ignore this attribute and set reqNavigation instead.

android:reqHardKeyboard
Whether or not the application requires a hardware keyboard — "true" if it does, and "false" if not.
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 reqHardKeyboard attribute to "true".

The value must be one of the following strings:

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

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
"undefined" The application doesn't require a touch screen. (The touch screen requirement is undefined.) This is the default value.
"notouch" The application doesn't require a touch screen.
"stylus" The application requires a touch screen that's operated with a stylus.
"finger" The application requires a touch screen that can be operated with a finger.

Note: If some type of touch input is required for your app, you should instead use the <uses-feature> tag to declare the required touchscreen type, beginning with "android.hardware.faketouch" for basic touch-style events.

introduced in:
API Level 3
see also:
  • ConfigurationInfo
  • This site uses cookies to store your preferences for site-specific language and display options.

    Hooray!

    This class requires API level or higher

    This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

    For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

    Take a one-minute survey?
    Help us improve Android tools and documentation.