- 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 the 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 doesn't work.
Note: Most apps don't use this manifest tag. Always support input with a directional pad (D-pad) 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 Handle controller actions. If your app absolutely can't 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 the application requires a five-way navigation control. It's
"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 can be a directional pad (D-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 thereqNavigation
attribute. However, if it requires a particular type of directional control, it can ignore this attribute and setreqNavigation
instead. android:reqHardKeyboard
- Whether the application requires a hardware keyboard. It's
"true"
if it does, and"false"
if not. android:reqKeyboardType
- The type of keyboard the application requires, if any.
This attribute doesn't 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 doesn't require a keyboard. A keyboard requirement isn't defined. This is the default value. " nokeys
"The application doesn't 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
through9
, 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 doesn't require any type of navigation control. The navigation requirement isn't defined. This is the default value. " nonav
"The application doesn't require a navigation control. " dpad
"The application requires a D-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 setting this one. android:reqTouchScreen
- The type of touch screen the application requires, if any.
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 is operated with a stylus. " finger
"The application requires a touch screen that is operated with a finger. Note: If some type of touch input is required for your app, 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:
-
configChanges
attribute of the<activity>
elementConfigurationInfo
CARVIEW |
Select Language
HTTP/2 302
content-type: text/html; charset=utf-8
location: https://developer.android.com/oauth2authorize?return_url=https%3A%2F%2Fdeveloper.android.com%2Fguide%2Ftopics%2Fmanifest%2Fuses-configuration-element&prompt=none&auto_signin=True&scopes=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdeveloperprofiles+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdeveloperprofiles.award
x-robots-tag: noindex
set-cookie: signin_details="Check Login State: Current Auto Sign in Status :Skip AutoSignin False: Skip Signin False: Auto signin the user - Oauth Sign in: Called Signin(): SignIn Redirect"; Expires=Thu, 17 Jul 2025 14:49:57 GMT; Max-Age=300; Secure; Path=/
set-cookie: signin=autosignin; Expires=Thu, 17 Jul 2025 14:49:57 GMT; Max-Age=300; Secure; Path=/
set-cookie: signin_details="Check Login State: Current Auto Sign in Status :Skip AutoSignin False: Skip Signin False: Auto signin the user - Oauth Sign in: Called Signin(): SignIn RedirectSetting SignInCookie - AutoSignin: "; Expires=Thu, 17 Jul 2025 14:49:57 GMT; Max-Age=300; Secure; Path=/
set-cookie: session=; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Max-Age=0; Secure; HttpOnly; Path=/; SameSite=None
vary: Cookie
vary: Accept-Encoding
content-security-policy: base-uri 'self'; object-src 'none'; script-src 'strict-dynamic' 'unsafe-inline' https: http: 'nonce-Lfno3+2mDZlL2vZpfU6GWYNZWLS41R' 'unsafe-eval'; frame-ancestors 'self' https://developers.google.com/_d/analytics-iframe; report-uri https://csp.withgoogle.com/csp/devsite/v2
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-xss-protection: 0
x-content-type-options: nosniff
cache-control: no-cache, must-revalidate
expires: 0
pragma: no-cache
content-encoding: gzip
x-cloud-trace-context: 8ab2764c0e9546ca2f58c22e2c0cebfc
date: Thu, 17 Jul 2025 14:44:57 GMT
server: Google Frontend
content-length: 323
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
HTTP/2 302
content-type: text/html; charset=utf-8
location: https://accounts.google.com/o/oauth2/v2/auth?client_id=721724668570-nbkv1cfusk7kk4eni4pjvepaus73b13t.apps.googleusercontent.com&redirect_uri=https%3A%2F%2Fdeveloper.android.com%2Foauth2callback&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdeveloperprofiles+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdeveloperprofiles.award+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fgoogledevelopers&access_type=online&response_type=code&state=%7B%22csrf_token%22%3A+%2255568dd959fd55f51f9d80283b933fdb33e9c20184efa8d88cb751326ba1636c%22%2C+%22return_url%22%3A+%22https%3A%2F%2Fdeveloper.android.com%2Fguide%2Ftopics%2Fmanifest%2Fuses-configuration-element%22%7D&prompt=none&auto_signin=True
set-cookie: signin_details="Check Login State: Current Auto Sign in Status :Skip AutoSignin False: Skip Signin False: Auto signin the user - Oauth Sign in: Called Signin(): SignIn RedirectSetting SignInCookie - AutoSignin: Start_Oauth(): Start Oauth Prompt - none: "; Expires=Thu, 17 Jul 2025 14:49:57 GMT; Max-Age=300; Secure; Path=/
set-cookie: session=.eJylVF2PokgU_SsbX3cfoBBXJtkHsZsPGzCNWkC9dKgqFbAK2RZBmMx_34u2PWbTDztZEpKC3Dp17jnn1vfRW7V9l2m5LevRt_r9vP1jtD8e92L7dkzPdYbe2Ol991YfD9ty9G2k6_pkyrmhGzuu6ztd3Rl8qqCpRg1N23GqaVuDIUWdjre7dMqnU0b_1FUNTWiqTrQJG_0bfSeO7dv_Rv32ffQbBXr72Qrnr6-z2zP3LWRkPA6PvgxOaYTP3JoqcT87J-hSkUhXhNuu14qlcnvfYYTzDcIdl7gL5aXh-mot5tIUDtq8uO3ividG4iCeAzfo3Qu8SlAk42DNWi_S81RLLgkiKkMnLUUnBeqrwDH_Bsw2iXEf9EHurwPFk1bLHP9MkNEQdBE8DgSTQUPLUNDyFfgZNXALPs_UApFoC8EX4ZP9JCKmCY3boZ3IAHGnGnN1f1kh8eqrWZHqK9-Mg4JqphDW3pyBHKkTKnDexOsMjWvs89wkNivW6QVFSgP8lHRuAHfcpZEuaae3TBoyjS7CtTOFO2a_zKcNBwRP8oYifiKR1aaxf-XroauODbExItGlYTbumLNoiBQnEvv7X-BwIDER1DZaEi8-OUBNxpHVkbl55E7Ysv7YeIDEO72kyCipjTNmi94bdFzdfPc03ANGRSVpPInrJBInd8AFX34JB937DQV4eRq0ZeVyU8wuHfyrmMQFt0A7KTfF_PITFz3U53pGZdhRyM8H9q3fp0WRRJdTIq2rd3PIHkHiHKOsouVqsz62L9d8CCMjCDK8CJfFLLvyijXwiqx878GfJBq8h7qHfN3P8-7zkBsI3usacrbgtvEOmuw4aAXfxYNXHxzdL_267ZuADlUHnjUpwneMw3_FAO0QRbWAPS9DdtIoEPe-XqKffdFbvrqvszfoLAqyMgAzHLCW956uWVbv3vAHb-5afOm7MnCiUpyJ_H1TmOG1lmqLaistJY2MwR-RQB5YNfiBd8yuC0JWi2KmXjnEGoGZFpBd3InniW-WZsakVTM9NMQ89-fIKhKEe6YayjY2B842RTrcU_qwDkCXntnGmQ2aOqIFbN-0A5ivCPTGPbctZfh3Kk95ogUdER-cc3fizl01WG_Q0g4Py_VGJ_JVDaJE9aNEJ0_71i_2fVIceh-RQ1L4PVmLwocwL59CQeTzGGrGCXK1YP3c-wXJk_UzgqrCzdu9W8I95OCOikHTNl_ms_zB64fZdc9JpB9gfmHWbl4TDVfE3gy5acHn3kMqzISQJIY78Tqrfg1-guaihBxl3BYNzVXAw_VwD7olgt7JcCfUzFnBOjyDZoNe3pAx8LlPI35Or5kMN6zEQjhYTfLxX6MfP_4BPhBWlg.aHkMaQ.wpJMiLcbwvb8kzwQPVgfyLf32sk; Expires=Sun, 17 Aug 2025 14:44:57 GMT; Secure; HttpOnly; Path=/; SameSite=None
vary: Cookie
vary: Accept-Encoding
content-security-policy: base-uri 'self'; object-src 'none'; script-src 'strict-dynamic' 'unsafe-inline' https: http: 'nonce-KvJvB9E/rAMu2GoQYSRlnyVGX+t5W7' 'unsafe-eval'; frame-ancestors 'self' https://developers.google.com/_d/analytics-iframe; report-uri https://csp.withgoogle.com/csp/devsite/v2
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-xss-protection: 0
x-content-type-options: nosniff
cache-control: no-cache, must-revalidate
expires: 0
pragma: no-cache
content-encoding: gzip
x-cloud-trace-context: 750f70299535ded12f58c22e2c0ceb2d
date: Thu, 17 Jul 2025 14:44:57 GMT
server: Google Frontend
content-length: 561
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
HTTP/2 302
content-type: text/html; charset=UTF-8
set-cookie: __Host-GAPS=1:o2UBQ8Wey9rQZrFUq4v9qAd3iVpx_w:bOXWxRHv-1bF1qSS;Path=/;Expires=Sat, 17-Jul-2027 14:44:58 GMT;Secure;HttpOnly;Priority=HIGH
cache-control: no-cache, no-store, max-age=0, must-revalidate
pragma: no-cache
expires: Mon, 01 Jan 1990 00:00:00 GMT
date: Thu, 17 Jul 2025 14:44:58 GMT
location: https://developer.android.com/oauth2callback?state=%7B%22csrf_token%22%3A+%2255568dd959fd55f51f9d80283b933fdb33e9c20184efa8d88cb751326ba1636c%22%2C+%22return_url%22%3A+%22https%3A%2F%2Fdeveloper.android.com%2Fguide%2Ftopics%2Fmanifest%2Fuses-configuration-element%22%7D&error_subtype=access_denied&error=interaction_required
origin-trial: Ajo6ZZxoPufZZ6x0UgjawhB/adBJ+tLG7aX1MO8kWVCTHdOVSlY4OjhBhzivzulNh6ikNKRnwxwK18EvUu6aOgcAAABteyJvcmlnaW4iOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb206NDQzIiwiZmVhdHVyZSI6IldlYlZpZXdYUmVxdWVzdGVkV2l0aERlcHJlY2F0aW9uIiwiZXhwaXJ5IjoxNzU4MDY3MTk5fQ==
strict-transport-security: max-age=31536000; includeSubDomains
content-security-policy: require-trusted-types-for 'script';report-uri /cspreport
content-security-policy: script-src 'report-sample' 'nonce-_obwPxcRzvkYuS-X9cijfA' 'unsafe-inline' 'unsafe-eval';object-src 'none';base-uri 'self';report-uri /cspreport
report-to: {"group":"coop_gse_qebhlk","max_age":2592000,"endpoints":[{"url":"https://csp.withgoogle.com/csp/report-to/gse_qebhlk"}]}
cross-origin-opener-policy-report-only: same-origin; report-to="coop_gse_qebhlk"
content-encoding: gzip
x-content-type-options: nosniff
x-xss-protection: 1; mode=block
content-length: 391
server: GSE
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
HTTP/2 302
content-type: text/html; charset=utf-8
location: https://developer.android.com/guide/topics/manifest/uses-configuration-element
set-cookie: signin_details="Check Login State: Current Auto Sign in Status :Skip AutoSignin False: Skip Signin False: Auto signin the user - Oauth Sign in: Called Signin(): SignIn RedirectSetting SignInCookie - AutoSignin: Start_Oauth(): Start Oauth Prompt - none: Called Oauth2Callback(): Oauth2Callback callback view: Oauth2Callback No User creds: Oauth2Callback error:no_credentials:bad_request:Authorization failed: interaction_required: Oauth2Callback AS_state autosignin: "; Expires=Thu, 17 Jul 2025 14:49:58 GMT; Max-Age=300; Secure; Path=/
set-cookie: signin_details=; Expires=Thu, 01 Jan 1970 00:00:00 GMT; Max-Age=0; Path=/
set-cookie: session=eyJfcGVybWFuZW50Ijp0cnVlfQ.aHkMag.xpkgrClsWb5His9M1V2DiB57ypw; Expires=Sun, 17 Aug 2025 14:44:58 GMT; Secure; HttpOnly; Path=/; SameSite=None
vary: Cookie
vary: Accept-Encoding
content-security-policy: base-uri 'self'; object-src 'none'; script-src 'strict-dynamic' 'unsafe-inline' https: http: 'nonce-KS1d0ldOopIbiIjGAigiczak6NbgPT' 'unsafe-eval'; frame-ancestors 'self' https://developers.google.com/_d/analytics-iframe; report-uri https://csp.withgoogle.com/csp/devsite/v2
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-xss-protection: 0
x-content-type-options: nosniff
cache-control: no-cache, must-revalidate
expires: 0
pragma: no-cache
content-encoding: gzip
x-cloud-trace-context: 28865a352f5ed0762f58c22e2c0ceb46
date: Thu, 17 Jul 2025 14:44:58 GMT
server: Google Frontend
content-length: 211
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
HTTP/2 200
last-modified: Mon, 10 Feb 2025 23:04:16 GMT
content-type: text/html; charset=utf-8
vary: Cookie
vary: Accept-Encoding
set-cookie: session=eyJfcGVybWFuZW50Ijp0cnVlfQ.aHkMaw.W9QB7cCET0lDUfp_Iy9F3blmP5I; Expires=Sun, 17 Aug 2025 14:44:59 GMT; Secure; HttpOnly; Path=/; SameSite=None
content-security-policy: base-uri 'self'; object-src 'none'; script-src 'strict-dynamic' 'unsafe-inline' https: http: 'nonce-rCwGPrEpjFgDNmq26CnXwBAarPrHf0' 'unsafe-eval'; frame-ancestors 'self' https://developers.google.com/_d/analytics-iframe; report-uri https://csp.withgoogle.com/csp/devsite/v2
strict-transport-security: max-age=63072000; includeSubdomains; preload
x-xss-protection: 0
x-content-type-options: nosniff
cache-control: no-cache, must-revalidate
expires: 0
pragma: no-cache
content-encoding: gzip
x-cloud-trace-context: b3159e01582981ce2f58c22e2c0ce9ee
date: Thu, 17 Jul 2025 14:44:59 GMT
server: Google Frontend
content-length: 32095
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
<uses-configuration> | App architecture | Android Developers
Skip to main content
<uses-configuration>
<uses-configuration>
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-02-10 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-02-10 UTC."],[],[]]